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

2013-12-12 21:18:38 +08:00
 wudikua
我把redis当做存储,存储了大量的hset。redis-server占了百分之80的内存。我看配置里有一些关于内存达到限制什么回收key,可是我这个hset是当存储用的啊,没有什么过期时间,这种情况是不是就没办法了。难道redis自己不能用磁盘io换内存么。现在貌似没内存就用系统的swap。就算他有的话,如果我用keys命令,是不是也要把dump.rdb都放内存里才行。难道内存不够就没法把redis当存储用了么。不是说k-v数据库么。。。求解~
13234 次点击
所在节点    程序员
11 条回复
est
2013-12-12 21:37:14 +08:00
redis纯内存db。内存占用超过50%的话,单机无法导出数据。欢迎进坑。
likuku
2013-12-12 21:55:38 +08:00
「难道redis自己不能用磁盘io换内存么」请用mongodb。
wudikua
2013-12-12 21:56:14 +08:00
@est 嗯,应该是,bgsave要占一半
wudikua
2013-12-12 22:00:53 +08:00
2.4 有个
vm-enabledyes #开启vm功能
vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
这个配置,2.6没有了么?这个管用么
est
2013-12-12 22:06:53 +08:00
@wudikua vm是老功能了。最后被证明实现不好性能bug多多。已经废弃。
wudikua
2013-12-12 22:24:28 +08:00
看来还是得找个存储引擎什么的,试试leveldb或者直接试试redis-storage
ericls
2013-12-12 22:35:40 +08:00
就当缓存用吧
julyclyde
2013-12-13 15:17:49 +08:00
@est fork时不是COW的吗,为什么50%就不能导出数据了?
est
2013-12-13 15:29:41 +08:00
@julyclyde 散列的稀疏性导致基本处处都要copy呗。你自己数据多了试试就知道为啥了。
diligence24
2013-12-13 15:56:38 +08:00
暂时还没遇到过这个问题。
wudikua
2013-12-13 22:14:30 +08:00
数据的详情信息放到了leveldb中,把redis当索引+部分数据+LRU缓存用,目前效果还可以。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92917

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX