Redis驱逐政策澄清
我是Redis的新手,在网上找不到任何相关信息,所以请在这里询问。Redis驱逐政策澄清,redis,spring-data-redis,redis-cluster,Redis,Spring Data Redis,Redis Cluster,我是Redis的新手,在网上找不到任何相关信息,所以请在这里询问。 假设我有多个数据库Redis集群,并且我正在使用LRU/LFU逐出策略 我想知道Redis逐出策略是否基于数据库?我的意思是,假设我试图将一个新项目插入到DB 0中,并且我的内存不足,Redis是否会退出DB 0中的项目并完成插入?或者它会根据逐出策略逐出任何数据库中的项目 我希望逐出将在同一个虚拟数据库中。 如果逐出策略跨不同的数据库,如果达到数据库的大小限制,会发生什么情况?它是否会根据逐出策略逐出DB中的键,或者插入将失败
假设我有多个数据库Redis集群,并且我正在使用LRU/LFU逐出策略 我想知道Redis逐出策略是否基于数据库?我的意思是,假设我试图将一个新项目插入到DB 0中,并且我的内存不足,Redis是否会退出DB 0中的项目并完成插入?或者它会根据逐出策略逐出任何数据库中的项目 我希望逐出将在同一个虚拟数据库中。
如果逐出策略跨不同的数据库,如果达到数据库的大小限制,会发生什么情况?它是否会根据逐出策略逐出DB中的键,或者插入将失败?
谢谢。我做了一个简单的测试来查看它
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> config get maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379[1]> config set maxmemory 100mb
OK
127.0.0.1:6379[1]> config get maxmemory
1) "maxmemory"
2) "104857600"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "104857600"
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> config get maxmemory
1) "maxmemory"
2) "104857600"
127.0.0.1:6379[2]>
正如您在将maxmemory设置为数据库0
时所看到的,其他数据库也具有相同的maxmemory
值。它们都共享相同的资源(内存),当您在任何数据库中运行INFO memory
时,它们将打印相同的值(没有共享它-很大-但您可以测试)
我认为这不是特定于数据库的,它们实际上是分开的。并非只有一个数据库内存不足,而是所有数据库内存不足。正确-所有逻辑数据库共享所有配置设置(例如maxmemory、save…)-换句话说,配置是全局的