系统开发中时常会需要缓存来提升并发读的能力,这时可以通过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联合工作。
相关推荐
3. **Redis Sentinel**:除了基本监控,Redis Sentinel系统还可以监控主从复制集群的健康状况,提供故障转移功能。 三、集成监控工具——Prometheus和Grafana Prometheus是一款流行的开源监控和警报工具,它可以...
通过连接器,可以在MySQL查询后无缝地将结果保存到Redis,或者在Redis中检索数据并插入MySQL。 3. 数据库设计:合理设计数据库结构,明确哪些数据适合缓存,哪些需要实时更新。例如,经常访问但不频繁更改的数据...
1. **主从复制**:Redis支持主从复制,主节点负责写操作,从节点只读,数据会实时同步到从节点。配置文件中的`redis.conf`需设置`slaveof`选项,指定主节点的IP和端口。 2. **哨兵系统(Sentinel)**:Redis Sentinel...
3. **配置Redis**:复制`redis.conf`示例配置文件到合适的位置(如`/etc/redis/redis.conf`),并按需求修改配置。 4. **启动Redis**:使用`redis-server /etc/redis/redis.conf`启动Redis服务。 5. **测试连接**...
#### 实现MySQL到Redis的数据复制 1. **Gearman服务端配置**: - 配置Gearman服务端,使其能够接收来自PHP的请求,并将这些请求分发给工作者节点。 2. **PHP脚本编写**: - 编写PHP脚本来监控MySQL数据库的变化,...
Redis支持数据的持久化,也可以通过网络将数据复制到其他服务器,用于实现主从同步。作为内存数据库,Redis的速度非常快,常被用作缓存服务,提高系统响应速度。同时,Redis还支持发布订阅模式,可以实现消息的发布...
在搭建主主复制架构时,MySQL可以实现数据的实时同步,提高系统的容错性和可用性。主主架构意味着两个节点都可以作为主节点写入数据,并将更改实时同步到对方,确保在任何节点故障时都能无缝切换。 Nginx是一款高...
2. 将`check_redis.pl`和`check_mysql_health`目录中的所有文件上传到Nagios服务器,并确保它们可执行。 3. 在Nagios服务器上配置服务定义,指定要监控的Redis和MySQL服务器,以及使用哪些插件进行检查。 4. 配置...
在给定的压缩包文件中,包含了三种流行的关系型和非关系型数据库系统:MySQL、MongoDB和Redis的安装程序。下面将详细介绍这三个数据库系统及其特点。 1. **MySQL**: MySQL是一款开源、免费的关系型数据库管理系统...
另外,了解Redis的持久化机制(如RDB和AOF)、主从复制、Sentinel高可用性和Cluster集群是深入学习的重要部分。 在压缩包文件"Kwan1117"中,可能包含以下资源: 1. MySQL教程:这些可能是PDF文档或视频课程,详细...
分布式系统是现代软件架构中的重要组成部分,它涉及多个独立运行的计算机节点,通过网络进行...以上是针对标题和描述中提及的各个技术领域可能涉及到的面试知识点,这些内容构成了一个全面的IT专业人士应掌握的基础。
Mysql集群的搭建通常涉及到主主复制或主从复制,这里使用了【Mycat】进行读写分离,即【mysql-170】和【mysql-171】互为主主,【mysql-170】和【mysql-172】为主从关系。这样,【mysql-170】主要负责写操作,【mysql...
- 插件提供了将MySQL中的数据实时同步到Redis的功能,便于利用Redis的高速缓存特性来提高应用性能。 - **使用步骤**: 1. **确保环境正确配置**: 包括MySQL、Redis的安装与配置。 2. **安装MySQL UDF for Redis...
3. **主从复制**:掌握配置Redis主从节点的方法,以及在故障转移时的处理策略。 4. **内存管理**:理解Redis的内存淘汰策略,如LRU(最近最少使用)、LFU(最不经常使用)等。 5. **集群模式**:了解Redis Cluster,...
通过Canal,MySQL中的数据可以实时更新到Redis,实现数据的快速访问和一致性的保持。 4. **Memcached**: Memcached是另一种内存对象缓存系统,用于减少数据库负载。类似于Redis,通过Canal,MySQL的更改可以即时...
在本项目中,"Python+Django+MySQL+Redis的医院挂号系统源码"是一个采用现代Web技术构建的医疗预约平台。以下将详细介绍这个系统的关键组成部分及其相关知识点: 1. Python:作为后端的主要编程语言,Python以其...
在IT行业中,数据库管理和服务器配置是核心技术之一,而MongoDB、MySQL、Nginx、Redis以及Zookeeper在这些领域中都有着重要地位。这些技术在不同的场景下各有所长,掌握它们对于开发者和运维人员来说至关重要。以下...
面试时会测试对键值对数据结构的理解(如字符串、哈希、列表、集合、有序集合),以及Redis持久化机制(RDB和AOF)、事务、发布订阅、主从复制和哨兵系统等知识。 4. **消息队列(MQ)**: 消息队列用于解耦系统组件...
本资料包主要聚焦于`Golang`、`MySQL`和`Redis`这三个核心主题,这些都是现代互联网开发中不可或缺的技术组件。 **Golang** Go语言,又称为Golang,由Google开发,设计时注重简洁、高效和可移植性。它支持并发编程...
数据库的高级使用技巧 数据库的高级使用技巧 数据库的高级使用技巧