V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gzk329
V2EX  ›  Java

如果一个表中一个字段特别长,有必要考虑使用 redis 存储吗?

  •  
  •   gzk329 · 2023-09-06 11:30:50 +08:00 · 3341 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不考虑分表,和分成几个的话
    那有比要为了这个,引入一个单节点的 redis 服务存储吗?
    目前这个字段很长的话,入库会很慢,几十秒。

    boobo
        1
    boobo  
       2023-09-06 11:37:06 +08:00
    楼主用错地方了吧,redis 称之为缓存服务,数据库是固化数据用的...
    gzk329
        2
    gzk329  
    OP
       2023-09-06 11:41:07 +08:00
    @boobo 就是我把这个字段,存到 redis 中,关系型数据库表里,这个字段留空,提高我入库效率。
    debuggerx
        3
    debuggerx  
       2023-09-06 11:42:54 +08:00 via Android
    存文件也比存 redis 好吧
    lvxiaomao
        4
    lvxiaomao  
       2023-09-06 11:45:16 +08:00
    首先看看为啥内容这么多,是否可以有其他方式搞一下?
    boobo
        5
    boobo  
       2023-09-06 11:46:30 +08:00
    @gzk329 数据库注重的是数据的固化和一致性,你存内存里了数据固化咋办?某次重启就丢掉了!
    liuzhedash
        6
    liuzhedash  
       2023-09-06 11:46:40 +08:00
    @gzk329
    可以先缓存到 redis ,然后用一个后台线程逐步写入数据库,当然这里有个风险是如果服务器异常关闭,会丢失一些数据。
    cominghome
        7
    cominghome  
       2023-09-06 11:47:00 +08:00   ❤️ 6
    多长的字段入库要几十秒?你直接往数据库里写四库全书了?
    Akuikkk
        8
    Akuikkk  
       2023-09-06 11:49:06 +08:00
    存到文本,上传到 oss ,字段存 oss 链接
    Arrowing
        9
    Arrowing  
       2023-09-06 11:51:22 +08:00
    特别长是多长,放 redis 不是技术割裂吗,难以维护,易出问题。
    largetext 不够你用的?
    chendl111
        10
    chendl111  
       2023-09-06 12:05:32 +08:00
    很长有多长?调整数据类型,压缩数据都行呐,入库太慢就弄个异步线程,不过出故障恢复数据挺麻烦的
    roundgis
        11
    roundgis  
       2023-09-06 12:09:28 +08:00 via Android
    redis 我記得單條不能超過 512M?

    你能搞這麼大的串不考慮分切一下?
    Mithril
        12
    Mithril  
       2023-09-06 12:12:32 +08:00
    一条记录插几十秒的话,建议直接存文件。。。
    akira
        13
    akira  
       2023-09-06 12:29:35 +08:00
    入库会很慢,几十秒?

    这么大的数据可以考虑持久化到文件系统,然后数据库里面只保存链接。
    RedBeanIce
        14
    RedBeanIce  
       2023-09-06 12:43:43 +08:00   ❤️ 4
    请详细描述你的根本问题。。。

    你这个问题感觉是遇到了一个问题,自己想了一个办法。
    然后又遇到了问题,所以才有了这个帖子。
    msaionyc
        15
    msaionyc  
       2023-09-06 13:08:38 +08:00
    你 redis 挂了咋整?
    另外,你这个字段到底有多长?真的合理吗
    如果是大文本字段,可以建一张专门存 Text 类型的表,然后用主键关联起来。如果 Text 类型不够用,你得考虑其他方案解决了,总之存 redis 不是一个好方案。
    jyao
        16
    jyao  
       2023-09-06 17:31:04 +08:00
    是 blog 字段嘛,如果是建议你存对象存储比如 oss 上,字段存地址就行了
    shinyruo2020
        17
    shinyruo2020  
       2023-09-06 17:45:59 +08:00   ❤️ 5
    X-Y Problem
    awalkingman
        18
    awalkingman  
       2023-09-06 18:32:29 +08:00
    一致性问题你怎么处理
    捡了芝麻丢了西瓜。
    xuanbg
        19
    xuanbg  
       2023-09-06 18:43:07 +08:00
    有多大?我们几十 M 的富文本,也是秒入啊。
    wonderfulcxm
        20
    wonderfulcxm  
       2023-09-06 19:03:46 +08:00 via iPhone
    以前做小说站,三国演义全文都是秒入。你啥字段?
    zsdroid
        21
    zsdroid  
       2023-09-06 19:12:29 +08:00
    难道你存了π的小数点 1 亿位?那还不如直接上 oss 。
    deplivesb
        22
    deplivesb  
       2023-09-06 19:15:50 +08:00
    多长的字段?能导致慢几十秒?一个字段存了一本新华字典?
    你先确认为啥会慢几十秒?这个思路完全没解决问题,只是在强行打补丁。
    dode
        23
    dode  
       2023-09-06 19:20:18 +08:00
    mysql 有 lage_text blob 类型支持
    kkwa56188
        24
    kkwa56188  
       2023-09-06 19:42:26 +08:00
    手里有一把锤子, 看什么都像钉子
    mm163
        25
    mm163  
       2023-09-06 19:50:33 +08:00
    是在这个字段关联了索引了吧,所以入库慢?
    joesonw
        26
    joesonw  
       2023-09-06 21:40:57 +08:00 via iPhone
    redis 早有了成熟的备份,集群方案。游戏公司老早就用 redis 做主服务器了。
    joesonw
        27
    joesonw  
       2023-09-06 21:41:11 +08:00 via iPhone
    @joesonw 住数据库。
    xiaowangge
        28
    xiaowangge  
       2023-09-06 22:00:55 +08:00   ❤️ 3
    对于 X-Y Problem 的意思如下:

    1 )有人想解决问题 X
    2 )他觉得 Y 可能是解决 X 问题的方法
    3 )但是他不知道 Y 应该怎么做
    4 )于是他去问别人 Y 应该怎么做?

    https://coolshell.cn/articles/10804.html
    wangbin526
        29
    wangbin526  
       2023-09-06 22:58:21 +08:00 via Android   ❤️ 1
    Redis 不是要尽量避免 bigkey 的吗,还专门存 Redis ?
    dayeye2006199
        30
    dayeye2006199  
       2023-09-06 23:13:00 +08:00
    数据库里存视频?
    IvanLi127
        31
    IvanLi127  
       2023-09-06 23:24:43 +08:00 via Android
    请问你想要的是不是“对象存储”
    killerv
        32
    killerv  
       2023-09-06 23:34:04 +08:00   ❤️ 2
    隐约感觉哪里不对劲,直接描述你原始的问题;因为经常遇到这种:本来需求是切西瓜,问题变成了我应该怎么把锤子磨成一个很薄的铁片。
    ShuWei
        33
    ShuWei  
       2023-09-07 00:06:56 +08:00
    这是把小电影直接入库了?
    spediacn
        34
    spediacn  
       2023-09-07 01:36:55 +08:00 via iPhone
    你往库里写文件?写大二进制?不建议这么放,放文件都比他好,为啥非要入库嘞?
    Dlin
        35
    Dlin  
       2023-09-07 09:07:27 +08:00
    有点好奇,能执行几十秒的字段有多大
    hbcolorful
        36
    hbcolorful  
       2023-09-07 18:08:41 +08:00
    用文件系统会不会好点,间接入库
    litchinn
        37
    litchinn  
       2023-09-09 17:42:23 +08:00
    redis 数据是在内存的,虽然他有机制将数据持久化下来,照你这个说法这么大的字段你的内存肯定吃不住,其次如果这些数据你只是存而不查询,那么放 redis 就更没有意义了,内存成本比硬盘成本高得多,可以换成楼上对象存储的方案。
    如果需要支持查询则可以使用 ES 等方案,这方面可以参考各种日志系统的解决思路如 ELK 、Loki 等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5462 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 01:33 · PVG 09:33 · LAX 18:33 · JFK 21:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.