redis 主要数据类型及使用
1.类型
redis 的主要数据类型:
1.1 string 字符串类型<*是其它4种类型的基础>
1.2 hash 散列类型
1.3 list 列表类型
1.4 set 集合类型
1.5 zset 有序集合类型
2. 使用
2.1 string
其他4种类型的基础
2.2 hash
适用于存储对象
hset key field value
hget key field
2.3 list
内部使用双向列表实现,可实现队列。
a) 可以向列表中两端添加元素
b) 获得列表的某一片段
lpush key value [value ...]
rpush key value [value ...]
lpop key
rpop key
llen key
#取指定片段
lrange key start stop
2.4 set
集合中的每个元素都是不同的,且没有顺序的。
常用操作:
a) 加入或删除元素
b) 判断某个元素是否存在
c) 并集、交集、差集运算
#增加删除元素
sadd key member [member ...]
srem key member [member ...]
#获取集合中的所有元素
smembers key
#判断元素是否存在
sismember key member
#获得集合中的元素个数
scard key
# 差集
sdiff key [key ...]
# 交集
sinter key [key ...]
# 并集
sunion key [key ...]
集合类型 set | 列表类型 list | |
存储内容 | 至多2e32-1个字符串 | 至多2e32-1个字符串 |
有序性 | 否 | 是 |
唯一性 | 是 | 否 |
2.5 有序集合类型 zset/sorted set
在集合类型上每个元素都关联了一个分数,利用分数来进行排序等操作
和列表的比较:
a) 列表类型通过链表实现,存取两头的数据快,数据量大时中间的数据存取慢;
b) 有序集合是通过散列表和跳跃表实现的,存取数据的速度和位置没有关系,即使数据位于中间,也可以很快存取;
c) 列表不能简单的调整某个元素的位置,但有序集合可以(通过调整这个元素的分数);
d) 有序集合要比列表耗费内存;
#增加元素
zadd key score member [score member ...]
#获取元素分数
zscore key member
# 指定分数范围的元素列表 withscores 表示是否要显示分数
zrange key start stop [withscores]
#按分数区间顺序输出
zrangebyscore key min max [withscores]
#增加某个元素的分数
zincrby key increment member
#集合数量
zcard key
#指定分数范围的元素个数
zcount key min max
#移除一个或多个元素
zrem key member [member ...]
# 获得元素排名
zrank key member
zrevrank key member