Redis入门到精通

Redis入门到精通,第1张

一.Redis的淘汰策略 1.为什么要淘汰

        Redis的数据读写基于内存,Redis虽然快,但是内存成本还是比较高的,而且基于内存Redis不适合存储太大量的数据。Redis可以使用电脑物理最大内存,当然我们通常会通过设置maxmemory参数限制Redis内存的使用, 为了让有限的内存空间存储更多的有效数据,我们需要设置淘汰策略,让Redis自动淘汰那些老旧的,或者使用频率很低的数据。

       Redis 确定删除某个键值对后,会删除这个数据并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。

        如果不设置太太策略的话,当Redis中的数据越来越多,如果达到堆限制,将导致Redis的内存不足异常而终止所以我们在使用Redis时一定要配置淘汰策略。 

        关于设置Key过期时间的方式方法前面文章有详细介绍,知道你们懒得找,把传送门也给你们附上        

Redis如何设置Key的过期时间

2.淘汰策略有哪些

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算法的区别:

        LRU是从满足算法条件的数据中选择空闲时间最长的

        LFU是从满足算法条件的数据中选择使用频率最低的

        两者功能没有太大差别,具体性能没有做过测试,我都是随便选一种用就可以啦,如果想继续深入研究的话欢迎交流

3.淘汰策略配置

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因为五一假期玩的太爽啦,酝酿了点也都已经发出来了,上周末调休加上最近手头的项目有点赶进度,所以这一期有点短。还望各位看官点个赞再走吧,给您劈个叉~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/883720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存