现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右。 现在需要将这些数据做缓存以在高并发的时候依然可以快速响应。 因为这些数据基本没有冷热数据之分,所以需要将全部数据都放到缓存
现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右。
现在需要将这些数据做缓存以在高并发的时候依然可以快速响应。
因为这些数据基本没有冷热数据之分,所以需要将全部数据都放到缓存中。
1、直接生成静态文件,利用nginx对静态文件的高效做静态缓存。
-
当时服务器硬件资源有限,所以就采用这种方式,一直源用至今。
-
服务器间通过NFS来共享
-
太多小文件,不方便管理
-
NFS不方便运维与扩展
-
文件内容很小(100字节左右),3KW大概就是2.5G大小左右
-
不过文件存储的时候和硬盘分区的族大小有关,在这里磁盘分区的族大小为8K,所以尽管文件内容只有100字节,但是实际存储到磁盘上的时候单个文件其实是8K
-
所以3KW的文件世界占的磁盘空间大约为:200G左右( 严重浪费空间啊)
2、Redis(V2.2.11)【KV数据库】
-
听同事说开启VM会使性能急剧下降,所以基本无视VM,数据全放内存。
-
key为32位MD5字符串
-
测试数据:10W数据大概占内存20M
-
测试数据:500W数据大概占内存1G,持久化的rdb数据文件大概350M
-
推算3KW数据:内存6G,持久化的rdb数据文件大概为2G(压缩了?)
-
因为Redis在持久化的时候内存会加倍,和考虑到数据的增长,所以需要1台20G内存的机器基本就没问题了(容灾啥的另算)。
-
Redis非常快,如果硬件条件没问题,基本选这个最好了。
3、Moosefs(MFS)【分布式文件存储系统】
-
mfs支持NFS的方式mount到本地直接操作(如使用mfs,则现在的架构基本不用改)
-
最基本的需要一台主控服务器(Master Server)、一台数据服务器(Chunk Server)
-
文件和目录的索引需要全部加载到主控服务器的内存中,所以对主控服务器的内存有一定的要求
-
写入30W文件,到20W的时候写入就开始下降得厉害了(我的5400转的笔记本硬盘)
-
30W文件,4W目录,主控服务器占用大概120M内存
-
文件存储方式貌似和普遍的文件一样单个存储的(不确定),30W文件大概占了2.4G的磁盘空间(同样是8K一个文件)。
-
小文件一样很多,不方便维护与迁移(不知是否我设置不对?)。
-
内存、硬盘都占用得比较多,而且性能相对来说不是很出众。
-
所以这个基本不考虑了。
作者:QLeelulu??出处: http://QLeelulu.cnblogs.com/
作者:zeo112140 发表于2013-7-11 10:28:48 原文链接
阅读:7 评论:0 查看评论
原文地址:[转]缓存大量小文件?Redis是首选!, 感谢原作者分享。
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn