Redis中缓存策略
Contents
Redis中缓存策略
- volatile-lru:从数据集中,将设置了过期时间的key,按最近最少使用的数据淘汰。
- volatile-ttl:从数据集中,只将设置了过期时间的key,按即将过期时间的最短的优先淘汰。即ttl key,结果最小的优先淘汰。
- volatile-random:从数据集中,只将设置了过期时间的数据按随机淘汰
- allkeys-lru:从数据集中(不管有没有设置过期时间)按最近最少使用的数据淘汰
- allkeys-random:从数据集中(不管有没有设置过期时间)随机淘汰数据.
- no-enviction:禁用淘汰策略
默认的缓存策略为:
# The default is:
#
# maxmemory-policy noeviction
示例
127.0.0.1:6379> keys *
1) "heloo719999sfsadf"
2) "heloo71"
3) "heloo712"
4) "heloo89"
5) "heloo713"
6) "heloo717"
7) "heloo732"
8) "heloo731"
9) "heloo715"
10) "heloo719999"
127.0.0.1:6379> CONFIG SET maxmemory-policy noeviction
OK
noeviction
127.0.0.1:6379> set he wolsdkfasldkf
(error) OOM command not allowed when used memory > 'maxmemory'.
allkeys-random
127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-random
OK
127.0.0.1:6379> set he123123 wolsdkfasldksdf21342134
OK
可以看到,这种策略,一般是不会出现OOM的。因为它会不断的淘汰原有的key,释放内存给新的key.
allkeys-lru
127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-lru
OK
127.0.0.1:6379> set he123123123 wolsdkfasldksdf21342134123
OK
可以看到,这种策略,一般是不会出现OOM的。因为它会不断的淘汰原有的key,释放内存给新的key.只是这个是以最近最少使用为原则.
volatile-random
127.0.0.1:6379> CONFIG SET maxmemory-policy volatile-random
OK
127.0.0.1:6379> set sdfhe123123123123 wolsdkfasldksdf21342134sdfasdfasdfsafasfasfsadfsdfsdfsdasdfsdfsdfsafsdf
(error) OOM command not allowed when used memory > 'maxmemory'.
127.0.0.1:6379> EXPIRE sdfhe123123123123 360
(integer) 1
127.0.0.1:6379> set h1 wl2
OK
其他的两个volatile-xxx
的,也同理,只是一个是最近最少使用,一个是按ttl
最短来淘汰.