如何减少 Redis 数据库的默认数量?

5

Redis默认的数据库数量是16个。我知道我们可以使用redis.conf更改此设置,我在redis-cli上使用info-server命令检查了其位置。但是,当我试图将其减少到2时,它没有生效,CONFIG GET databases仍然给出16个。那么,如何减少Redis中默认数据库的数量?


基本上,我想要的是因为我们不想在Redis中使用多个数据库,而且我们有大量的数据。所以,假设系统中有128 GB RAM,我们的主数据库应该有大部分可用,并且不会分布在16个部分中。 - Prashant
1
内存由所有数据库共享。 - for_stack
1个回答

7

更改数据库数量的方法:

  1. 编辑redis.conf
  2. databases值更改为14(如果您想减少2个)
  3. 重新启动Redis服务,这取决于您的操作系统和Redis安装方式。对于我的Ubuntu系统,我需要在命令行中运行 sudo systemctl restart redis

如果您没有执行第3步,配置更改将不会生效。

顺便说一下,据我所知,您并没有像您说的那样将数据库分成16个部分。如果您没有使用1到15号数据库,则它们不会占用RAM,您只会使用所需的RAM。

更新

首先,您无法将数据库数量减少到2非常奇怪。您是否已经在2-15号数据库上存储了一些数据?(请记住,第一个数据库是0)。您是否保存了更改后的redis.conf文件?您确定您正在使用正确的重启Redis服务的命令吗?

关于如何确认Redis保留未使用的数据库的内存,您可以从in-memory redis本身的特性和简单查看select命令的定义中得出结论:

https://redis.io/commands/select

Redis不同的可选择数据库是一种命名空间:所有数据库都以相同的RDB / AOF文件持久化。但是,不同的数据库可以拥有具有相同名称的键

因此,Redis使用一种类似于键命名空间的方式,将键名称添加到键的名称中,以区分属于不同数据库的键。由于Redis只会在保存数据时将数据放入内存,因此没有为空数据库预先保留内存。也许您有点混淆了其他数据库如何管理内存或硬盘当您创建数据库时。

无论如何,如果您担心内存泄漏,请查看这篇文章中的maxmemorymaxmemory-policy

http://oldblog.antirez.com/post/redis-as-LRU-cache.html

此外,如果您使用的是Redis v4.0.0+,您可能会对memory doctorlatency doctor命令感兴趣,但是您需要在Redis中有一些数据才能获得有用的信息。您还可以使用此Python控制台工具获取键使用内存统计信息:

https://github.com/gamenet/redis-memory-analyzer

其他有用的链接以了解Redis如何管理内存和运作:

https://redis.io/topics/faq

https://redis.io/topics/memory-optimization


我尝试重新启动redis-server,但是更改似乎没有生效。它仍然给我16个数据库。虽然我的意图是将数据库的总数设置为2,以便Redis不会将我的可用内存分成16部分。这是因为我只想使用两个数据库:一个用于配置,另一个用于数据。但是,如果Redis不在所有数据库中分配我的RAM,那么我认为没有必要进行此操作。我如何确认这一事实? - Prashant
我扩展了我的回答以回应你的评论。 - Averias
谢谢Averias。这很有帮助。 - Prashant
欢迎,@Prashant。如果你认为我的回答对你有帮助并解决了你的问题,请将其标记为“已接受”。如果不是这样,而你正在等待更好的答案,请不要忘记接受你最终找到的最佳答案。祝好。 - Averias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接