1.redis数据类型实战

list

tips 7 :redis应用于最新消息的展示
#利用list性质应用于最新消息的展示
rpush logs a1..
lrange logs 0 -1

set

存储大量数据,在查询方面提供更高的效率

基于hash变形。(不允许有重复)

#添加数据
sadd key member1 []
#获取全部数据
smembers key
#删除数据
srem key member1 []
#集合数据总量
scard key
#判断集合中是否包含指定数据
sismember key member
#随机获取指定数量的数据
srandmember key [conut]
#随机获取某个数据并将数据移出集合
spop key

#求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff  key1 [key2]
#存储到dest
sinter distination key1 [key2]
sunion distination key1 [key2]
sdiff distination  key1 [key2]
#移动到目标集合
smove source destination member
tips 8:redis应用于随机推荐类信息检索,如歌单推荐,热点新闻推荐。。。。
tips 9:
  • redis应用于同类信息的关联检索,二度关联检索,深度关联检索
  • 显示共同关注
  • 由用户A出发,获取到好友用户B的好友信息列表(一度)
  • 由用户A出发,获取到好友用户B的购物清单列表(二度)
tips 10:应用于同类型不重复数据的合并
tips 11:应用于同类型数据快速去重

1.网站访问

  • 利用set集合的数据去重特征,记录各种访问数据
  • 建立string类型数据,利用incr统计日访问量
  • 建立set模型,记录不同cookie数量(UV)
  • 建立set模型,记录不同IP数量(IP)
tips 12:应用于基于黑名单与白名单设定服务控制

2.反爬虫

  • 基于经营战略设定问题用户发现、鉴别规则
  • 周期性更新满足规则的用户黑名单,加入set集合
  • 用户行为信息达到后与黑名单进行对比,确认行为去向
  • 黑名单过滤IP地址、设备信息、用户(基于权限访问)

sorted_set

提供一种根据自身特征进行排序的方式,在set的存储结构上添加可排序字段(score)

zadd key score1 member1
zrange key start stop [WITHSCORES]
#反向看
zrevrange key start stop [WITHSCORES]
zrem key member

#按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key min max [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 ...]
tips 13:应用于计数器组合排序功能

score保存的数据存储空间是64位,也可以是双精度double值,基于双精度浮点数特征,可能会丢失精度。

sorted_set底层存储还是基于set结构的,因此数据不能重复,重复时会覆盖,保留最后一次修改结果。

tips 14:应用于定时任务顺序管理或任务过期管理(根据时间排序)
tips 15:应用于即时任务/消息队列执行管理

总结

tips 16:应用于限时按次结算的服务控制
#为避免每次对数据上限进行判断,直接将数据赋值为max - tar
get 415
setex 415 60 9223372036854775797  #807
incr 415
#捕获数据溢出异常即可
tips 17:应用于基于具体时间的数据操作,不关注具体时间
#对于消息的展示顺序
#对于重复的消息,将以前的消息删除,再添加新消息
lrem 100 1 200
lpush 100 200
lrem 100 1 300
lpush 100 300
lrem 100 1 200
lpush 100 200
#最终顺序为 "200" "300"  (200为最新消息)
lrange 100 0 -1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tHs9Z4Fa-1600243286386)(C:\Users\Administrator\Desktop\note-linux-c++\数据库学习-redis\101tip17.PNG)]

  • 依赖list的数据具有顺序的特征对消息进行管理,将list结构作为栈使用

  • 对置顶与普通会话分别创建独立的list进行管理

  • 当某个list中接受用户消息后,将消息发送放的id从list的一侧加入list

  • 多个相同的id发出消息反复入栈会出现问题,在入栈之前无论是否具有当前id对应的消息,先删除对应id

  • 推送消息时先推送置顶会话list,再推送普通会话list,推送完成的list清除所有数据

  • 消息的数量,也就是微信用户对话数量采用计数器思想另行记录,伴随list操作同步更新

  • 多个相同的id发出消息反复入栈会出现问题,在入栈之前无论是否具有当前id对应的消息,先删除对应id

  • 推送消息时先推送置顶会话list,再推送普通会话list,推送完成的list清除所有数据

  • 消息的数量,也就是微信用户对话数量采用计数器思想另行记录,伴随list操作同步更新

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值