![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 92
7rulyL1ar
绵薄之力
展开
-
Redis5.0 数据结构之整数集合intset源码详解
文本将基于源码分析Redis中整数集合intset的数据结构以及各操作的实现。本文源码版本为Redis 5.0,本篇博文中出现的源码均可以在intset.h以及intset.c两个文件中找到。源码阅读不易,如出现纰漏或理解错误,还望读者指正。原创 2022-02-18 16:56:46 · 412 阅读 · 0 评论 -
深入理解Redis 事务机制及执行流程源码解析
本篇文章将从源码角度分析整个Redis事务执行的流程,包括MULTI、EXEC、DISCARD、WATCH命令的源码实现以及相关数据结构。本文源码版本为Redis 5.0,文中涉及到的源码均可在server.h、server.c以及multi.c三个文件中找到。源码阅读不易,如出现纰漏或理解错误还望指正。原创 2022-02-17 22:24:14 · 876 阅读 · 0 评论 -
Redis WATCH事务监视机制与回滚
笔者Redis事务相关文章链接:Redis 事务机制深入浅出概述Redis内置了WATCH命令,使用WATCH命令可以实现乐观锁的功能,在事务被EXEC命令执行前,如果此前被WATCH监视的某数据库键已经被修改过,则拒绝执行当前事务,返回空并重置客户端事务标识。在并发场景下易使用该命令,很容易理解,有并发的场景就有同步处理。WATCH的使用首先明确一点,底层实现中每个Redis客户端内都有一个用于标识事务状态的属性,在每一条命令送到服务器端时,在执行前都会先检查该属性,因为同一条命令在事务状态和非事原创 2022-02-17 15:03:36 · 1597 阅读 · 0 评论 -
Redis 事务机制深入浅出
什么是Redis事务Redis的事务就是一组命令的集合。Redis提供了将一组命令打包集合的方法,并且能够一次性、按顺序的执行多个命令,事务执行期间,服务器不会中断事务改为执行其他客户端的命令请求,只有事务中所有命令都执行完毕后,服务器才会处理其他客户端的命令请求。在开始说明事务的使用与基本流程之前,需要先说明关于Redis和事务的两个问题。Redis事务具有原子性吗?先给出结论:Redis单条命令具有原子性,Redis事务是否具有原子性存在争议。笔者认为关于Redis事务原子性的争议存在的主要原原创 2022-02-17 12:56:23 · 797 阅读 · 0 评论 -
Redis 哈希hash常用命令总结
Redis中文官网命令大全hash常用命令汇总命令语法语义hsethset key field value设置哈希集key中指定字段field的值为valuehmsethmset key field value [field value …]设置哈希集key中若干指定字段field的值为valuehsetnxhsetnx key field value在哈希集key中不存在字段field时,添加字段field并将其值设为valuehdelhdel k原创 2022-02-15 12:33:25 · 737 阅读 · 0 评论 -
Redis 集合set常用命令总结
Redis中文官网命令大全set常用命令汇总命令语法语义saddsadd key member [member …]添加若干指定元素member到key集合中,并返回成功添加元素个数spopspop key [count]与srandmember相似,随机移除并返回集合key中若干随机元素sremsrem key member [member … ]在集合key中移除指定元素,并返回成功移除元素个数scardscard key返回指定集合key中的原创 2022-02-14 22:12:25 · 1511 阅读 · 0 评论 -
Redis 5.0数据结构之压缩列表ziplist源码详解(二)
前文已经提及了压缩列表ziplist的主要设计初衷是尽量节约空间,因此设计出了一系列的压缩编码,将ziplist设计成了内存地址连续,使用基地址+偏移量的方式来访问压缩列表内节点,并且说明了压缩列表节点结构具有的属性以及相应的作用,通过源码分析了对于节点内各属性的编码的实现细节。原创 2022-02-12 18:07:20 · 725 阅读 · 0 评论 -
Redis 5.0数据结构之压缩列表ziplist源码详解(一)
Redis基于C语言开发,由于C并未内置链表,因此Redis自己实现了一系列链表,有双端链表linkedlist、压缩列表ziplist、快速链表quicklist等,本篇将从源码角度展现压缩列表ziplist。原创 2022-02-11 11:34:33 · 973 阅读 · 0 评论 -
Redis 字符串string常用命令总结
Redis中字符串string常用命令、语法、语义总结。原创 2022-02-08 15:13:24 · 772 阅读 · 0 评论 -
Redis 链表list常用命令总结
Redis 链表list常用命令汇总原创 2022-02-08 10:42:13 · 600 阅读 · 0 评论 -
Redis 5.0数据结构之双端链表linkedlist源码解析
概述链表可以提供高效节点重排和顺序性节点访问的方式,并且可以通过增删节点灵活的调整链表长度。Redis基于C语言开发,C语言并未内置链表,因此Redis自己实现了一系列链表,分别是双端链表linkedlist、压缩链表ziplist、快速链表quicklist等,本篇将从源码角度展现双端链表linkedlist。原创 2022-02-07 20:08:07 · 895 阅读 · 0 评论 -
Redis SDS简单动态字符串与C字符串的区别
本文只解析SDS与C字符串区别,建议搭配相关实现源码阅读,关于SDS源码实现,可以参考笔者之前的文章Redis 5.0数据结构之SDS简单动态字符串实现源码详解SDS概述Redis基于C语言实现,但Redis并没有采用C语言中传统的字符串表示,而是特别构建了一种叫做简单动态字符串(simple dynamic string)的数据结构,简称SDS,SDS是Redis中默认的字符串表示。C字符串只在无须对字符串值修改的场景下作为字面量使用,如日志打印,而在字符串值可能被修改的场景下,均使用SDS表示字符原创 2022-02-01 18:08:52 · 1664 阅读 · 0 评论 -
Redis 5.0数据结构之SDS简单动态字符串实现源码详解
基于Redis5.0源码分析SDS的实现,主要解析SDS的数据结构,通过源码分析了SDS的初始化流程、扩容、空间预分配和惰性空间释放。原创 2022-02-01 16:29:32 · 1355 阅读 · 0 评论