V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hoythan
V2EX  ›  问与答

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

  •  
  •   hoythan · 2017-05-27 11:00:44 +08:00 · 1768 次点击
    这是一个创建于 2767 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    程序用的是 PHP

    有更好的办法吗?

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

    gz 压缩放 redis ?或者直接文件缓存呗
    kindjeff
        4
    kindjeff  
       2017-05-27 11:11:10 +08:00
    试试 redis 呗。
    hoythan
        5
    hoythan  
    OP
       2017-05-27 11:27:48 +08:00
    @iyaozhen
    @kindjeff
    10mb 以内的字符串, redis 快还是 直接保存成静态文件读取快
    yidinghe
        6
    yidinghe  
       2017-05-27 11:34:57 +08:00
    “大量字符串”指的是缓存值的长度大还是缓存项的数量大?
    hoythan
        7
    hoythan  
    OP
       2017-05-27 11:37:05 +08:00
    @yidinghe 需要缓存的 value 字符串长度有 5.2mb.
    yidinghe
        8
    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
        9
    hoythan  
    OP
       2017-05-27 11:41:32 +08:00
    @yidinghe 不知道哪个快? 5.2mb 字符串 直接存储为文件 取需要 0.034 秒感觉还是可以的
    yidinghe
        10
    yidinghe  
       2017-05-27 11:45:08 +08:00
    @hoythan 没区别,一般这种情况网络带宽反而是瓶颈。
    neilwong
        11
    neilwong  
       2017-05-27 11:54:40 +08:00
    如果一个字符串 5.2M,可能要考虑下内存吃不吃的消,吃的消就放 redis。吃不消就放数据库或文件缓存吧。
    mkstring
        12
    mkstring  
       2017-05-27 11:58:17 +08:00
    ElasticSearch
    codingadog
        13
    codingadog  
       2017-05-27 12:01:07 +08:00 via iPhone
    你不是被拉黑了,只是因为之前说过什么不该说的被降权了……
    denghongcai
        14
    denghongcai  
       2017-05-27 12:16:12 +08:00
    5M,百兆带宽跑满拉下来都得大于 500ms,真的有那么大的 String 要缓存吗?
    hoythan
        15
    hoythan  
    OP
       2017-05-27 13:22:55 +08:00
    @denghongcai 内容需要很多次数据查询才行,所以我打算直接一次查询缓存,其他的接口调用这些缓存结果.
    gouchaoer
        16
    gouchaoer  
       2017-05-27 13:40:55 +08:00 via Android
    存文件
    pubby
        17
    pubby  
       2017-05-27 13:49:45 +08:00 via Android
    gzip 压缩一下看看能不能降到 1M 以下再塞 memcache 里
    hoythan
        18
    hoythan  
    OP
       2017-05-27 14:29:26 +08:00
    @pubby 不行,尽量了 redis 考虑到内存占用问题,所以最终考虑用文件形式,又快又稳
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5865 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.