V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
endice
V2EX  ›  Redis

请教大家一个 redis 内存占用的问题

  •  1
     
  •   endice · 2016-12-04 14:49:37 +08:00 · 5957 次点击
    这是一个创建于 2937 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 del 命令删除了 redis 里五分之一的数据,可是 redis 的内存占用并没有下来, rdb 文件可以看到变小了的,只有 redis 重启才会降低内存占用,可是 redis 不能重启的。这是什么原因呢?我删数据就是为了减少内存占用,而且不能重启的,有其他的解决办法吗?

    15 条回复    2017-01-11 18:55:15 +08:00
    erenno1
        1
    erenno1  
       2016-12-04 15:01:26 +08:00
    搞个 slave 同步以下,切换
    mengskysama
        2
    mengskysama  
       2016-12-04 22:59:59 +08:00
    https://redis.io/topics/memory-optimization
    Memory allocation 章节有说的很清楚了, redis 详解里面也有说
    owt5008137
        3
    owt5008137  
       2016-12-05 00:06:52 +08:00 via Android
    如果立刻降下来,你想想要花多少 CPU 做内存碎片整理和内存紧缩呀。那得暂停服务多久呀?
    所以正常的设计都不会让它立刻降下来
    endice
        4
    endice  
    OP
       2016-12-05 00:10:03 +08:00
    @owt5008137 那就是说会慢慢降下来?还是说不会降了,只是后来的分配内存就使用那些释放的?
    endice
        5
    endice  
    OP
       2016-12-05 00:11:23 +08:00
    @mengskysama 我看那个章节里有说会重用这些内存,可是我删除数据后 redis 的内存占用还是一直在增。
    endice
        6
    endice  
    OP
       2016-12-05 00:12:11 +08:00
    @mengskysama 是说尽可能,那我关注下是不是内存增加的速度比以往要慢了
    mengskysama
        7
    mengskysama  
       2016-12-05 00:24:25 +08:00
    @endice 用 info 命令监控一下
    endice
        8
    endice  
    OP
       2016-12-05 00:41:09 +08:00
    @mengskysama 我听我同事说他 redis 内存占了 6G ,可是实际使用的只有 3G ,这要怎么解决?
    fyibmsd
        9
    fyibmsd  
       2016-12-05 08:55:35 +08:00 via iPhone
    加内存
    owt5008137
        10
    owt5008137  
       2016-12-05 09:08:55 +08:00 via Android
    @mengskysama 贴的文档里说了根据 malloc 的实现不同而不同。你可以去看一下 jemalloc 的设计模型。具体和你的 redis 使用的情况有关,主要是内存碎片的分布和操作顺序。
    简单地说就是,不一定会还给操作系统,即便还也不一定什么时候还多少给操作系统
    enenaaa
        11
    enenaaa  
       2016-12-05 09:47:23 +08:00
    @endice 用 info memory 命令查看内存占用细节。
    snopy
        12
    snopy  
       2016-12-05 10:12:39 +08:00
    之前搞过一个小脚本监控 redis 内存,超过某个值( 5G )就手动重启,一般能管 5 天左右,公司 storm 集群中的 redis 可以随意重启
    KKKKKK
        13
    KKKKKK  
       2016-12-05 10:36:10 +08:00
    @snopy redis 重启之后数据怎么办??
    harryhao
        14
    harryhao  
       2016-12-05 11:32:21 +08:00
    数据无效并不是马上清除的
    goldenpangolin
        15
    goldenpangolin  
       2017-01-11 18:55:15 +08:00
    @KKKKKK 大概是当缓存在用
    实际有数据库存盘吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1533 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.