设置最大使用内存maxmemory
- 通过redis.conf设置maxmemory
- 通过redis-cli中设置:config set maxmemory 1mb,设置为1mb
- 32位最大3GB,64位maxmemory为0时表示无限制
- 通过CONFIG GET maxmemory查看
- 可通过设置最大使用内存来进行测试驱逐策略
LRU
- Less Recently Used 最近最少使用算法
Redis中的驱逐策略
- 配置项为:maxmemory-policy,通过CONFIG GET maxmemory-policy可查看
- 具体有以下几种驱逐策略
- noeviction
- 默认策略
- 不驱逐
- 当没有足够的内存给Redis使用时,执行写命令时会报一个异常:redis.exceptions.ResponseError,OOM command not allowed when used memory > ‘maxmemory’
- volatile-lru
- 对存在expire的key,执行lru淘汰策略(驱逐最近最少使用的数据)
- 如果没有存在expire的key,则在内存不够时执行写命令时也会报一个异常:redis.exceptions.ResponseError,OOM command not allowed when used memory > ‘maxmemory’,同noeviction policy
- allkeys-lru
- 针对所有key执行lru
- 没办法限制些算法针对某些key去删除
- 如果你的应用需要持久化一些数据,请不要使用allkeys-lru策略
- volatile-random
- 对存在expire的key,随机选择驱逐某个key
- allkeys-random
- 针对所有key,随机选择驱逐某个key
- volatile-ttl
- 对存在expire的key中,优先驱逐ttl值最小的
- noeviction