2.淘汰策略有哪些Redis的数据读写基于内存,Redis虽然快,但是内存成本还是比较高的,而且基于内存Redis不适合存储太大量的数据。Redis可以使用电脑物理最大内存,当然我们通常会通过设置maxmemory参数限制Redis内存的使用, 为了让有限的内存空间存储更多的有效数据,我们需要设置淘汰策略,让Redis自动淘汰那些老旧的,或者使用频率很低的数据。
Redis 确定删除某个键值对后,会删除这个数据并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。
如果不设置太太策略的话,当Redis中的数据越来越多,如果达到堆限制,将导致Redis的内存不足异常而终止所以我们在使用Redis时一定要配置淘汰策略。
关于设置Key过期时间的方式方法前面文章有详细介绍,知道你们懒得找,把传送门也给你们附上
Redis如何设置Key的过期时间
volatile-lru:使用LRU算法从已设置过期时间的数据集中淘汰最近最少使用的数据(expires)
allkeys-lru:根据LRU算法从所有数据集中淘汰最近最少使用的数据(dict)
volatile-lfu:从已设置过期时间的数据集挑选使用频率最低的数据淘汰(expires)
allkeys-lfu:从数据集中挑选使用频率最低的数据淘汰(dict)
volatile-random:从已设置过期时间的数据集中随机淘汰数据(expires)
allkeys-random:所有数据集中随机淘汰数据(dict)
volatile-ttl:从已设置过期时间的数据集中淘汰最近过期的数据(expires)
noeviction:不会过期,当内存超过设置的最大内存时写 *** 作报错,读 *** 作正常(默认配置)
分类的方法很多,我是按照算法分类的,即分为LRU、LFU、TTL和RANDOM四种
LRU和LFU算法的区别:
3.淘汰策略配置LRU是从满足算法条件的数据中选择空闲时间最长的
LFU是从满足算法条件的数据中选择使用频率最低的
两者功能没有太大差别,具体性能没有做过测试,我都是随便选一种用就可以啦,如果想继续深入研究的话欢迎交流
3.1.最大内存配置
方式一:修改配置文件中的 maxmemory,放开注释, 根据业务需求设置大小
maxmemory <100mb #设置最大内存大小为100MB
方式二:命令行设置
127.0.0.1:6379> config get maxmemory #命令行查看当前设置最大内存
127.0.0.1:6379> config set maxmemory 100mb #设置Redis最大占用内存大小为100MB
3.2.淘汰策略配置
方式一:修改配置文件中的 maxmemory-policy ,放开注释,根据业务需求修改即可
maxmemory-policy noeviction #noeviction 为默认的策略,根据业务需求修改即可
方式二:命令行设置
127.0.0.1:6379> config get maxmemory-policy #命令行查看当前淘汰策略
127.0.0.1:6379> config set maxmemory-policy noeviction #noeviction 为默认的策略
至此,Redis的淘汰策略就到这里吧,下面几期会跟大家聊聊我们的代码中该如何 *** 作Redis。看情况可能还会跟大家聊一些关于Redis的主流框架和集群,因为我发现越深入浏览量越低,所以在考虑要聊点其他的还是再稍微深入一些。ps因为五一假期玩的太爽啦,酝酿了点也都已经发出来了,上周末调休加上最近手头的项目有点赶进度,所以这一期有点短。还望各位看官点个赞再走吧,给您劈个叉~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)