Redis基础数据结构

基础数据结构

string

  • key -value键值对(set, get)

  • 计数 自增自减(incrby)

list

  • 链表

  • 可以用左进右出或者右进左出实现队列(rpush, lpop)

  • 右进右出实现栈(rpush, rpop)

  • 慢操作(lindex, ltrim, lrange)

  • 快速链表

hash

  • 相当于java中的HashMap

  • key对应一个hash结构 (hset, hget, hlen, hmset)

  • 扩容时使用渐进rehash避免阻塞

  • 对hash中的单个字段进行计数(hincrby)

set

  • 相当于java中的HashSet,即一个所有value为NULL的HashMap

  • 自动去重

  • sadd, smembers, sismember, spop

  • scard获取长度

zset

  • 可以理解为在set基础上为每个value加一个score字段,自动按有序

  • zadd, zrange, zrevrange, zscore, zrangebyscore, zrem

  • zcard获取长度

  • 底层使用跳表数据结构,兼顾了查询和插入删除的操作性能。

容器型数据结构的通用规则

list, set, hash, zset 都是容器型数据结构,他们同享这两条通用规则。

  1. create if not exists

  2. drop if no elements