1.案例
redis 内存占用满了
错误提示:OOM command not allowed when used memory > ‘maxmemory’
2.排查步骤
- 确定哪台redis服务器
- 使用 set 命令随便设置值,查看是否成功
- 使用 info memory 命令查看内存情况
- 修改redis存储策略
3. info memory 注释
127.0.0.1:6379> info memory
# Memory
used_memory:1038944
used_memory_human:1014.59K // 已用内存
used_memory_rss:745472
used_memory_rss_human:728.00K // 系统给redis分配的内存(即常驻内存)
used_memory_peak:51710336
used_memory_peak_human:49.31M
used_memory_peak_perc:2.01%
used_memory_overhead:1030702
used_memory_startup:981072
used_memory_dataset:8242
used_memory_dataset_perc:14.24%
total_system_memory:17179869184
total_system_memory_human:16.00G
used_memory_lua:54272
used_memory_lua_human:53.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:0.72 // mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情况下,used_memory_rss略高于used_memory,当内存碎片较多时,则mem_fragmentation_ratio会较大,可以反映内存碎片是否很多
mem_allocator:libc
active_defrag_running:0
lazyfree_pending_objects:0
4.存储策略
1.volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键中选择空转时间最长的键值对清除掉;
2.volatile-lfu(least frequently used):最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;
3.volatile-ttl:从设置了过期时间的键中选择过期时间最早的键值对清除;
4.volatile-random:从设置了过期时间的键中,随机选择键进行清除;
5.allkeys-lru:最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;
6.allkeys-lfu:最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;
7.allkeys-random:所有的键中,随机选择键进行删除;
8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;
5.解决
-
命令设置过期时间
-
增加redis内存,修改redis.conf
maxmemory 2gb
- 修改redis存储策略
maxmemory-policy volatile-lru
- 非必要不使用redis存数据
4.相关推荐
在线redis测试:在线 reids
标签:used,Redis,maxmemory,redis,内存,human,memory From: https://www.cnblogs.com/linsonga/p/16601083.html