Redis 数据库 数据同步到 MySQL 有啥方案

redis做主数据库, 数据分析和查询在mysql中,需要把数据从redis 同步到 mysql

有什么解决方案? gem 或者思路? 谢谢。 需要考虑数据的一致性,其实自己写

应该是可以的,有没有现成的类库什么的?

    

共收到 8 条回复

96

ihlayy · #1 · 3 年前 

来点思路也行额。。 有做过的吗

2880

luikore · #2 · 3 年前 

建议直接在 redis 中做分析和查询, 或者在往redis存数据的所有地方都加一个往mysql存数据的方法... redis 和 mysql 数据的范式是完全不一样的, 转换就是一个大问题, 恐怕很难找到现成的类库, 找到也不一定符合要求.

redis 也有不少给查询和分析使用的方法, 还可以执行 server side lua: http://redis.io/commands/eval, 基本能解决缺少 average()sum() 等函数的问题

96

ihlayy · #3 · 3 年前 

#2楼 @luikore 
谢谢啊,现在看了下,有几种思路,但是感觉都不是很优雅且有一定的复杂度,抛砖引玉
1) 在所有redis 增,删,改数据的地方,处理完之后,放到队列,由MYSQL处理队列中的东西
缺点就是,代码估计很难看,而且这部分属于系统而外的东西。不爽

2) redis-dump,redis-rdb之类的工具导出数据并同步
https://github.com/nrk/redis-rdb
导出数据有两种模式
a. rdb 文件 ( redis 做的快照 ,这个文件看起来是会重新整理的,所以所sync的时候可能不方便,不便于判断哪些数据是删除了的,而且需要重新把所有数据检查一遍,这个恐怕不好)
b. aof 文件 ( 利用这种,可以有一个offset标记同步到哪儿了,如果失败了,或者下次sync的时候,从offset开始解析命令 )
问题在于,怎么对应redis的命令 和 mysql 的db 结构, 如果mysql 的db 结构和redis 不同的时候,
比如有中间表,也需要想办法处理

3) 直接读redis db , 在redis 对象中需要加上create_at ,update_at,需要额外的记录deleted的对象。 sync的时候记下updated_at,
下次sync找到udpated_at 之后的数据进行处理 。

96

bhuztez · #4 · 3 年前 

redis做主数据库,这是啥应用 ...

96

ihlayy · #5 · 3 年前 

#4楼 @bhuztez 
手机端游戏类的,前期可能先这样弄吧,写入比较大。
估计数据量大的时候,会考虑持久化一部分到硬盘。

mysql 主要是怕处理全文索引,一些复杂查询redis不太好做

2880

luikore · #6 · 3 年前 

#5楼 @ihlayy redis做复杂查询很容易啊...全文索引就和数据库无关吧...

96

ihlayy · #7 · 3 年前 

#6楼 @luikore

建索引得占内存啊,如果是从description之类的字段里索引,不一定划算的意思。

2466

rasefon · #8 · 1 年前 

别用mysql了,多买几个ups,搞个100g内存就行了哈哈。


转载于:https://my.oschina.net/airship/blog/608763

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值