缓存数据满了怎么办?
- 首先要明确, 用作缓存的数据都是设置了过期时间的, 没有过期时间那不叫缓存, 那叫持久化.
如果遇到缓存满了又该怎么办呢?
- 加内存
- 这是最简单粗暴的办法, 不过成本相对较高
- 内存淘汰策略
- redis的内存淘汰策略是指在Redis的用于缓存的内存不足时, 怎么处理需要新写入且需要申请额外空间的数据.
- maxmemory参数: 设置内存的最大使用量(配置)
- maxmemory-policy参数: 对应的内存淘汰规则(配置), 当内存不够用时, 会设置的内存淘汰规则
规则 | 规则说明 |
---|---|
noeviction | 当内存不足以容纳新写入的数据时, 新写入操作会报错 |
allkeys-lru | 当内存不足以容纳新写入数据时, 在键空间中, 移除最近最少使用的key |
allkeys-random | 当内存不足以容纳新写入数据时, 在键空间中, 随机移除某个key |
volatile-lru | 当内存不足以容纳新写入数据时, 在设置了过期时间的键空间中, 移除最近最少使用的key |
volatile-lru | 当内存不足以容纳新写入数据时, 在设置了过期时间的键空间中, 移除最近最少使用的key |
volatile-ttl | 当内存不足以容纳新写入数据时, 在设置了过期时间的键空间中, 有更早过期时间的key优先移除 |
- 集群
- slaveof 从机替换主机, 主机下来后做相应的操作
- 配置多主多从