redis高并发开发,时不时的会发现数据不一致问题,不知道你有没有更好的方法,这里简单的方案 提供给您,不知道对您有没有帮助。
缓存就是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
解决方案:
canal的原理是模拟Slave向Master发送请求,canal解析binlog,但不将解析结果持久化,而是保存在内存中,每次有客户端读取一次消息,就删除该消息。
技术实现要素:
针对现有技术存在的不足,本发明的目的在于提供一种基于Redis的实时缓存更新方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于Redis的实时缓存更新方法,包括以下步骤,
S1、实时获取用户对数据库中的数据的修改信息;
S2、基于修改信息修改数据库中的数据并对应数据库数据的修改生成binlog信息;
S3、接收数据库推送的binlog信息,将binlog信息解析;
S4、获取并将解析后的binlog信息转化为与缓存数据库中数据对应的更新信息;
S5、基于更新信息修改缓存数据库中的数据。