redis mysql用c_redis+mysql数据同步(协同)C/C++实现

本文介绍了在数据量大的情况下,如何使用Redis作为缓存来减轻MySQL的压力。通过批量插入的方式将MySQL数据同步到Redis,并展示了从MySQL到Redis的具体操作过程,以及使用C/C++ API实现Redis到MySQL的数据同步。此外,提到了通过crontab实现自动化同步的方案。
摘要由CSDN通过智能技术生成

说明:

本文只是对redis和mysql的数据迁徙作了简单介绍mysql

关于redis+mysql协同:

数据量巨大的状况下,频繁的操做数据库(这里值mysql),可能会形成击穿。而分布式缓存技术已经很成熟。

使用Nosql作缓存,而后异步的写入数据库,从而减少mysql甚至服务器的压力。git

关于redis+mysql应用:

微博固然是最大的redis集群了:

总结了基本流程:

1. 发微博– > 进入消息队列– > 存入MySQL– > 复制到Redis

2. 查询 – > 查询缓存– > 查询Redis – > 查询MySQLgithub

正文:web

既然是二者之间交互,就分为两部分:

mysql to redis

redis to mysql

先看mysql to redis:

mysql to redis 采用的批量插入的方法。

经过对redis 以及 mysql具体数据库,数据表格式的分析,

利用 *.sql的脚本对数据进行选取,再重定向 到 redis中便可。

(使用到了 redis-cli –pipe的选项)redis

先看数据表:

a323c6552917e59b2a09488f14336bfa.png

a42fa21270aad7f01011b492983122fb.png

23b097dbfbfe79fb75a2e7d9f7207254.pngsql

对于每行数据中执行的 Redis命令以下:

HSET events_all_time [action] [count]数据库

利用.sql脚本 执行

2493b9de89357963cc67d763ef56a7ae.pngapi

关于 里面的 * $之类的,是redis数据备份的指定格式缓存

举个例子:

1eddd089307fdd4e3705bf4c7a1e307a.png

格式说明以下:

*4 #表示有4个参数

$4 #表示“参数”有三个字节(“HSET”字符串为4个字节)

hset #执行的命令服务器

$8 # key有 8个字节

wolys101 #key对应的值

$6 #field对应的长度

passwd #field对应的值

$12 # value的长度

wolysopen111 #value的值

# 一条语句结束

每行默认以 \r\n 结尾

同时在执行玩一行后,以 \r\n 代码一条语句结束

执行以下指令:

mysql -uroot -p redis –skip-column-names –raw < events_to_redis.sql | redis-cli –pipe -a ireanlau

-N, –skip-column-names //不显示列信息

-r, –raw //写列的值而不转义转换。

-a 是redis指定登录密码的选项

8b34635194064203dadac773d4413ff6.png

操做成功;查看redis

bca3e66d0c2cff99ef0bdb81ca34ac68.png

操做成功。

再谈redis to mysql

这里采用C/C++ api

链接redis和 mysql参见博客中相应的博文。

8517762d3da68d24202d948cde03a0a5.png

先查看mysql对应数据表中的数据:

fa2835325004a654888093b173a3bcf0.png

redis当前没有键值对

8d0966dcc272e0e0563365a9f5e6e478.png

为hash插入 3 个键值对

11ae493d23d371f5c0e13218c642542d.png

执行启动脚本:

f0cb6e6ef34e6fd4076c9ef4b1327dcb.png

产看mysql:

0f7fc878a75a8dc73b6aa4bb7c17fbd3.png

操做成功!

自动化功能的实现,计划采用crontab定时功能,定时对两个数据流进行刷入。

至此,全部功能阐述完毕。

完整代码请戳:https://github.com/IreanLau/redis-mysql.git

本手册由ireanlau我的整理,仅供学习交流,不可作商业用途

版权请联系 isislau@yeah.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值