缓存数据与持久化数据的一致性,这个问题总结了一下(看到了一个不错的博文),其实就是读和写,还有就是要注意谁先谁后的问题。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了python,Ruby,Erlang,PHP客户端,使用很方便。

1. 按照我们一般的使用Redis的场景应该是这样的:

也就是说:我们会先去redis中判断数据是否存在,如果存在,则直接返回缓存好的数据。而如果不存在的话,就会去数据库中,读取数据,并把数据缓存到Redis中。

  适用场合:如果数据量比较大,但不是经常更新的情况(比如用户排行)

2. 而第二种Redis的使用,跟第一种的情况完成不同,具体的情况请看:

这里我们会先去redis中判断数据是否存在,如果存在,则直接更新对应的数据(这一步会把对应更新过的key记录下来,比如也保存到redis中比如:key为:save_update_keys【用lpush列表记录】),并把更新后的数据返回给页面。而如果不存在的话,就会去先更新数据库中内容,然后把数据保存一份到Redis中。

NO10这步:后面的工作:后台会有相关机制把Redis中的save_update_keys存储的key,分别读取出来,找到对应的数据,更新到DB中。

优点:这个流程的主要目的是把Redis当作数据库使用,更新获取数据比DB快。非常适合大数据量的频繁变动(比如微博)。

缺点:对Redis的依赖很大,要做好宕机时的数据保存。(不过可以使用redis的快照AOF,快速恢复的话,应该不会有多大影响,因为就算Redis不工作了,也不会影响后续数据的处理。)

难点:在前期规划key的格式,存储类型很重要,因为这会影响能否把数据同步到DB。

转载地址:http://blog.csdn.net/seapeak007/article/details/53410553

转载于:https://www.cnblogs.com/chenhaoyu/p/8310886.html

Redis与数据库同步问题相关推荐

  1. Redis和数据库 数据同步问题

    Redis和数据库同步问题 缓存充当数据库 比如说Session这种访问非常频繁的数据,就适合采用这种方案:当然了,既然没有涉及到数据库,那么也就不会存在一致性问题: 缓存充当数据库热点缓存 读操作 ...

  2. Redis 缓存数据库使用 Redis-Shake 做数据同步

    目录 Redis 缓存数据库使用 Redis-Shake 做数据同步 Redis-shake 简介 Redis-Shake 同步的五种模式 基本原理 部署过程 同步模式 restore 模式 dump ...

  3. springboot整合redis实现HyperLogLog统计文章浏览量使用过期策略完成数据库同步

    springboot整合redis实现HyperLogLog统计文章浏览量&&使用过期策略完成数据库同步 本文目录 springboot整合redis实现HyperLogLog统计文章 ...

  4. redis mysql主从同步_手撕Redis,主从同步

    原标题:手撕Redis,主从同步 一.主从同步的工作原理 redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令.无论是第一次连接还是重新连接,mast ...

  5. MySQL与Redis一致性解决同步问题

    SpringBoot整合Redis的注解版本 @RestController public class MemberController { @Autowired private UserMapper ...

  6. Redis 缓存数据库

    Redis 缓存数据库 第1章 Redis简介: redis是使用C语言编写的开源的,支持网络,基于内存,可持久性的键值对存储数据库,2013年5月之前,Redis是最流行的键值对存储数据库 Redi ...

  7. Redis缓存数据库服务器

    Redis缓存数据库服务器 Redis是一个开源的科技与内存也可持久化的日志型.Key-Value数据库 Redis的存储分为内存存储.磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置. ...

  8. Redis和数据库的结合

    使用 Redis 可以优化性能,但是存在 Redis 的数据和数据库同步的问题,这是我们需要关注的问题.假设两个业务逻辑都是在操作数据库的同一条记录,而 Redis 和数据库不一致. Redis 和数 ...

  9. Redis与数据库缓存一致性问题

    一.Redis 数据一致性问题产生的原因 对 Redis和数据库的操作有 2 种方案: 1.先操作(删除) Redis,再操作数据库 2.先操作数据库,再操作(删除) Redis 上述二种方案,都希望 ...

最新文章

  1. 华为 Java 编程军规 !
  2. 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
  3. IEnumerator,IEnumerable,IEnumerableT
  4. java uuid静态方法_Java UUID getLeastSignificantBits()方法与示例
  5. Android学习之android源码的导入
  6. Lc5-最长回文字串
  7. .net Core 学习笔记(实体字段映射,IOC注入)
  8. codeforces332B - Maximum Absurdity 线段数 or dp
  9. Scrapy 框架爬取 武动乾坤小说
  10. 老板平常多说点好听的
  11. mysql8.0默认端口_mysql 8.0.19 安装 及 端口修改
  12. seo知识技巧-关键词密度选取技巧
  13. 《项梵自述》分享我的心酸经历
  14. 淘宝天猫店铺微信公众平台建设指南
  15. 干货,QQ音乐歌手列表解密方法!
  16. Google浏览器打开新页面会覆盖当前页面的问题(打开新页面)
  17. 哪些平台可以查看医学类文献?
  18. Android 热修复原理篇及几大方案比较
  19. 微信小程序md5加密支持中文和特殊字符
  20. 学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD

热门文章

  1. Redis为什么默认16个数据库,干什么用?
  2. 《论文笔记》Adaptive decentralised_cooperative_vision_based_simultaneous_localization_and_mapping_for_mult
  3. CSS3 创建简单的网页动画 – 实现弹跳球动
  4. 通过ping命令查看服务器是linux还是windows系列
  5. 多线程之多生产多消费者
  6. codeforces 297 E. Anya and Cubes
  7. VC中对CString 的读写(ini文件)
  8. 在输出终端中消除多余空格
  9. [原创]红马版验证码实现(中文+变形+噪点)
  10. 2019最后一个月Python继续霸榜,想上车?看这份书单