图解Redis
文章平均质量分 93
小林coding
公众号 : 「小林coding」 专注图解计算机基础,期待你的关注,保证把你图解的明明白白。
展开
-
Redis 的大 Key 对持久化有什么影响?
当 AOF 写回策略配置了 Always 策略,如果写入是一个大 Key,主线程在执行 fsync() 函数的时候,阻塞的时间会比较久,因为当写入的数据量很大的时候,数据同步到硬盘这个过程是很耗时的。AOF 重写机制和 RDB 快照(bgsave 命令)的过程,都会分别通过fork()函数创建一个子进程来处理任务。创建子进程的途中,由于要复制父进程的页表等数据结构,阻塞的时间跟页表的大小有关,页表越大,阻塞的时间也越长;原创 2022-09-13 13:57:42 · 2619 阅读 · 2 评论 -
Redis 大 key 要如何处理?
大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。String 类型的值大于 10 KB;Hash、List、Set、ZSet 类型的元素的个数超过 5000个;原创 2022-08-08 12:14:31 · 5306 阅读 · 0 评论 -
如何用 Redis 实现分布式锁的?
今天跟大家聊聊两个问题:如何用 Redis 实现分布式锁?Redis 是如何解决集群情况下分布式锁的可靠性问题的?原创 2022-07-25 15:53:07 · 1981 阅读 · 0 评论 -
三种缓存策略:Cache Aside 策略、Read/Write Through 策略、Write Back 策略
我是小林。今天跟大家聊聊,常见的缓存更新策略。实际开发中,Redis和MySQL的更新策略用的是CacheAside,另外两种策略主要应用在计算机系统里。原创 2022-07-19 12:41:23 · 5710 阅读 · 0 评论 -
面试官:你确定 Redis 是单线程的进程吗?
这次主要分享 Redis 线程模型篇的面试题。Redis 是单线程吗?Redis 单线程模式是怎样的?Redis 采用单线程为什么还这么快?Redis 6.0 之前为什么使用单线程?Redis 6.0 之后为什么引入了多线程?原创 2022-07-18 13:26:08 · 2885 阅读 · 1 评论 -
面试官:Redis 过期删除策略和内存淘汰策略有什么区别?
大家好,我是小林。Redis 的「内存淘汰策略」和「过期删除策略」,很多小伙伴容易混淆,这两个机制虽然都是做删除的操作,但是触发的条件和使用的策略都是不同的。今天就跟大家理一理,「内存淘汰策略」和「过期删除策略」。发车!Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。先说一下对 key 设置过期时间的命令。设置 key 过期时间的命令一共有 4 个:当然,在设置字符串时,也可以同时对 key 设置过期时间,共有 3 种命令:如果你原创 2022-07-04 09:32:53 · 2398 阅读 · 3 评论 -
2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景
大家好,我是小林。我们都知道 Redis 提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。随着 Redis 版本的更新,后面又支持了四种数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增)。每种数据对象都各自的应用场景,你能说出它们各自的应用场景吗?面试过程中,这个问题也很常被问到,又比如会举例一个应用场景来问你,让你说使用哪种 Re原创 2022-06-13 14:40:06 · 3151 阅读 · 2 评论 -
为什么 Redis 要有哨兵机制?
作者:小林coding计算机八股文刷题网站:https://xiaolincoding.com大家好,我是小林。这次聊聊,Redis 的哨兵机制。为什么要有哨兵机制?在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis .原创 2022-05-19 10:46:31 · 3360 阅读 · 2 评论 -
趣说 | 数据库和缓存如何保证一致性?
数据库和缓存如何保证一致性?一天,老板说「最近公司的用户越来越多了,但是服务器的访问速度越来越差的,阿旺帮我优化下,做好了给你画个饼!」。程序员阿旺听到老板口中的「画饼」后就非常期待,没有任何犹豫就接下了老板给的这个任务。阿旺登陆到了服务器,经过一番排查后,确认服务器的性能瓶颈是在数据库。这好办,给服务器加上 Redis,让其作为数据库的缓存。这样,在客户端请求数据时,如果能在缓存中命中数据,那就查询缓存,不用在去查询数据库,从而减轻数据库的压力,提高服务器的性能。先更新数据库,还是先更新缓存原创 2022-03-31 11:01:06 · 3754 阅读 · 2 评论 -
什么是缓存雪崩、击穿、穿透?
什么是缓存雪崩、击穿、穿透?用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。因为 Redis 是内存数据库,我们可以将数据库的数据缓存在 Redis 里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。原创 2022-03-13 17:55:28 · 43259 阅读 · 13 评论 -
什么是缓存雪崩、击穿、穿透?
用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。因为 Redis 是内存数据库,我们可以将数据库的数据缓存在 Redis 里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。这三个问题也是面试中很常考察原创 2022-03-12 19:30:55 · 2040 阅读 · 1 评论 -
Redis 主从复制
大家好,我是小林哥。又来图解 Redis 啦。我在前两篇已经给大家图解了 AOF 和 RDB,这两个持久化技术保证了即使在服务器重启的情况下也不会丢失数据(或少量损失)。不过,由于数据都是存储在一台服务器上,如果出事就完犊子了,比如:如果服务器发生了宕机,由于数据恢复是需要点时间,那么这个期间是无法服务新的请求的;如果这台服务器的硬盘出现了故障,可能数据就都丢失了。要避免这种单点故障,最好的办法是将数据备份到其他服务器上,让这些服务器也可以对外提供服务,这样即使有一台服务器出现了故障,其他服原创 2022-03-12 19:25:58 · 9923 阅读 · 5 评论 -
Redis 是怎么实现 RDB 快照的?
大家好,我是小林哥。虽说 Redis 是内存数据库,但是它为数据的持久化提供了两个技术。分别是「 AOF 日志和 RDB 快照」。这两种技术都会用各用一个日志文件来记录信息,但是记录的内容是不同的。AOF 文件的内容是操作命令;RDB 文件的内容是二进制数据。关于 AOF 持久化的原理我在上一篇已经介绍了,今天主要讲下 RDB 快照。所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬间的画面和信息就记录到了一张照片。所以,RDB 快照就是记录某一个瞬间的内存数据,记录的原创 2022-03-12 19:21:56 · 2282 阅读 · 0 评论 -
为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林。Redis 为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理。因此,这次我们就来好好聊一下 Redis 数据结构,这个在面试中太常问了。注意,Redis 数据结构并不是指 String(字符串)对象、List(列表)对象、Hash(哈希)对象、Set(集合)对象和 Zset(有序集合)对象,因为这些是 Redis 键值对中值的数据类型,也就是数据的保存形式,这些对象的底原创 2021-12-01 14:23:28 · 9787 阅读 · 13 评论 -
图解 Redis | 不就是 AOF 持久化嘛
AOF 日志试想一下,如果 Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令,并且执行它,这不就相当于恢复了缓存数据了吗?这种保存写操作命令到日志的持久化方式,就是 Redis 里的 AOF(Append Only File) 持久化功能,注意只会记录写操作命令,读操作命令是不会被记录的,因为没意义。在 Redis 中 AOF 持久化功能默认是不开启的,需要我们修改 redis.conf 配置文件中的以下参数:AO.原创 2021-05-27 09:20:43 · 4394 阅读 · 16 评论