string
- 扩容原理类似java的list,低于1M时内存翻倍,大于1M时,每次增长1M
- 2.8版本以后的set命令能设置超时,格式:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
;其中key代表变量名,value代表变量值,EX 和PX后面的都是过期时间,EX的单位是秒,PX是毫秒。NX表示键不存在时才设值,XX则表示键存在时才设值。
list
- 原理类似java的双向链表LinkedList。
- 右进左出为队列(出入方向不同),右进右出为栈(出入方向相同)。
- 底层原理是quicklist,多个ziplist特殊链表 通过双向链表结构关联起来的。
hash
- 原理类似java的HashMap。
set
- 原理类似java的HashSet。
zset
- 类似java的 HashSet 和HashMap的结合体,比其他类型多出一个score。
- 简单的增加命令格式:
ZADD key score member [[score member] [score member] …]
- 常用的score删除元素格式:
ZREMRANGEBYSCORE key min max
- 实现原理是跳跃链表(不太懂)
总结
- create if not exist
- drop if no elements
- 过期时间只能对变量设置,集合内的元素无法单独设置过期时间
- 对String设置过期时间后,再调用set会使过期时间失效