Redis注意事项

1、Redis3.0没有虚拟内存概念,已从2.4就移除;

2、redis挂掉并重启时,如果有主从备份的,主机挂掉重启时先关掉主从备份,不然从机的数据会被冲洗掉;数据恢复时如果有aof和rdb的,则从aof恢复;若只有rdb的,只从rdb恢复;

3、保存快照需要注意频率,好像没有指明什么方式save,是save还是bgsave;

4、redis指明使用多少内存比较好?

5、删除策略:

(1)定期删除+惰性删除

定期删除,redis默认每100ms检查是否有过期的key,有过期的key则删除。需要说明的是redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每100ms,全部key进行检查,redis岂不是卡死了)。因此,如果只采用定期策略,会导致很多key到时间没有删除,也就是使用定期删除会导致删除不完全,于是惰性删除就登场了。就是说你在获取key的时候,redis会检查一下,这个key如果设置过期时间那么是否过期了?如果过期,此时就删除。

(2)内存淘汰机制

在redis.conf中有一行配置,用于配内存淘汰策略的

maxmemory-policy volatile-lru

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。应该没人用吧。
2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。推荐使用,目前项目在用这种。
3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。应该也没人用吧,你不删最少使用Key,去随机删。
4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。这种情况一般是把redis既当缓存,又做持久化存储的时候才用。不推荐
5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。依然不推荐
6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。不推荐
ps:如果没有设置 expire 的 key,不满足先决条件(prerequisites);那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为,和 noeviction(不删除) 基本上一致。

猜你喜欢

转载自www.cnblogs.com/linguoguo/p/5430476.html
今日推荐