Redis适合存储海量小文件吗?

2013-03-30 23:59:35 +08:00
 Tianpu
大约有100万左右的小文件 是动态生成的.svg图像 每个小于4k 过期时间是86400秒

并发需求上不是很大 .svg的生成比较耗费资源 虽然耗时也就是0.02秒左右

为了不给系统留下隐患 还是需要缓存下

硬件上大约能拿出4G内存来存储

我只有使用memcachedb的经验

有人能给点建议,redis适合我的这个需求吗?
15964 次点击
所在节点    Redis
9 条回复
yuyuyu101
2013-03-31 00:45:22 +08:00
memcached对于大字符串效率更高
ElmerZhang
2013-03-31 15:53:33 +08:00
直接用Memcached就可以了,反正内存够
thetcc
2013-03-31 16:30:39 +08:00
小文件是多小?只要你存储的的内容不要超过实际内存,应该没什么问题。redis里单个value的最大值是512MB,所以你小文件是绝对不会超过的。redis的key,value都可以是二进制数据或字符串。
twm
2013-03-31 21:14:29 +08:00
100w,小意思
ipconfiger
2013-03-31 21:56:46 +08:00
你还不如直接/dev/shm来得直接简单点呢
Livid
2013-03-31 22:00:11 +08:00
几个问题:

- 实际占用的内存会大于 4G
- 如果超过可用内存,Redis 会直接崩溃
- 崩溃的时候可能会丢一部分数据
- 崩溃之后再重启时,会需要花一点时间将数据从磁盘恢复到内存中,数据越多,这个时间就越长
moyaya
2013-03-31 23:18:37 +08:00
redis非常吃内存啊!
lookhi
2013-03-31 23:46:26 +08:00
并发需求上不是很大 .svg的生成比较耗费资源 虽然耗时也就是0.02秒左右

压力都不大啊,每次都动态生成吧。做最大1000个图片的缓冲队列就好了。
Tianpu
2013-04-01 18:17:34 +08:00
感谢所有回复者 我也是印象中存在一个redis可能会崩溃的印象

查找一翻资料后 一开始使用文件存储 最终修改成mysql存储

文件存储是这样的结构:
{basedir}/substr(crc32({name}),1,3)/{name}.svg
由于未知的原因,竟然偶尔会失败,不确定是硬盘缓存导致写入失败还是别的什么原因,总之产生了很诡异的错误,大致是文件写造成的,而且是比较随机的出现

然后又产生了别的需求 就修改成myisam存储了 目前还算稳定 暂时没有发现问题

我不介意丢失文件 反正恢复不麻烦 只是不想偶尔还要去检查下系统是不是完蛋了

楼上所有回复者已经送钱

谢谢

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

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

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

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

© 2021 V2EX