简记 Redis 类型转化
SET GET APPEND STRLEN 对字符串
字符串实现:1. SDS
2. emb SDS(大于 39 变成 SDS)
HSET HGET HGETALL HDEL HLEN 对哈希键
哈希键实现:
1. hashtable(hashtable是编码,实际实现是 dict 字典,一本字典有两张 真正意义上的 hash表)
2. ziplist(键值做为一个节点,放入压缩链表,如果有节点的大小大于 64 字节,或键值对个数大于512,则转为 hashtable)
LRANGE (没有 rrange) LPUSH RPUSH LPOP RPOP 对列表使用
列表实现:
1.压缩列表(列表元素如果大于 512 个或某个节点大小 大于等于 64 则转为 LinkedList)
2.LinkedList : 单纯地把节点对象(一般是SDS)通过前后指针连起来
SADD SPOP(随机弹出元素,离谱) SCARD(返回元素个数) SREM (删除特定元素) SMEMBERS(返回所有对象) SISMEMBER(遍历集合看看是不是在集合里)
集合实现:
1.hashTable(只用键)
2. intset(只装整数)(只是一条内存,简单规定一个元素多长,并且记录有多少个元素,并且是有序的,所以插入删除需要 O(N),查找用二分需要 logN)
(如果集合增加了不是整数的,则转为1,或者元素个数大于512)
ZADD ZRANGE ZSCORE (两个指标,一个查在排行范围,一个在查分数范围)
有序集合实现:
1. 压缩列表 (分数 + 对象 做为一个节点)+ 字典 (如果元素个数大于 128 或某节点长于 64 转为 2)
2. 跳跃表 + 字典