问一个关于 redis hash 的问题 - V2EX
wxm
V2EX    Redis

问一个关于 redis hash 的问题

  •  
  •   wxm Mar 28, 2021 2204 views
    This topic created in 1871 days ago, the information mentioned may be changed or developed.
    现在有个场景,有个定时每分钟先从第三方接口查询数据在本地,然后处理完放到 redis 里面,再把处理完的数据存到数据库备份。三方接口的数据每次返回的数据可能不一样,我用 hash 结构存储这些数据,hmset domain k1 v.toString k2 v.toString,因为下一次可能新增 k3,k2 失效,k1 更新。我不想每次 hmset 都先删除这个 domain,请问有什么其他好的解决方案。数据库备份是先删库再 insert 。都是先删再 inser 感觉操作有点太重了。存成 hash 是因为条 v 有高频查询需求。
    2 replies    2021-03-29 09:49:04 +08:00
    FaceBug
        1
    FaceBug  
       Mar 28, 2021
    如果是我,在数据量不大的情况,我觉得我可能这么做

    1 、每次抓到新数据,直接写入数据库,暂时不删旧的数据,也不碰 redis

    2 、设置一个按照规则读取不同 key 的方案,当时间为 0-2 时,读 key_0,为 3-5 时读 key_3

    3 、如果发现没有设置 redis key_3,去数据库找 key_3 (就和平时用 redis 做缓存一样操作)

    4 、定时删除过期的 key 和 mysql

    这样我也懒得比较是更新还是删除还是新增,每次都直接用最新的完整版数据就完事了
    palmers
        2
    palmers  
       Mar 29, 2021
    我理解 你这是在做数据异构吧? 然后从另一个角度想这个第三方的数据是否可以通过 mq 的方式订阅不同数据的主题, 比如 数据增加的 topic, 数据删除的 topic 数据更新的 topic 或者是这几个合并 topic 你没有采用是不是这条路已经被堵死了? 那么 如果这样, 我觉得可以这样: 首先我理解你肯定知道本次查询结果是新增一个 k3 还是失效 k2 还是 k1 更新吧 那么如此你肯定知道怎么做了, 然后自己发送 mq 通知, 然后另一个 worker 去订阅你的 mq 做数据库操作, 我想数据延迟上也不会有问题的, 因为你说数据库只是备份 并不是用来做业务数据直接依赖的
    About     Help     Advertise     Blog     API     FAQ     Solana     3226 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 14:21 PVG 22:21 LAX 07:21 JFK 10:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86