redis内存满了怎么解决
Redis内存满了怎么解决?
1、通过修改redis.conf 配置文件来调整maxmemory值大小
Redis长期使用或者不设置过期时间,导致内存爆满或不足,可以到Redis的配置文件redis.conf 文件中,配置参数 maxmemory 的大小。一般的项目maxmemory设置为3~5G就够用了。
2、通过命令修改,Redis支持运行时通过命令动态修改内存大小。
命令参考:
设置Redis最大占用内存大小为100M
127.0.0.1:6379> config set maxmemory 100mb
获取设置的Redis能使用的最大内存大小
127.0.0.1:6379> config get maxmemory
3、修改Redis淘汰策略
Redis提供了6种的淘汰策略:
noeviction(默认策略): 若是内存的大小达到阀值的时候,所有申请内存的指令都会报错;
allkeys-lru: 所有key都是使用LRU算法进行淘汰;
volatile-lru: 所有设置了过期时间的key使用LRU算法进行淘汰;
allkeys-random: 所有的key使用随机淘汰的方式进行淘汰;
volatile-random: 所有设置了过期时间的key使用随机淘汰的方式进行淘汰;
volatile-ttl: 所有设置了过期时间的key根据过期时间进行淘汰,越早过期就越快被淘汰。
部分策略使用场景:
若在Redis中的数据有一部分是热点数据,而剩下的数据是冷门数据,或者我们不太清楚我们应用的缓存访问分布状况,这时可以使用allkeys-lru。
若所有的数据访问的频率大概一样,就可以使用allkeys-random的淘汰策略。
Redis淘汰策略配置方法
3.1 Redis的淘汰策略也可以在redis.conf 配置文件中配置
maxmemory-policy volatile-lru
3.2 Redis淘汰策略也可以通过命令的方式进行配置:
命令参考:
获取maxmemory-policy配置
127.0.0.1:6379> config get maxmemory-policy
设置maxmemory-policy配置为allkeys-lru
127.0.0.1:6379> config set maxmemory-policy allkeys-lru