首页 > 数据库 >MySql与Redis

MySql与Redis

时间:2024-11-05 21:08:08浏览次数:2  
标签:缓存 删除 Redis redis key MySql 数据

MySql与Redis

1.Redis和MySQL如何保持数据一致性

数据同步可以有延时

一、延时双删策略

在写库前后都进行redis.del(key)操作,并且设定合理的超时时间。

public void write( String key, Object data ){ 
    redis.delKey( key );  //删除redis缓存
    db.updateData( data ); //修改数据库
    Thread.sleep( 500 ); //睡眠一会儿
    redis.delKey( key );//再次删除redis缓存 ,防止-》[多线程在修改数据库完前,再次获取数据更新redis]
}
//问题:这个500毫秒怎么确定的,具体该休眠多久时间呢?
//1、需要评估自己的项目的读数据业务逻辑的耗时。
//2、这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。
//3、当然这种策略还要考虑redis和数据库主从同步的耗时。
//4、最后的的写数据的休眠时间:则在读数据业务逻辑的耗时基础上,加几百ms即可。
  • 因为第一次删除的是还没更新前的数据,第二次删除则是因为读取的并发性导致的缓存重新写入数据出现的垃圾数据。

二、中间件通知(MQ、Canal)

  • MQ中间件:数据更新后,就通知缓存删除。
  • Canal中间件:Canal伪装成MySQL的从节点,通过读取binlog数据来更新缓存,神奇又方便,而且不需要改业务代码!

数据高度一致性:加锁

想要达到强一致性,我们可以借助Redisson提供的读写锁!!!

  • 共享锁(读锁readLock):一旦加上这个锁,其他线程就可以共享读操作,不会互相干扰,真是好帮手!
  • 排他锁(独占锁writeLock):这个锁更霸道,一旦加上,其他线程就别想读写操作了,得乖乖等着。

标签:缓存,删除,Redis,redis,key,MySql,数据
From: https://www.cnblogs.com/21CHS/p/18528860

相关文章

  • 二十三、Mysql8.0高可用集群架构实战
    文章目录一、MySQLInnoDBCluster1、基本概述2、集群架构3、搭建一主两从InnoDB集群3.1、安装3个数据库实例3.2、安装mysqlrouter和安装mysqlshell3.2.1、安装mysql-router3.2.2、安装mysql-shell3.3、InnoDBCluster初始化3.3.1、参数及权限配置预需求检测3.3.2、初......
  • python当中,从mysql获取带有列的数据
    #当做一个外部函数defconnect_database(query):#mysql的连接配置conn=pymysql.connect(host='localhost',#本机地址port=3306,#mysql的端口号user='root',#mysql的管理员账号password='1fcSCyYOFRDxKwd',#密码......
  • MySQL数据库理论与知识剖析
    MySQL数据库理论与知识剖析在信息技术领域,数据库作为数据存储、管理和分析的核心工具,扮演着举足轻重的角色。MySQL,作为开源数据库管理系统中的佼佼者,以其高效、灵活和易用的特点,成为了众多企业和开发者的首选。本文旨在深入剖析MySQL数据库的理论基础与关键知识,帮助读者更......
  • MySQL server 免安装教程
    1,下载免安装包-社区版本https://dev.mysql.com/downloads/file/?id=5343202,解压放到一电脑某个路径下,整个包3,创建data文件夹和my.ini文件my.ini代码照抄,注意修改路径,与解压后的安装包地址一致[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir="D:\\s......
  • 如何在虚拟机上安装MySQL5.7和彻底在虚拟机上删除MySQL5.7
    一、安装MySQL数据库5.7版本​在部署hive时,我的主节点为hadoop1,从节点为hadoop2和hadoop3,软件为VMware的centos9。在hadoop1节点使用yum在线安装MySQL5.7版本。在root用户下执行:1.更新密钥rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-20222.安装Mysqlyum......
  • 实时数仓及olap可视化构建(基于mysql,将maxwell改成seatunnel可以快速达成异构数据源实
    1.OLAP可视化实现(需要提前整合版本)Linux121Linux122Linux123jupyter✔spark✔✔✔python3+SuperSet3.0✔hive✔ClinckHouse✔Kafka✔✔✔Phoenix✔DataX✔maxwell✔Hadoop✔✔✔MySQL✔......
  • 解决linux将csv连入mysql数据库的问题
    创建一个csv文件路径在/opt/module/data/123.csv0.登入数据库:mysql-uroot-p123456root是用户名 123456是密码1.使用数据库(user库[自己创建的库])(以下都是mysql操作)useuser;2.在mysql数据库中创建对应表(最好别设置主键和限制,csv数据不一定干净)create tablestud......
  • MySQL导入sql文件报错:2006 - MySQL server has gone away(转载)
    今天在在MySQL导入sql文件,导入失败,出现如下错误:2006-MySQLserverhasgoneaway,之前也遇到过,又一次遇到,还是记录一下吧!【问题】导入的sql文件大概有15M,导入过程中报错:2006-MySQLserverhasgoneaway  【解决办法】1、找到MySQL安装目录下的my.ini文件,修改max_allo......
  • mysql基础知识
    数据库是系统化的工具,用来存放、检索和分析数据。它的核心价值在于帮助我们高效地处理信息,确保数据的准确性和安全性。想象一下,如果没有数据库,我们可能需要用无数的文件柜来存放各种文件,查找信息时就得一个一个翻,这很低效。数据库的出现,就像是给这些文件柜装上了智能搜索系统,......