系统开发中时常会需要缓存来提升并发读的能力,这时可以通过mysql的UDF和hiredis来进行同步
A UDF(user defined functions) plugin for MySQL, which can be used for pushing data to Redis
https://github.com/jackeylu/mysql2redis
This is used to move the mysql data to redis or from redis to mysql.
https://github.com/zhangjg/mysql2redis
MySQL Syncer is a project which parse mysql binlog and sync to other datases, such as redis, mongodb and any other databases..
https://github.com/Terry-Mao/MySQL-Syncer
前题:安装了mysql5.5和client
1、安装mysql2redis
- git clone https://github.com/jackeylu/mysql2redis.git
- cd mysql2redis
- ./install.sh
2、安装hiredis
- git clone http://github.com/redis/hiredis
- cd hiredis
- make && make install
3、安装mysql json udf
- git clone https://github.com/mysqludf/lib_mysqludf_json.git
- cd lib_mysqludf_json
- gcc $(/usr/local/mariamysql/bin/mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
然后将lib_mysqludf_json.so拷贝到mysql的plugin
在mysql里执行lib_mysqludf_json.sql
4、在mysql里创建table,trigger
- CREATE TABLE IF NOT EXISTS `test`.`t_users` (
- `user_name` VARCHAR(50) NOT NULL ,
- `nick_name` VARCHAR(100) NOT NULL ,
- `password` VARCHAR(32) NOT NULL ,
- `age` INT NULL ,
- `create_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
- PRIMARY KEY (`user_name`) ,
- UNIQUE INDEX `un_t_users_nick_name` (`nick_name` ASC) )
- ENGINE = InnoDB;
- DELIMITER |
- create trigger tri_users_redis_json BEFORE INSERT on t_users
- For EACH ROW
- BEGIN
- DECLARE done INT DEFAULT 999;
- set done = redis_command("127.0.0.1",6379,concat("set user::",cast(NEW.user_name as CHAR)," ",json_object(NEW.user_name as userName,NEW.nick_name as nickName,NEW.age as age)));
- if done>0 then
- SIGNAL sqlstate '45001' set message_text = "Redis error! ";
- end if ;
- END;
- |
- DELIMITER ;
- insert into t_users(user_name,nick_name,password,age,create_time) values('Sally','雪莉','123456',25,CURRENT_TIMESTAMP)
mysql的
redis的
使用mysql的udf和trigger可以保证mysql和redis的数据一致性,SIGNAL sqlstate '45001'会在redis失败时回滚事物。
问题:hiredis里递交带空格数据需要这样使用
- reply = redisCommand(context, "SET key:%s %s", myid, value);
那么对于mysql2redis的redis_command是无法工作的,这部分可以为不同命令单写函数。如redis_command_set。
为了得到更好的灵活性,现在在使用gearman的UDF client,php的worker联合工作。
相关推荐
MySQL作为数据存储引擎,Redis则作为Cache。采用Gearman+PHP+MySQL UDF的组合异步实现MySQL到Redis的数据复制。
数据库的高级使用技巧 数据库的高级使用技巧 数据库的高级使用技巧
4、所有的配置文件,包括nginx、redis、mysql、nacos、seata等,都是部署后脚本自动生成的,如需优化,后续进入默认目录:/data下修改对应配置文件即可 5、nginx的配置文件默认配置了admin后台的(适用于vue前端),...
9、为什么 Redis 需要把所有数据放到内存中? 10、Redis 集群方案应该怎么做?都有哪些方案? 11、Redis 集群方案什么情况下会导致整个集群不可用? 12、MySQL 里有 2000w 数据,Redis 中只存 20w 的数据, 如何保证...
它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发访问的需求。 安全性与管理工具 MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密...
它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发访问的需求。 安全性与管理工具 MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密...
它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发访问的需求。 安全性与管理工具 MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密...
12、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 13、Redis 有哪些适合的场景? 14、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 15、Redis 和 Redisson 有什么关系? 16、Jedis 与 ...
1个Nginx+2个tomcat+2个redis服务器(主从复制)实现反向代理,实现动静分离。 - 张相逢的博客 - CSDN博客 Nginx的个人理解 - fly1056601582的博客 - CSDN博客 Redis 集合(Set)_redis教程 mysql、zookeeper、redis和...
创建由“运河”标识的用户运河; 上的GRANT SELECT,复制从属,复制客户端。 到'canal'@'%'; -授予所有特权。 到'canal'@'%'; 冲洗特权;
│ │ 2_MySQL传统复制手动切换和GTID复制原理及切换.mp4 │ │ 3_Mycat原理和schema配置讲解.mp4 │ │ 4_Mycat schema配置讲解.mp4 │ │ 5_Mycat企业高可用配置.mp4 │ │ 作业.docx │ │ │ └─MySQL DBA ...
首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分。 redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单...
- Canal 是一个用于将 MySQL 数据同步到其他地方(如 Redis、Elasticsearch)的包。它首先会导出 MySQL 数据,然后以增量方式同步更改的数据,使用 binlog。 **Client(客户端)**: - Client 包支持一个简单的 ...
自用学习的项目.结合maven聚合,redis,mysql主从复制,dubbo,以及一系列该并发的前沿技术的项目
lepus监控完整版,SQL server MYSQL redis 系统资源 oracle
DBA MySQL数据库工程师(2021版)视频教程 课程大纲: 第1章 MySQL简介及安装 第2章 MySQL基础管理 第3章 SQL语句基础应用 第4章 索引的基本管理 ...第18章 MySQL高可用之组复制实战 第19章 NewSQL-TiDB 第20章 测试
redis-mmm - redis 多主复制管理器 重要提示:该项目被 redis 核心中的 redis-sentinel 功能取代。 不要使用redis-mmm! 这个项目是将mysql-mmm的很多想法移植到redis上。 这也解释了该名称是对 mysql-mmm 项目的...
1.4 Redis类似mysql可以进行主从复制,可以实现读写分离; 1.5 Redis由于是内存中数据集存储的,故对内存的要求较高,对海量数据处理有限制; 1.6 Redis主从复制时,由于宕机或其他情况一起,导致最后部分数据可能...
我感觉很不错的宝贝,现在和大家分享,希望能够帮到大家,如果你需要可以下载看看,很适合喜欢研究技术的人员
云服务器环境安装,包括mysql,nginx,java,redis一站式安装,博主已把坑填好,只需要复制粘贴就好了