官方配置连接:
1、maxmemory_policy主要过期策略6种
volatile-lru(least recently used):从设置了过期时间的键中挑选最近最少使用的数据淘汰; (官方默认)
volatile-ttl:从设置了过期时间的键中挑选即将过期的数据淘汰 ;
volatile-random:从设置了过期时间的键中随机挑选数据淘汰;
allkeys-random:所有的键中,随机选择键进行删除;
allkeys-lru:从所有的键中挑选最近最少使用的数据淘汰;
noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;
根据自己的需要选择对应的策略,maxmemory与maxmemory_policy通常一起使用
2、设置maxmemory与maxmemory_policy
参数配置
虚拟机内存15G
maxmemory设置的是8G
maxmemory_polic设置的是allkeys-lru
下面是redis的使用情况 (后面没单位的默认byte)
used_memory: Redis分配的内存总量,即存储的所有数据占用的内存
used_memory_human: 以可读格式返回使用的内存量
used_memory_rss:从系统角度,显示Redis进程占用的物理内存总量
used_memory_rss_human:以可读格式返回Redis进程占用的物理内存总量
used_memory_peak:内存使用的最大值,表示used_memory峰值
used_memory_peak_human:以可读格式返回内存使用的最大值
total_system_memory:系统总内存
total_system_memory_human:以可读格式返回系统总内存
used_memory_lua:Lua进程使用内存
used_memory_lua_human:以可读格式返回Lua进程使用内存
mem_fragmentation_ratio:内存碎片率,等价于(used_memory_rss /used_memory)
mem_allocator:redis使用的内存分配器
重点关注used_memory以及used_memory_rss和碎片率mem_fragmentation_ratio
mem_fragmentation_ratio > 1: used_memory_rss -used_memory 多出部分没有存储数据,而是被内存碎片消耗了,如果差的很大,说明碎片很严重
mem_fragmentation_ratio < 1: 一般出现在操作系统把Redis内存交换到硬盘导致
# 开启自动内存碎片整理(总开关)
activedefrag yes
# 当碎片达到 100mb 时,开启内存碎片整理
active-defrag-ignore-bytes 100mb
# 当碎片超过 10% 时,开启内存碎片整理
active-defrag-threshold-lower 10
# 内存碎片超过 100%,则尽最大努力整理
active-defrag-threshold-upper 100
# 内存自动整理占用资源最小百分比
active-defrag-cycle-min 25
# 内存自动整理占用资源最大百分比
active-defrag-cycle-max 75