redis 和 mysql 同步各位是怎么实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
li734462972
V2EX    Redis

redis 和 mysql 同步各位是怎么实现的?

  •  
  •   li734462972 2016-10-26 11:01:45 +08:00 10772 次点击
    这是一个创建于 3339 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教 redis 如何做到和 mysql 数据库的同步呢? 暂时没找到合理的方案,希望从各位这儿弄点干货。

    22 条回复    2017-03-25 13:22:41 +08:00
    li734462972
        1
    li734462972  
    OP
       2016-10-26 11:08:57 +08:00
    来一发!
    veelog
        2
    veelog  
       2016-10-26 13:19:49 +08:00 via Android
    你这所谓的同步时啥???一般不是将 redis 当作任务队列,然后程序处理完再写入数据库吗??
    yidinghe
        3
    yidinghe  
       2016-10-26 13:54:41 +08:00 via Android
    没法同步,一个关系数据库,一个 nosql
    rebirth2
        4
    rebirth2  
       2016-10-26 14:17:54 +08:00 via Android
    以前碰到过的一个应用场景是 redis 做 web app 的 cache layer ,然后需要跟关系型数据库的最新交易数据同步,比如显示最新统计数字等,这样把 redis 放在关系型数据库前面减少读取和复杂查讯的次数,减轻负荷
    rebirth2
        5
    rebirth2  
       2016-10-26 14:22:17 +08:00 via Android
    可以利用关系型数据库的通知系统,比如 postgres 的 notify/listen 机制,实现从数据库到 redis 的 push ;有些数据库的 external table/data source 支持 redis 的话也是一个思路
    wuyadong
        6
    wuyadong  
       2016-10-26 14:50:34 +08:00
    缓存更新?
    li734462972
        7
    li734462972  
    OP
       2016-10-26 15:00:30 +08:00
    @veelog 好吧 我可能没表达清楚,比如每天用户的操作,文章发布,点击量,登录次数等写到 redis ,每天凌晨把数据更新到数据库里!
    li734462972
        8
    li734462972  
    OP
       2016-10-26 15:00:39 +08:00
    @rebirth2 好吧 我可能没表达清楚,比如每天用户的操作,文章发布,点击量,登录次数等写到 redis ,每天凌晨把数据更新到数据库里!
    li734462972
        9
    li734462972  
    OP
       2016-10-26 15:00:48 +08:00
    @wuyadong 好吧 我可能没表达清楚,比如每天用户的操作,文章发布,点击量,登录次数等写到 redis ,每天凌晨把数据更新到数据库里!
    zhidian
        10
    zhidian  
       2016-10-26 15:12:33 +08:00 via Android
    你可以同时 @ 三个人的。。。感觉你这叫导入。
    misaka19000
        11
    misaka19000  
       2016-10-26 15:20:55 +08:00
    @li734462972 这应该可以写个脚本在每天指定时间来自动完成吧,而且也不是很复杂
    li734462972
        12
    li734462972  
    OP
       2016-10-26 15:50:08 +08:00
    @zhidian
    @misaka19000

    果然可以同时艾特~
    好吧,那就用写个脚本吧~~谢谢各位
    pubby
        13
    pubby  
       2016-10-26 16:01:57 +08:00 via Android
    按照 mysql 的主从复制协议实现一个假的 slaver ,过滤出你要同步的数据,写入 redis
    pubby
        14
    pubby  
       2016-10-26 16:03:11 +08:00 via Android
    哦,好吧,反了。写定时脚本处理吧
    wupher
        15
    wupher  
       2016-10-26 16:05:20 +08:00
    如果你的 Server 是 Java 编写,且使用 Spring ,可以考虑使用 SpringCache 通过标签自动将 DTO 对象映射至 Redis 中。

    Spring 会帮你生成实现,查询时首先查询 Cache ,查询失败后再从 MySQL 加载数据。

    同样, update 以及 insert , delete 时,通过标签,同步更新 Redis 数据。

    实现上述功能,仅需要在你的 DAO 层函数上打上标签即可。
    li734462972
        16
    li734462972  
    OP
       2016-10-26 16:07:01 +08:00
    @pubby 哈哈哈,不过还是谢谢你~~不行我再乐会儿.....
    li734462972
        17
    li734462972  
    OP
       2016-10-26 16:07:49 +08:00
    @wupher 这个表示看的懵逼...原谅我用了最好的语言,,,,
    adv007
        18
    adv007  
       2016-10-26 17:59:08 +08:00 via iPhone
    搞个脚本订阅 redis 的频道然后灌到 mysql
    wingyiu
        19
    wingyiu  
       2016-10-26 23:34:49 +08:00
    ywgx
        20
    ywgx  
       2016-10-27 09:08:36 +08:00 via iPhone
    这不叫同步,叫导入
    noahzh
        21
    noahzh  
       2016-10-27 09:21:30 +08:00
    实现 redis 同步协议就可以了。。。
    leonchen83
        22
    leonchen83  
       2017-03-25 13:22:41 +08:00
    https://github.com/leonchen83/redis-replicator/blob/master/README.zh_CN.md
    这个库完整实现了 redis 的同步协议,可以用来进行数据同步
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1294 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 17:11 PVG 01:11 LAX 09:11 JFK 12:11
    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