Redis_day02

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次调用

解决方案:

  1. 设计计数器,记录调用次数,用于控制业务执行次数。以用户id作为key,使用次数作为value

  1. 在调用前获取次数,判断是否超过限定次数 不超过次数的情况下,每次调用计数+1 业务调用失败,计数-1

  1. 为计数器设置生命周期为指定周期,例如1秒/分钟,自动清空周期内使用次数

解决方案优化:

  1. 取消最大值的判定,利用incr操作超过最大值抛出异常的形式替代每次判断是否大于最大值

  1. 判断是否为nil, 如果是,设置为Max-次数 如果不是,计数+1 业务调用失败,计数-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 类型数据操作的注意事项

  1. set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份

  1. set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

6.2 sorted_set 类型数据操作的注意事项

  1. score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992

  1. score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重

  1. 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 应用于基于时间顺序的数据操作,而不关注具体时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值