五种存储类型:
String
Hash
List
Set
Sorted_set
一、set
新的存储需求:存储大量的数据,在查询方面提供更高的效率
需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
set类型数据的基本操作:
- 添加数据
sadd key menber1 [member2]
- 获取全部数据
smembers key
- 删除数据
srem key member1 [member2]
- 获取集合数据总量
scard key
- 判断集合中是否包含指定数据
sismember key member
set类型数据的扩展操作:
- 随机获取集合中指定数量的数据
srandmember key [count]
- 随机获取集合中的某个数据并将该数据移出集合
spop key
- 求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
- 求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
- 将指定数据从原始集合移动到目标集合中
smove source destination member
Tips:redis应用于同类信息的关联搜索,二度关联搜索,深度关联搜索
redis应用于同类型不同重复数据的合并操作
redis应用于同类型数据的快速去重
redis应用于基于黑名单与白名单设定的服务控制
set类型数据操作的注意事项:
- Set类型不允许数据重复,如果添加的数据在set中已经存在,将只保留一份。
- Set虽然与hash的存储结构相同,但是无法启用hash中存储键值的空间。
三、sorted_set
新的存储需求:数据排序有利于数据的有效显示,需要提供一种可以根据自身特征进行排序的方式
需要的存储结构:新的存储模型,可以保存可排序的数据
sorted_set类型:在set的存储结构基础上添加可排序字段
Sorted_set类型数据的基本操作:
- 添加数据:
zadd key score1 member1 [score2 member2]
- 获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
- 删除数据:
zrem key member [member …]
- 按条件获取数据:
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
- 按条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max
- 获取集合数据总量:
zcard key
zcount key min max
- 集合交、并操作:
zinterstore destination numkeys key [key …]
zunionstore destination numkeys key [key …]
sorted_set类型数据的扩展操作
- 获取数据对应的索引(排名)
zrank key member
zrevrank key member
- score 值获取与修改
zscore key member
zincrby key increment member
注意事项:
- score保存的数据存储空间是64位,如果是整数范围为:-9007199254740992~9007199254740992
- score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时要谨慎
- sorted_set底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的操作
应用场景Tips:
- redis应用于计数器组合排序功能对应的排名
- redis应用于定时任务执行顺序管理或任务过期管理
- redis应用于即时任务/消息队列执行管理