2.0-Redis的五种数据类型的使用场景

410 阅读2分钟

String的value类型

字符串
  • 字符串的常规方法都存在
  • get
  • set
  • append
  • setrange
  • getrange
  • strlen
数字
  • INCR 将键的整数值加一
  • INCRBY 键的整数值增加给定的数量
  • INCRBYFLOAT 将键的浮点值增加给定的数量
  • DECR 将键的整数值减一
  • DECRBY 将键的整数值减给定数字
使用场景
  • 抢购、秒杀,点赞数,评论数量
bitmap 位图
  • setbit
  • bitcount 计算二进制位中1的数量
  • bitpos 返回字符串里面第一个被设置为1或者0的bit位。
  • bitop 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。 可以是多个key的交集,并集,差集
1、使用场景1-统计用户登录的天数
  • 以用户Id为维度作为key,每天登录作为value
    bitmap.png
1、使用场景1-活动送礼统计,需要准备多少礼物,
  • 送多少礼物,需要区分出冷热用户。
  • 连续登录的用户还要去重,例如1号---10号上线用户的总数,需要将连续登录的用户去重
  • 使用日期作为key,每个用户作为value
  • 难点在于连续登录的用户分散到不同的key,但是设置位的时候,需要将其设置到同一个角标上面

eaa645ac50c7d278cf6b74378b4cf275.png

List的value类型

使用场景
  1. 栈---同向命令
  2. 队列----反向命令
  3. 数据
  4. 单播队列

Hash的value类型

使用场景
  1. 点赞数
  2. 收藏数
  3. 详情页

Set的value类型

  • 集合无序,且对内部存储的元素进行去重
使用场景
  1. 一些集合的操作
  2. 随机事件
随机事件

假设公司发放奖品,一般会有以下两个场景

  1. 奖品多,每个人可以多得到几件礼物
  2. 奖品少,每个人做多得到一件礼物

ZSet的value类型

  • 会对集合内元素进行去重操作(更准确些,应该叫更新),但不同的是它是又是一种支持对集合内元素进行排序的数据结构
  • set中有一个score的用来决定排序的方式
使用场景
  1. 排行榜
存储的原理-查询速度快
  • 跳跃表