Redis在实际使用中,肯定会遇到内存占满的问题,那么该如何解决这个问题呢?
1、增加内存。
不推荐,因为即使加大内存,以后还是会有内存被占满的可能,不能根本解决问题。
2、使用Redis Cluster
关于Redis Cluster参考Redis 集群。
3、使用内存淘汰策略
Redis可以通过修改配置文件中的 maxmemory 配置项来指定最大可用内存大小(字节),如果内存中的数据超过了maxmemory怎么办呢?可以通过 maxmemory-policy 配置项指定淘汰策略,默认值是noeviction,即不淘汰键,若超过最大内存,则返回错误信息。Redis的淘汰策略有以下几种(其中,LRU是Least Recently Used的缩写,即最近最少使用;LFU是Least Frequently Used 的缩写,即最不经常使用):
volatile-lru |
仅对设置了过期时间的键采取LRU 淘汰策略 |
volatile-lfu |
仅对设置了过期时间的键采取LFU 淘汰策略 |
volatile-ttl |
仅淘汰设置了过期时间的键,淘汰生存时间TTL(Time To Live) 更小的键 |
volatile-random |
随机淘汰设置了过期时间的键 |
allkeys-lru |
对所有的键都采取LRU 淘汰 |
allkeys-lfu |
对所有的键都采取LFU 淘汰 |
allkeys-random |
对所有的键随机淘汰 |
noeviction |
不淘汰,若超过最大内存,返回错误信息 |