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

Pra*_*ant 5 redis

Redis 中的默认数据库数量是 16。我知道我们可以使用 redis.conf 更改此设置,我使用 redis-cli 上的 info-server 命令检查了其位置。但是,当我尝试将其减少到 2 时,它没有接受更改,并且 CONFIG GET 数据库仍然给我 16。那么,减少 Redis 中默认数据库数量的方法是什么?

Ave*_*ias 7

要更改数据库数量:

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

所以可能你忘记了第3步,如果不重新启动Redis服务,配置更改将不可用

顺便说一句,据我所知,您不会像您所说的那样将数据库分为 16 个部分,如果您不使用 1 到 15 个数据库,它们将不会使用 RAM,您只需消耗所需的 RAM

更新

首先,很奇怪你不能将数据库数量减少到2个,你是否已经有2-15个数据库的数据了?(记住第一个数据库是0)更改databasepram = 2后您是否保存了redis.conf文件?您确定使用正确的命令来重新启动 Redis 服务吗?

关于如何确认redis为未使用的数据库保留RAM,可以从in-memoryredis的本质推断出来,简单看一下select命令的定义:

https://redis.io/commands/select

Redis 不同的可选数据库是命名空间的一种形式:所有数据库无论如何都保存在同一个 RDB / AOF 文件中。然而,不同的数据库可以具有相同名称的键,

所以基本上,Redis 使用一种键名称空间,这些名称空间被添加到属于不同数据库的不同键的键名称中,并且由于 Redis 在保存数据时只是将数据放入内存中,因此之前没有为空数据库保留内存。当您创建数据库时,可能您对其他数据库管理内存或硬盘有点困惑

无论如何,如果您担心内存泄漏,请看一下maxmemory这篇maxmemory-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/内存优化