How to Solve Redis Error: OOM command not allowed when used memory > ‘maxmemory’

exception prompt: the memory is full and no more data can be saved. You can view the specific information of redis through redis cli

127.0.0.1:6379> info memory
# Memory
used_memory:168363320
used_memory_human:160.56M
used_memory_rss:150208512
used_memory_rss_human:143.25M
used_memory_peak:168425144
used_memory_peak_human:160.62M
used_memory_peak_perc:99.96%
used_memory_overhead:139522822
used_memory_startup:487096
used_memory_dataset:28840498
used_memory_dataset_perc:17.18%
total_system_memory:4143534080
total_system_memory_human:3.86G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:124000000
maxmemory_human:118.26M
maxmemory_policy:noeviction
mem_fragmentation_ratio:0.89
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0

used_ memory_ Human represents used memory

used_ memory_ RSS represents the memory allocated by the system to redis (i.e. resident memory)

mem_ fragmentation_ ratio=used_ memory_ rss/used_ Memory ratio, in general, used_ memory_ RSS is slightly higher than used_ Memory, when there are many memory fragments, then memory_ fragmentation_ The ratio will be large, which can reflect whether there are many memory fragments

solutions:

1. Add redis memory and modify redis.conf

maxmemory 2gb

2. Modify the redis storage policy

The default redis setting is very conservative, that is, it will not be stored after memory overrun. You can change the policy to LRU algorithm (the least recently used algorithm) – the new stored information will replace the old information, so that the memory will not cross the line and redis.conf will not be modified

maxmemory-policy volatile-lru

3. Save unnecessary data in redis

After modifying the configuration, you must restart redis to take effect

Similar Posts: