redis与mysql数据同步

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,

二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主

键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。

 1 String tbname = "login";
 2
 3 //获取mysql表主键值--redis启动时
 4 long id = MySQL.getID(tbname);
 5 //设置redis主键值--redis启动时
 6 redisService.set(tbname, String.valueOf(id));
 7
 8 System.out.println(id);
 9 long l = redisService.incr(tbname);
10 System.out.println(l);
11 Login login = new Login();
12 login.setId(l);
13 login.setName("redis");
14 redisService.hmset(String.valueOf(login.getId()), login);
15
16 boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",‘" + login.getName() + "‘)");
17 /**
18  *
19  * 队列处理器更新mysql失败:
20  *
21  * 清除缓存数据,同时主键值自减
22  */
23 if (!b){
24     redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
25 }
26 System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
27 System.out.println(redisService.get(tbname));
28 复制代码
时间: 2024-08-06 19:04:34

redis与mysql数据同步的相关文章

redis缓存mysql数据

redis (Remote Dictionary Server)是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器.这使得Redis可执行单层树复制. MySQL和Redis,自身都

高可用的并行MySQL数据同步及分布式

首先聊聊MySQL的数据分布式,目前最为常用的就是Replication(复制)技术.基于此技术外延开来有很多中架构,分类归结为如下: 1.树状结构(Master,Backup-Master,Slaves) 这种结构是目前Web系统用的最为通用的一种.整个系统有1个写入/更新点,即Master:Master-Backup和Slaves都是Replication的Master从库:多级Slave的原因是为了数据过滤和节省网络资源. 2.环状结构(Master-Master,Slaves) Dual

redis 从库数据同步失败——爬坑记

早上上班,发现redis的一个slave节点down了一个.对,没错,不是数据不同步那么简单,连redis服务进程都自动退出了. 场景:主从同步模式 master-->slave1 master-->slave2 master-->slave3 info状态: slave1,slave2 都是state=online,offset=5744884846,lag=1正常状态,slave3是state=send_bulk,offset=0,lag=0 1.重启redis操作 日志内容:WAR

mysql数据同步

随着各行业信息化水平的不断提升,各种各样的信息管理系统都被广泛使用,各系统间数据完全独立,形成了大量的信息孤岛.出于管理及决策方面的需求,实现各平台的数据同步是一个很迫切的需求,TreeSoft数据库管理系统整合了各主流数据库的数据访问及维护监控功能,实现了各主流数据库的互联互通,架起了一座数据同步的桥梁,便捷的实现了数据的同步交互. 一.首先在TreeSoft数据库中配置两个数据源信息 二.配置数据同步任务,并执行任务 三.同步结果数据查看确认 四.支持以下数据同步方案,好强大! 1.MySQ

Apache NiFi之MySQL数据同步到HBase

一.说明 将Apache NiFi做为关系型数据与非关系型数据库的数据同步工具使用,在此场景中需要将mysql导出的avro数据格式转化为json入库HBase 二.开拔 Ⅰ).配置ExecuteSQLRecord a).选择ExecuteSQLRecord 在Processor中搜索ExecuteSQLRecord b).配置ExecuteSQLRecord 1.创建Database Connection Pool 2.创建JsonRecordSetWriter 3.配置SQL select

mysql 触发器学习(可以将mysql数据同步到redis)

1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器: delimiter | create trigger t_trigger before insert on t  for each row begin set @x = "hello trigger";        set NEW.s1 = 55; end; | 1.3. 如果触发器创建错误,可能只能删除了,至少我试过不能replace drop trigger t_

Redis和MySQL数据一致中出现的几种情况

1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加载数据. 读请求: 不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取 写请求: 数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据) 2.MySQL和Redis处理不同的数据类型 MySQL处理实时性数据,例如金融数据.交易数据 Redis处理实时性要求不高的数据,例如网站最热贴排行榜,好友列表等 在并发不高的情况下,读操作

Elasticsearch+MySQL数据同步示例

一.安装Elasticsearch下载 https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html 二.在MySQL上新建库表(若已有库表可跳过) 建库脚本如下: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for contacts -- ---------------------------- D

MYSQL数据同步、复制、分发

MYSQL主从复制: 1,主从服务器都启用二进制日志,设置唯一ID,并相互建立连接的账号并授权: 2,从服务器主动向主服务器请求查询当前同步状态,并拉回数据: 主要相关命令: 查看主服务器状态:show master status\G; 查看从服务器状态:show slave status\G; 查看mysql I/O线程:show processlist\G; 配置从服务器复制:change master to {***}详见后面说明 启动从服务器复制:start slave; 授权用户:gr