Windows下 redis 操练-配置内存、内存淘汰策略篇(3)
一、内存配置
Redis是基于内存的key-value数据库,因硬件设备内存大小有限,在使用Redis的时可以配置Redis使用的最大内存
配置文件设置:
搜索 maxmemory ,如果不设置最大内存或者设置最大内存为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存
使用命令设置:
redis内存分配值没有定数,主要考虑后期监控:内存使用情况、请求数、慢日志、以及命中率等指标,当redis 的内存使用达到60%时就要注意了,达到80%时就要考虑迁移或者扩容了
如果开启持久化,那么最多只能分配一半的内存
如果不开启持久化,那就把除了系统和其它服务之外的内存全部给他
二、配置redis内存淘汰策略
Redis配置的内存用完时,继续往里面添加数据就没内存使用
Redis定义了几种淘汰策略来处理:
1、noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)
2、allkeys-lru:从所有key中使用LRU算法进行淘汰
3、allkeys-random:从所有key中随机淘汰数据
4、volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰
5、volatile-random:从设置了过期时间的key中随机淘汰
6、volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰
当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误
使用命令配置:
LRU 是 Least Recently Used 的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量的满时候,优先淘汰最近很少使用的数据。
LRU 算法具体步骤:
- 新数据直接插入到列表头部
- 缓存数据被命中,将数据移动到列表头部
- 缓存已满的时候,移除列表尾部数据。