Redis传统五大基本类型的落地应用

命令不区分大小写,而key是区分大小写的(查询命令:help @类型名称) 具体命令

String

  • 最基本的类型,就和普通的set 和 get,做简单的key - value 存储

  • 应用场景

    • 商品编号、订单号采用INCR命令生成

      image-20210110222207888

    • 是否喜欢的文章

      image-20210110222330308

Hash

  • 这个是类似于Map的一种结构,就是一半可以将结构化数据,比如对象(前提是这个对象没有嵌套其它对象)给缓存在redis中,每次读写redis缓存的时候,可以操作hash里面的某个字段。
  • Hash类的数据结构,主要用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中某个字段的值。
  • 对应Java中的 Map<String,Map<Object,Object>>
key=150
value={
  "id": 150,
  "name": "张三",
  "age": 20,  
}
  • 应用场景:购物车早期,当前小中厂可用

    image-20210110223728047image-20210110223745765

List

  • 有序列表,可以通过list存储一些列表型的数据结构,类似粉丝列表,文章的评论列表之类的东西。

  • 可以通过lrange命令,从某个元素开始读取多少个元素,可以基于list实现分页查询,基于Redis实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就是一页一页走。

  • 可以制作一个简单的消息队列,从list头插入,从list 的尾巴取出

  • 应用场景:微信文章订阅公众号(1:N)

    1. 某公众号a和b发布的文章分别是 11 和 22

    2. 我的微信关注了他们两个人,只要他们发布了新文章,就会安装进我的List

      lpush likearticle:silince 11 22

    3. 查看自己微信订阅的全部文章,类似分页,下面 0~10 就是一次现实10条

      lrange likearticle:silince 0 10

Set

  • 无序列表,自动去重

  • 直接基于Set将系统中需要去重的数据丢进去,如果你需要对一些数据进行快速的全局去重,就可以使用基于JVM内存里的HashSet进行去重,但是如果你的某个系统部署在多台机器上的话,只有使用Redis进行全局的Set去重

  • 可以基于set玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?把两个大v的粉丝都放在两个set中,对两个set做交集

  • 应用场景:

    • 微信抽奖小程序

      image-20210111131808595

      image-20210111131949452

    • 微信朋友圈点赞

      image-20210111133506484

    • 微博好友关注社交关系

      共同关注的人:我去到gakki的微博,马上获得我和gakki共同关注的人

      image-20210111133650920

      我关注的人也关注他(大家爱好相同)

      image-20210111133831044

    • qq推荐可能认识的人

      image-20210111133958782

SortedSet

  • 排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩儿很多的花样,最大的特点是有个分数可以自定义排序规则

  • 比如说你要是想根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了

  • 排行榜:将每个用户以及其对应的什么分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;zrank board username,可以看到用户在排行榜里的排名

    zadd board 85 zhangsan
    zadd board 72 wangwu
    zadd board 96 lisi
    zadd board 62 zhaoliu
      
    96 lisi
    85 zhangsan
    72 wangwu
    62 zhaoliu
      
    zrevrange board 0 3
      
    获取排名前3的用户
      
    96 lisi
    85 zhangsan
    72 wangwu
      
    zrank board zhaoliu
      
    
  • 应用场景:

    • 根据商品销售对商品进行排序显示

      image-20210111140054296

      • 抖音热搜

        image-20210111140639166

新增类型

Bitmap(位图)

HyperLogLog(统计)

GEO(地理)