Redis 学习汇总

52 阅读2分钟

Redis预热:

image.png

image.png

thiking:有点像异步线程,等待单线程处理的结果,没结果时候继续做自己的事情,不会阻塞当前线程,当得到结果后,才进行后续处理。

基本数据类型:

image.png

image.png

image.png

image.png

image.png

ziplist的内存布局

ziplist是由一系列特殊编码的连续内存块组成的顺序存储结构,类似于数组,ziplist在内存中是连续存储的,但是不同于数组,为了节省内存 ziplist的每个元素所占的内存大小可以不同,每个节点可以用来存储一个整数或者一个字符串。

ziplist类似于双向链表,但是它不存储上一个节点和下一个节点的指针,而是存储上一个节点长度和当前节点长度,通过牺牲部分读写性能,来换取高效的内存空间利用率,节约内存。

ziplist的特点

压缩列表ziplist结构本身就是一个连续的内存块,由表头、若干个entry节点和压缩列表尾部标识符zlend组成,通过一系列编码规则,提高内存的利用率,使用于存储整数和短字符串。

压缩列表ziplist结构的缺点是:每次插入或删除一个元素时,都需要进行频繁的进行内存的扩展或减小,然后进行数据”搬移”,甚至可能引发连锁更新,造成严重效率的损失。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Redis事务

image.png

image.png

Multi是组队阶段,可以理解为把将要执行的命令加入到队列中,而discard可以理解为我不想再执行这个组队命令了,将它们回滚处理。而exec就相当于提交事务。

image.png

image.png

组队时候有报错,则整个取消。执行阶段有报错,则把报错的不执行,其他正常执行。

image.png

image.png

RDB:

image.png

image.png

写时复制技术:在替换真正的文件之前,先将当前内容复制到一个临时文件中,之后临时文件替换当前文件。防止redis正在操作过程中进行rdb导致数据缺失,不一致。

image.png

image.png

AOF

image.png

image.png

image.png

image.png

image.png

image.png

image.png

重写操作和rdb相似,fork

image.png

image.png

image.png

image.png

RDB/AOF 总结:

image.png

image.png

image.png

主从复制

image.png

哨兵模式

image.png

image.png

image.png

集群

image.png

缓存穿透

image.png

image.png

image.png

缓存击穿

image.png

image.png

image.png

image.png

image.png

缓存雪崩

image.png

image.png

image.png

image.png