首页 >

查询mysql超时sql,redis和数据库如何保证一致性 – 数据库 – 前端,关闭mysql所有进程

mysql ce,mysql不要过多join,mysql查询行数为0,python3.5操作mysql,mysql有bool,关闭mysql所有进程查询mysql超时sql,redis和数据库如何保证一致性 - 数据库 - 前端,关闭mysql所有进程

大家在是使用redis过程中,通常会这样做,先读取缓存,如果缓存不存在,则读取数据库。

不管是先写库,再删除缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。

因为写和读是并发的,没法保证顺序,如果删除了缓存,还没有来得及写库,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。

如果是redis集群,或者主从模式,写主读从,由于redis复制存在一定的时间延迟,也有可能导致数据不一致。

2、优化思路

(1)读操作优先读取redis,不存在的话就去访问MySql,并把读到的数据写回Redis中;

(2)写操作的话,直接写MySql,成功后再写入Redis,替换掉原来的旧数据(可以在MySql端定义CRUD触发器,在触发CRUD操作后写数据到Redis,也可以在Redis端解析binlog,再做相应的操作)

(3)设定合理的超时时间,即经过超时时间,自动将redis中相应的数据删除。这样最差的情况是在超时时间内,内存存在不一致。当然这种策略要考虑redis和数据库主从同步的耗时,所以在第二次删除前最好休眠一定的时间,比如500毫秒,这样无疑又增加了写请求的耗时。

mysql ce,mysql不要过多join,mysql查询行数为0,python3.5操作mysql,mysql有bool,关闭mysql所有进程查询mysql超时sql,redis和数据库如何保证一致性 - 数据库 - 前端,关闭mysql所有进程


查询mysql超时sql,redis和数据库如何保证一致性 - 数据库 - 前端,关闭mysql所有进程
  • mysql获取查询状态,查询mysql哪些表正在被锁状态 - 数据库 - 前端,mysql 登录时间超时
  • mysql获取查询状态,查询mysql哪些表正在被锁状态 - 数据库 - 前端,mysql 登录时间超时 | mysql获取查询状态,查询mysql哪些表正在被锁状态 - 数据库 - 前端,mysql 登录时间超时 ...

    查询mysql超时sql,redis和数据库如何保证一致性 - 数据库 - 前端,关闭mysql所有进程
  • mysql排名查询,java应该学习什么 - 数据库 - 前端,log4net mysql 博客园
  • mysql排名查询,java应该学习什么 - 数据库 - 前端,log4net mysql 博客园 | mysql排名查询,java应该学习什么 - 数据库 - 前端,log4net mysql 博客园 ...

    查询mysql超时sql,redis和数据库如何保证一致性 - 数据库 - 前端,关闭mysql所有进程
  • mysql运行sql文件出错 - 数据库 - 前端,mysql 能力
  • mysql运行sql文件出错 - 数据库 - 前端,mysql 能力 | mysql运行sql文件出错 - 数据库 - 前端,mysql 能力 ...