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

问个redis的基本问题,把redis当存储用,结果内存耗尽问题

  •  
  •   wudikua · 2013-12-12 21:18:38 +08:00 · 13386 次点击
    这是一个创建于 3993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我把redis当做存储,存储了大量的hset。redis-server占了百分之80的内存。我看配置里有一些关于内存达到限制什么回收key,可是我这个hset是当存储用的啊,没有什么过期时间,这种情况是不是就没办法了。难道redis自己不能用磁盘io换内存么。现在貌似没内存就用系统的swap。就算他有的话,如果我用keys命令,是不是也要把dump.rdb都放内存里才行。难道内存不够就没法把redis当存储用了么。不是说k-v数据库么。。。求解~
    11 条回复    1970-01-01 08:00:00 +08:00
    est
        1
    est  
       2013-12-12 21:37:14 +08:00
    redis纯内存db。内存占用超过50%的话,单机无法导出数据。欢迎进坑。
    likuku
        2
    likuku  
       2013-12-12 21:55:38 +08:00
    「难道redis自己不能用磁盘io换内存么」请用mongodb。
    wudikua
        3
    wudikua  
    OP
       2013-12-12 21:56:14 +08:00
    @est 嗯,应该是,bgsave要占一半
    wudikua
        4
    wudikua  
    OP
       2013-12-12 22:00:53 +08:00
    2.4 有个
    vm-enabledyes #开启vm功能
    vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
    这个配置,2.6没有了么?这个管用么
    est
        5
    est  
       2013-12-12 22:06:53 +08:00
    @wudikua vm是老功能了。最后被证明实现不好性能bug多多。已经废弃。
    wudikua
        6
    wudikua  
    OP
       2013-12-12 22:24:28 +08:00
    看来还是得找个存储引擎什么的,试试leveldb或者直接试试redis-storage
    ericls
        7
    ericls  
       2013-12-12 22:35:40 +08:00 via Android
    就当缓存用吧
    julyclyde
        8
    julyclyde  
       2013-12-13 15:17:49 +08:00
    @est fork时不是COW的吗,为什么50%就不能导出数据了?
    est
        9
    est  
       2013-12-13 15:29:41 +08:00
    @julyclyde 散列的稀疏性导致基本处处都要copy呗。你自己数据多了试试就知道为啥了。
    diligence24
        10
    diligence24  
       2013-12-13 15:56:38 +08:00
    暂时还没遇到过这个问题。
    wudikua
        11
    wudikua  
    OP
       2013-12-13 22:14:30 +08:00
    数据的详情信息放到了leveldb中,把redis当索引+部分数据+LRU缓存用,目前效果还可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 10:34 · PVG 18:34 · LAX 02:34 · JFK 05:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.