redis内存优化策略

1、背景

redis作为缓存系统,内存可存储的数据必然比物理硬盘要少得多,所以我们不能无止境的往内存中存储大量的数据,除此之外还需要定期对数据做清理工作。以保证内存系统的正常运行。

2、算法介绍

2.1 LRU算法

LRU是Least Recently Used的缩写,顾名思义就是最近最少使用,是比较常用的页面置换算法,选择最久没有使用的页面给予淘汰。该算法赋予每个页面一个访问字段,用来记录页面最新一次被访问的时间t,当必须淘汰一个页面时,选择现有页面时间t距离最久的,即最近最少使用的页面给予淘汰。是根据时间维度来判断的。

2.2 LFU算法

LFU(Least Frequently Used (LFU) page-replacement algorithm),即最不常使用页置换算法,要求在页置换时引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用的次数较多,但以后将不再使用了,但是由于拥有较大的引用次数,所以每次淘汰的页面都不会有它,因此每次淘汰后都将计数值右移一位,如此一来经过几轮淘汰后,计数大且近期不用的页也能够被淘汰。是根据使用次数作为维度来判断的。

2.3 随机算法

随机去挑选淘汰页面。

2.4 TTL

将超时时间最短的数据,提前删除。

3、redis内存优化选择

可以修改redis.conf文件中的maxmemory-policy的值来选择采用哪种算法进行优化
redis内存优化策略_第1张图片
①volatile-lru:在设定超时时间的数据中采用LRU算法
②allkeys-lru:所有的数据采用LRU算法删除
③volatile-lfu:设定了超时时间的数据采用LFU算法删除
④allkeys-lfu:所有数据采用LFU算法删除
⑤volatile-random:设定了超时时间的数据采用随机算法
⑥allkeys-random:所有数据的随机算法
⑦volatile-ttl:设定了超时时间之后采用TTL算法
⑧noeviction:不做任何操作,只是返回报错信息

你可能感兴趣的:(redis,内存管理,内存优化,java)