• Redis: OOM command not allowed when used memory > ‘maxmemory’


    现象

    日志里出现异常:

    OOM command not allowed when used memory > 'maxmemory'

    原因

    内存已满,不允许再存数据了,可以通过redis-cli 查看redis的具体信息

    127.0.0.1:6379> info memory
    # Memory
    used_memory:4120248
    used_memory_human:3.93M
    used_memory_rss:11509760
    used_memory_peak:1977983104
    used_memory_peak_human:1.84G
    used_memory_lua:36864
    mem_fragmentation_ratio:2.79
    mem_allocator:jemalloc-3.6.0

    注:

    • used_memory_human表示已用内存
    • used_memory_rss表示系统给redis分配的内存(即常驻内存)
    • mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情况下,used_memory_rss略高于used_memory,当内存碎片较多时,则mem_fragmentation_ratio会较大,可以反映内存碎片是否很多

    解决

    注:如修改了配置文件需重启redis

    1. 增加redis内存,修改redis.conf

    maxmemory 2gb

    2. 修改redis存储策略

    默认的redis设置是非常保守的,即内存超限后就不在存储,可以把策略修改为LRU算法(最近最少使用算法)——新存储的信息会替换掉旧的信息,从而不会是内存越线,修改redis.conf

    maxmemory-policy volatile-lru

    3. 少往reids存数据

    是否有必要把这么多数据存入redis?

  • 相关阅读:
    cocoapods的安装与使用
    HBase源代码分析之HRegion上MemStore的flsuh流程(二)
    everything of people’s life can changed in their twenties
    java 操作流的步骤
    java 流
    java 文件过滤器 java.io.FilenameFilter
    java 递归(Recursion)
    java IO的概述和File方法
    java 泛型的嵌套(map例子)
    java 泛型接口和方法
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/6187044.html
Copyright © 2020-2023  润新知