别再问我Redis内存满了该怎么办了
Posted Java编程精选
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了别再问我Redis内存满了该怎么办了相关的知识,希望对你有一定的参考价值。
Python实战社群
Java实战社群
长按识别下方二维码,按需求添加
扫码关注添加客服
进Python社群▲
扫码关注添加客服
进Java社群▲
作者丨黎杜
来源丨非科班的科班(LDCldc123095)
概述
Redis
的文章,我之前写过一篇关于「Redis的缓存的三大问题」,累计阅读也快800了,对于还只有3k左右的粉丝量,能够达到这个阅读量,已经是比较难了。
maxmemory
可以「设置Redis内存的大小」。
redis.conf
文件中,配置
maxmemory
的大小参数如下所示:
100mb
的大小哈,不要给误导了,这里我只是让大家认识这个参数,一般小的公司都是设置为
3G
左右的大小。
//获取maxmemory配置参数的大小
127.0.0.1:6379> config get maxmemory
//设置maxmemory参数为100mb
127.0.0.1:6379> config set maxmemory 100mb
淘汰策略
noeviction
,这6种淘汰策略如下:
-
noeviction
(「默认策略」):若是内存的大小达到阀值的时候,所有申请内存的指令都会报错。 -
allkeys-lru
:所有key都是使用「LRU算法」进行淘汰。 -
volatile-lru
:所有「设置了过期时间的key使用LRU算法」进行淘汰。 -
allkeys-random
:所有的key使用「随机淘汰」的方式进行淘汰。 -
volatile-random
:所有「设置了过期时间的key使用随机淘汰」的方式进行淘汰。 -
volatile-ttl
:所有设置了过期时间的key「根据过期时间进行淘汰,越早过期就越快被淘汰」。
allkeys-lru
。
allkeys-random
的淘汰策略。
redis.conf
配置文件中配置,具体配置如下所示:
// 获取maxmemory-policy配置
127.0.0.1:6379> config get maxmemory-policy
// 设置maxmemory-policy配置为allkeys-lru
127.0.0.1:6379> config set maxmemory-policy allkeys-lru
LRU算法
LRU(Least Recently Used)
即表示最近最少使用,也就是在最近的时间内最少被访问的key,算法根据数据的历史访问记录来进行淘汰数据。
16
的一个候选池的内存。
LFU算法
LFU(Least Frequently Used)
即表示最近频繁被使用,也就是最近的时间段内,频繁被访问的key,它以最近的时间段的被访问次数的频率作为一种判断标准。
volatile-lfu
策略和
allkeys-lfu
策略。
删除过期键策略
-
「定时删除」:创建一个定时器,定时的执行对key的删除操作。 -
「惰性删除」:每次只有再访问key的时候,才会检查key的过期时间,若是已经过期了就执行删除。 -
「定期删除」:每隔一段时间,就会检查删除掉过期的key。
RDB和AOF 的淘汰处理
RDB
和
AOF
,具体这两种详细的持久化介绍,可以参考这一篇文章[
]。
save
和
bgsave
命令执行创建RDB文件。
Master
不会把过期的key载入,而
Slave
会把过期的key载入。
REWRITEAOF
和
BGREWRITEAOF
,「这两个命令都不会把过期的key写入到AOF文件中,也能删除过期key」。
程序员专栏 扫码关注填加客服 长按识别下方二维码进群
近期精彩内容推荐:
在看点这里好文分享给更多人↓↓
以上是关于别再问我Redis内存满了该怎么办了的主要内容,如果未能解决你的问题,请参考以下文章