压缩列表的源码实现

压缩列表ziplist本质上就是一个字节数组,是Redis为了节约内存而设计的一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数。 Redis的有序集合、散列和列表都直接或者间接使用了压缩列表。当有

【Redis源码】RDB持久化源码实现

RDB快照有两种触发方式,其一为通过配置参数,例如在配置文件中写入如下配置: save 60 1000 则在60秒内如果有1000个key发生变化,就会触发一次RDB快照的执行。 其二是通过在客户端执行bgsave命令显式触发一次RDB快照的执行。

【Redis源码】Redis 6 ACL源码详解

本文主要是讲解Redis 6的ACL的实现原理。基本使用详见:Redis 6.0新特性——ACLs,以及Redis启动过程分析。

【Redis源码】setbit命令

setbit命令对key所存储的字符串值,设置指定偏移量上的比特位。 格式: setbit key offset value 返回值: 返回指定偏移量原来存储的位。

【Redis源码】mget命令

通过get命令只能获取单个key的值,如果想获取多个key的值,可以通过mget命令来实现。mget返回所有指定key的值。 格式: mget key [key …]

【Redis源码】strlen命令

strlen命令从数据库中获取到value,返回value字符串的长度。 格式: strlen key

【Redis源码】setrange命令

setrange命令主要用于设置value的部分子串,设置时将值从偏移量offset开始覆盖成value值。如果偏移值大于原值的长度,则偏移量之前的字符串由“\x00”填充。 命令格式: setrange key offset value

【Redis源码】append命令

数据库已经有了key,它的值为value。当我们发现value值需要追加字符串却又不想直接用set命令覆盖原值时,可以用append命令来实现。 命令格式: append key value 说明: 将value追加

【Redis源码】mset命令

通过set、setex等命令只能设置单个字符串到数据库,当我们想一次性设置多个字符串时,可以使用mset或msetnx命令来解决。 格式: mset key value [key value ...] msetnx ke

【Redis源码】setnx、setex、psetex命令

在了解了set的原理之后,setnx、setex、psetex命令的原理我们也应该大致了解了,这3个命令也是先调用了tryObjectEncoding将值优化,再调用setGenericCommand将key-value