1.set类型
基本操作
添加数据
sadd key member1 [member2]
获取全部数据
smembers key
删除数据
srem key member1 [member2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member
扩展操作
随机获取集合中指定数量的数据
srandmember key [count]
随机获取集合中的某个数据并将该数据移出集合
spop key [count]
求两个集合的交、并、差集
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
应用场景
redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等
redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索
显示共同关注(一度)
显示共同好友(一度)
由用户A出发,获取到好友用户B的好友信息列表(一度)
由用户A出发,获取到好友用户B的购物清单列表(二度)
由用户A出发,获取到好友用户B的游戏充值列表(二度)
redis 应用于同类型数据的快速去重
redis 应用于基于黑名单与白名单设定的服务控制
2.sorted_sort类型
基本操作
添加数据
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 ...]
扩展操作
获取数据对应的索引(排名)
zrank key member zrevrank key member
score值获取与修改
zscore key member
zincrby key increment member
获取当前系统时间
time
应用场景
redis 应用于计数器组合排序功能对应的排名
redis 应用于定时任务执行顺序管理或任务过期管理
redis 应用于即时任务/消息队列执行管理
3.数据类型综合实践
解决问题:
限制每个用户每分钟最多发起10次调用
解决方案:
设计计数器,记录调用次数,用于控制业务执行次数。以用户id作为key,使用次数作为value
在调用前获取次数,判断是否超过限定次数 不超过次数的情况下,每次调用计数+1 业务调用失败,计数-1
为计数器设置生命周期为指定周期,例如1秒/分钟,自动清空周期内使用次数
解决方案优化:
取消最大值的判定,利用incr操作超过最大值抛出异常的形式替代每次判断是否大于最大值
判断是否为nil, 如果是,设置为Max-次数 如果不是,计数+1 业务调用失败,计数-1
遇到异常即+操作超过上限,视为使用达到上限
4.key通用操作
基本操作
删除指定key
del key
获取key是否存在
exists key
获取key的类型
type key
扩展操作
为指定key设置有效期
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
获取key的有效时间
ttl key pttl key
切换key从时效性转换为永久性
persist key
查询key
keys pattern
为key改名
rename key newkey
renamenx key newkey
对所有key排序
sort
其他key通用操作
help @generic
5.数据库通用操作
基本操作
切换数据库
select index
其他操作
quit
ping
echo message
相关操作
数据移动
move key db
数据清除
dbsize
flushdb
flushall
6.重难点
6.1 set 类型数据操作的注意事项
set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份
set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间
6.2 sorted_set 类型数据操作的注意事项
score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992
score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重
sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果
应用场景附表
Tips 1:redis用于控制数据库表主键id,为数据库表主键提供生成策略,保障数据库表的主键唯一性
Tips 2:redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
Tips 3:redis应用于各种结构型和非结构型高热度数据访问加速
Tips 4:redis 应用于购物车数据存储设计
Tips 5:redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计
Tips 6:redis 应用于具有操作先后顺序的数据控制
Tips 7:redis 应用于最新消息展示
Tips 8:redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等
Tips 9:redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索
Tips 10:redis 应用于同类型不重复数据的合并、取交集操作
Tips 11:redis 应用于同类型数据的快速去重
Tips 12:redis 应用于基于黑名单与白名单设定的服务控制
Tips 13:redis 应用于计数器组合排序功能对应的排名
Tips 14:redis 应用于定时任务执行顺序管理或任务过期管理
Tips 15:redis 应用于及时任务/消息队列执行管理
Tips 16:redis 应用于按次结算的服务控制
Tips 17:redis 应用于基于时间顺序的数据操作,而不关注具体时间