IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Redis数据结构、分布式锁、穿透、击穿、雪崩、数据一致性及主从同步 -> 正文阅读

[数据结构与算法]Redis数据结构、分布式锁、穿透、击穿、雪崩、数据一致性及主从同步

Redis有哪些数据结构及典型应用场景

1、字符串:可以缓存简单的字符串,也可以缓存json格式的字符串,redis分布式锁,计数器,Session共享,分布式ID。

2、哈希表:key-value,存储对象。

3、列表:列表通过命令的组合,既可以当做栈,也可以做队列来使用,可以缓存类似微信公众号、微博等消息流数据。

4、集合:类似列表,可存储多个元素,不可重复,集合可进行交集、并集、差集操作,实现共同关注、朋友圈点赞等功能。

5、有序集合:集合是无序的,有序集合可以设置顺序,实现排行榜功能

Redis分布式锁底层实现

1、利用setnx来保证,如果key不存在才能获取到锁,如果key存在,则获取不到锁

2、利用lua脚本保证多个redis操作的原子性

3、考虑到锁过期,需要额外一个看门狗定时任务来监听锁是否需要续约

4、考虑到redis节点挂掉后的情况,需要采用红锁的方式来同时向N/2 +1个节点申请锁,都申请了才能证明获取锁成功,这样就算一个节点挂了,锁也不能被其他客户端获取到

缓存穿透:某一时刻访问redis的大量key都在redis中不存在,重点:不存在的数据,解决方案,布隆过滤器,拦截不存在的key

缓存击穿:某一热点key突然失效,导致了大量请求直接访问Mysql数据库,解决方案,不设置过期时间

缓存雪崩:某一时刻大批热点数据同时过期,解决方案,过期时间增加随机值

Redis和Mysql如何保证数据一致性

1、先更新Mysql,再更新Redis,如果缓存更新失败,可能导致不一致;

2、先删除Redis缓存,再更新Mysql,再次查询的时候将数据添加到缓存中;此方案,在高并发下性能较低,且会出现数据不一致的问题,e.g.线程1删除了缓存,正在更新Mysql,此时线程2查询,将数据库的旧数据又查到了缓存中;

3、延时双删,先删除Redis缓存数据,再更新Mysql,延迟几百毫秒再删除Redis缓存数据;延迟的时间考虑到Mysql数据更新时间+主从同步时间;

Redis主从复制的核心原理

1、集群启动时,主从库间先建立连接,主库将所有数据同步给从库,从库收到数据后,在本地完成数据加载,此过程依赖内存快照RDB

2、在主库将数据同步给从库的过程中,主库不会阻塞,任然可以正常接收请求。主库会在内存中用专门的replication buffer记录RDB文件生成收到的所有写操作,当主库完成RDB文件发送后,就会把replication buffer中修改操作命令发送给从库,从库再执行这些操作。

3、后续主库和从库都可以处理客户端读操作,写操作只能交给主库处理,主库收到写操作后,依然将写操作发送给从库,实现增量同步。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 13:04:40  更:2021-10-27 13:05:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:38:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码