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. 跳跃表 + 字典