• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wudikua
V2EX  ›  程序员

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

  •  
  •   wudikua · Dec 12, 2013 · 14289 views
    This topic created in 4590 days ago, the information mentioned may be changed or developed.
    我把redis当做存储,存储了大量的hset。redis-server占了百分之80的内存。我看配置里有一些关于内存达到限制什么回收key,可是我这个hset是当存储用的啊,没有什么过期时间,这种情况是不是就没办法了。难道redis自己不能用磁盘io换内存么。现在貌似没内存就用系统的swap。就算他有的话,如果我用keys命令,是不是也要把dump.rdb都放内存里才行。难道内存不够就没法把redis当存储用了么。不是说k-v数据库么。。。求解~
    11 replies    1970-01-01 08:00:00 +08:00
    est
        1
    est  
       Dec 12, 2013
    redis纯内存db。内存占用超过50%的话,单机无法导出数据。欢迎进坑。
    likuku
        2
    likuku  
       Dec 12, 2013
    「难道redis自己不能用磁盘io换内存么」请用mongodb。
    wudikua
        3
    wudikua  
    OP
       Dec 12, 2013
    @est 嗯,应该是,bgsave要占一半
    wudikua
        4
    wudikua  
    OP
       Dec 12, 2013
    2.4 有个
    vm-enabledyes #开启vm功能
    vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
    这个配置,2.6没有了么?这个管用么
    est
        5
    est  
       Dec 12, 2013
    @wudikua vm是老功能了。最后被证明实现不好性能bug多多。已经废弃。
    wudikua
        6
    wudikua  
    OP
       Dec 12, 2013
    看来还是得找个存储引擎什么的,试试leveldb或者直接试试redis-storage
    ericls
        7
    ericls  
       Dec 12, 2013 via Android
    就当缓存用吧
    julyclyde
        8
    julyclyde  
       Dec 13, 2013
    @est fork时不是COW的吗,为什么50%就不能导出数据了?
    est
        9
    est  
       Dec 13, 2013
    @julyclyde 散列的稀疏性导致基本处处都要copy呗。你自己数据多了试试就知道为啥了。
    diligence24
        10
    diligence24  
       Dec 13, 2013
    暂时还没遇到过这个问题。
    wudikua
        11
    wudikua  
    OP
       Dec 13, 2013
    数据的详情信息放到了leveldb中,把redis当索引+部分数据+LRU缓存用,目前效果还可以。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1509 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 146ms · UTC 16:35 · PVG 00:35 · LAX 09:35 · JFK 12:35
    ♥ Do have faith in what you're doing.