[redis] redis五种数据类型
详细内容可以参考 https://www.runoob.com/redis/redis-data-types.html
1. string 字符串元素(包括基本类型,整型、浮点、字符串等)
常用命令:
incr(自加)、decr(自减)、incrby(加)、decrby(减)
string的底层实现是简单动态字符串sds,类似于ArrayList,采用预分配冗余空间的方式减少内存频繁分配。
长度小于1M时,每次扩容空间加倍,超过1M时每次多扩容1M空间。最大长度为512M。
其本质是char*,表头为sdshdr,存储一些数据属性,例如sds长度。
2. list 列表(实际上是双向队列,FIFO)
常用命令:
lpush(左推入)、lpop(左弹出)、rpush(右推入)、rpop(右弹出)、llen(查看长度)
3. set 集合(使用哈希表实现,元素不可重复)
常用命令:
sadd(添加数据)、scard(查看set中存在的元素个数)、sismember(判断是否存在某元素)、srem(删除某个元素)
4. hash (类似于map)
hset(添加hash数据)、hget(获取hash数据)、hmget(获取多个hash数据)
5. sort set (map)
zadd(添加)、zcard(查询)、zrange(数据排序)
又叫zset,添加数据时除数据值外,还需要指定序列值score, 类型为double,这个值被用于进行排序。
需要补充的是,zset使用HashMap存储成员到score的映射。zset的多层结构则使用了跳表(便于快速查找有序数据,不适用B-Tree的原因是,zset是保存在内存中的)。
添加新元素的方式如下:ZADD key score value
zset可以根据序列区间对成员进行批量操作,例如:
ZLEXRANGE key min max 获取min到max区间的所有值
ZLEXCOUNT key min max 获取指定区间内成员的数量