随笔分类 -  redis

redis 事务学习笔记
摘要:本文摘抄自这里 相关命令和使用 MULTI:开启事物,redis会将后续的命令逐个放入队列中,然后使用EXEC命令来原子化执行这个命令队列 EXEC:执行事务中的所有操作命令 DISCARD: 取消事务,放弃执行事务块中的所有命令 WATCH:监视一个或多个key,如果事务在执行前,这个key(或多 阅读全文

posted @ 2022-11-29 12:00 每日问答

redis 持久化学习笔记
摘要:本文摘抄自这里 RDB 持久化 RDB 就是Redis DataBase 的缩写,中文名为快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于等于内存中的值 触发方式 手动触发 save 命令:阻塞当前Redis 服务器,直到RD 阅读全文

posted @ 2022-11-28 22:51 每日问答

redisOject 和 底层数据结构对应 学习笔记
摘要:笔记摘抄自 https://pdai.tech/md/db/nosql-redis/db-redis-data-type-enc.html redisObject 查看编码命令 set k1 1 object encoding k1 set k2 hello object encoding k2 字 阅读全文

posted @ 2022-11-28 11:54 每日问答 阅读(39) 评论(0) 推荐(0)

ZSkipList - 跳表
摘要:ZSkipList 在redis中的使用场景只有一个,那就是作为Zset的使用。ZSkipList的性能可以保证在查找,删除,添加等操作的时候在对数期望时间内完成,这个性能是可以和平衡树相比较的,而且在实现方面比平衡树要优雅。缺点是需要的存储空间较大,属于利用空间来换取时间的数据结构。 ZSkipL 阅读全文

posted @ 2022-11-22 12:04 每日问答

IntSet-整数集
摘要:IntSet 是集合类型的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,redis 就会使用 IntSet作为集合键的底层实现 InSet 结构 typedef struct intset { uint32_t encoding; uint32_t length; int8 阅读全文

posted @ 2022-11-22 11:28 每日问答 阅读(47) 评论(0) 推荐(0)

Dict - 字典/hash
摘要:哈希表结构定义 typedef struct dictht{ //哈希表数组 dictEntry **table; //哈希表大小 unsigned long size; //哈希表大小掩码,用于计算索引值 //总是等于 size-1 unsigned long sizemask; //该哈希表已有 阅读全文

posted @ 2022-11-22 11:18 每日问答 阅读(58) 评论(0) 推荐(0)

ZipList - 压缩列表
摘要:ziplist 是为了提高存储效率而设计的一种特殊编码的双向链表。它可以存储字符串或者整数,存储整数时是采用整数的二进制而不是字符串形式存储。它能在O(1)的时间复杂度下完成list两端的push和pop操作。但因为每次操作都需要重新分配内存,所以实际复杂度和ziplist的内存使用量相关。 zip 阅读全文

posted @ 2022-11-21 22:29 每日问答 阅读(134) 评论(0) 推荐(0)

SDS
摘要:redis 是用C语言写的,但是对于redis 的字符串,却不是C语言中的字符串,它自己构建了一种名为简单动态字符串的抽象对象(simple dynamic string, SDS) SDS 属性 len 保存了SDS字符串的长度 buf[] 数组用来保存字符串的每个元素 alloc 分别unit8 阅读全文

posted @ 2022-11-21 21:36 每日问答 阅读(98) 评论(0) 推荐(0)

redisObject 对象
摘要:原文链接 redisObject 在redis中,不同的数据类型有不同的操作命令。如: LPUSH 和 LLEN 只能用于列表键, 而 SADD 和 SRANDMEMBER 只能用于集合键。 因此redis 必须让每个键都带有类型信息,是的程序可以检查键的类型,并为它选择合适的处理方式, 操作数据类 阅读全文

posted @ 2022-11-21 21:19 每日问答 阅读(36) 评论(0) 推荐(0)

导航