redis持久化到mysql的方案_redisDB

本文介绍了一种基于Redis和MySQL的高可用数据持久化策略,通过Redis缓存失效时实时同步到MySQL,利用消息队列协调DB操作,提供稳定的性能。特别关注了配置优化、性能损耗及潜在问题如IO阻塞。
摘要由CSDN通过智能技术生成

软件简介

基于redis和mysql的数据持久化方案

redis运行时连接数据库 cache失效时同步读mysql, 数据修改时候通过消息队列通知DB线程写mysql reids.conf增加几个配置选项

mysql_host

mysql_port

mysql_user

mysql_pwd

mysql_dbname

persistence_mmap_file: 消息列队指定的mmap映射文件

write_thread_num 写DB线程数

对key的命名有规范 “tablename_ID(int)”形式, 如果仅仅是 “tablename” 则系统解析的时候ID默认为0 例如 “user_1”

系统会自动对应”user”表的ID为1的行 “user_0” 或者 “user” 系统会自动对应”user”表的ID为0的行

目前支持 string, list, zset, 以及incr 格式, mysql表结构不需要自己定义,系统自动映射 消息队列采用无锁队列,

支持mmap与malloc两种方式, 采用mmap方式理论上在程序意外死掉的时候不丢失队列数据 经过压力测试, 修改前和修改后的redis性能损耗为10%

- 20%, 后期会考虑再进行优化 另外因为是同步读DB, 如果大量的cache失效会带来严重的io阻塞, 从而影响性能,

后期考虑加入配置选项在redis启动以后主动从db恢复数据

基于redis 2.6.16修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值