大量字符串如何缓存比较合适?

2017-05-27 11:00:44 +08:00
 hoythan

一开始是使用 memcached 缓存,但是有长度限制. 后来使用 mysql 缓存,用 key value 的方式缓存处理好的内容.

程序用的是 PHP

有更好的办法吗?

1754 次点击
所在节点    问与答
18 条回复
hoythan
2017-05-27 11:04:12 +08:00
我是不是被拉黑了?发一个主题每次都在很后面,必须置顶才行.
hoythan
2017-05-27 11:07:45 +08:00
还想到了一个吧内容输出成静态文件,再读入文件
iyaozhen
2017-05-27 11:09:11 +08:00
大量是多大?单个有多长?

gz 压缩放 redis ?或者直接文件缓存呗
kindjeff
2017-05-27 11:11:10 +08:00
试试 redis 呗。
hoythan
2017-05-27 11:27:48 +08:00
@iyaozhen
@kindjeff
10mb 以内的字符串, redis 快还是 直接保存成静态文件读取快
yidinghe
2017-05-27 11:34:57 +08:00
“大量字符串”指的是缓存值的长度大还是缓存项的数量大?
hoythan
2017-05-27 11:37:05 +08:00
@yidinghe 需要缓存的 value 字符串长度有 5.2mb.
yidinghe
2017-05-27 11:38:23 +08:00
https://redis.io/topics/data-types
"A String value can be at max 512 Megabytes in length"
Redis 可以用。
hoythan
2017-05-27 11:41:32 +08:00
@yidinghe 不知道哪个快? 5.2mb 字符串 直接存储为文件 取需要 0.034 秒感觉还是可以的
yidinghe
2017-05-27 11:45:08 +08:00
@hoythan 没区别,一般这种情况网络带宽反而是瓶颈。
neilwong
2017-05-27 11:54:40 +08:00
如果一个字符串 5.2M,可能要考虑下内存吃不吃的消,吃的消就放 redis。吃不消就放数据库或文件缓存吧。
mkstring
2017-05-27 11:58:17 +08:00
ElasticSearch
codingadog
2017-05-27 12:01:07 +08:00
你不是被拉黑了,只是因为之前说过什么不该说的被降权了……
denghongcai
2017-05-27 12:16:12 +08:00
5M,百兆带宽跑满拉下来都得大于 500ms,真的有那么大的 String 要缓存吗?
hoythan
2017-05-27 13:22:55 +08:00
@denghongcai 内容需要很多次数据查询才行,所以我打算直接一次查询缓存,其他的接口调用这些缓存结果.
gouchaoer
2017-05-27 13:40:55 +08:00
存文件
pubby
2017-05-27 13:49:45 +08:00
gzip 压缩一下看看能不能降到 1M 以下再塞 memcache 里
hoythan
2017-05-27 14:29:26 +08:00
@pubby 不行,尽量了 redis 考虑到内存占用问题,所以最终考虑用文件形式,又快又稳

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

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

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

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

© 2021 V2EX