azure redis 配置建议
- production环境用standard或premium 级别的redis
- redis客户端需要配置连接超时时间,至少10到15秒
- 应用需要处理redis断连登异常情况
- 配置maxmemory-reserved为总cache size的10%左右,保证系统的及时响应
- redis的value size最好不要太大,100KB已经算是很大了
- redis所在的region最好和应用在同一个region
- 复用redis连接
- 避免复杂的命令
内存管理
LRU是redis最主要的淘汰算法,在redis4.0,引入了新的LFU算法。
淘汰策略:
- noeviction: 不进行淘汰,当内存满的时候,直接返回error。
- allkeys-lru: 根据LRU算法淘汰keys
- volatile-lru: 根据LRU算法淘汰keys,但是只限于有expire配置的keys
- allkeys-random: 随机淘汰keys,释放内存
- volatile-random: 随机淘汰keys,但是只限于有expire配置的keys
- volatile-ttl: 淘汰有expire配置的keys,会先淘汰TTL较小的keys
Tips:
- volatile-lru, volatile-random, volatile-ttl 和noeviction类似,当没有可淘汰的keys时,直接返回error。
- 当redis中既有临时的key,也有永久key,volatile-lru 和volatile-random是最常用的策略。
- 给key设置expire,相应的会消耗内存。所以allkeys-lru的内存利用率会更高。
- redis并没有用一个精确的LRU算法,因为精确的LRU算法会更加消耗内存,也更复杂。
redis过期键的三种清除策略:
- 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
- 主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key
- 当前已用内存超过maxmemory限定时,触发主动清理策略
performance test
tool: redis-benchmark.exe