redis

2020-10-19  本文已影响0人  shuff1e

zlbytes表示本ziplist的总长度
zltail指向最末的元素
zllen表示元素个数
zlend恒为0xFF作为ziplist的定界符

每个entry内部结构包含两部分
相邻的前一个entry的长度
自描述的本entry长度
方便双向遍历

ziplist:满足以下两个条件的时候
元素数量少于128的时候每
个元素的长度小于64字节skiplist

不满足上述两个条件就会使用跳表,具体来说是组合了map和skiplist

map用来存储member到score的映射,这样就可以在O(1)时间内找到member对应的分数
skiplist按从小到大的顺序存储分数
skiplist每个元素的值都是[score,value]对

因为有了skiplist,才能在O(logN)的时间内插入一个元素,并且实现快速的按分数范围查找元素

*2
$4
auth
$3
foo
redis> MULTI
OK

redis> SET book-name "Mastering C++ in 21 days"
QUEUED

redis> GET book-name
QUEUED

redis> SADD tag "C++" "Programming" "Mastering Series"
QUEUED

redis> SMEMBERS tag
QUEUED

redis> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
   2) "C++"
   3) "Programming"

watch/unwatch

127.0.0.1:6379> watch msg
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set msg "hello wolrd"
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get msg
"12345"
127.0.0.1:6379> 
上一篇 下一篇

猜你喜欢

热点阅读