Redis的基本数据类型


set

  • 抽奖
    1. 京东抽奖,利用set的随机值random,先把一堆数据丢入对应的key里面,然后随机取出来,比如京东豆豆
    2. 支付宝抽奖,与京东不同两者区别是,京东豆奖品可以重复,支付宝抽中之后不能继续下一轮抽奖,比如京东豆可以重复抽中10个,但是支付宝1w人抽2部手机,只能由不同人抽中,所以需要利用spop,弹出并删除
  • 黑名单 先默认初始化一堆数据到redia里面,等待登陆的时候利用set方法sismember判断是否在初始化数据内

  • 随机展示数据
    1. 群推荐 初始化一批数据然后利用srandmember随机取出数据展示
    2. 微博热搜推荐 与群推荐不同的是,群推荐一般只是展示群号,微博热搜一般是一个java bean,比如本地热搜,娱乐热搜,今日热搜,一个热搜块下面还有热搜集合,相当于一个set里面放多个list
  • 微博点赞功能
    1. 第一个点:用户可以点赞或者取消点赞,采用redia的set数据结构,key=like:postid value={userid},sadd命令点赞,srem取消点赞
    2. 第二个点:查看帖子信息,通过用户id和帖子id,查看用户是否点赞,查看帖子点赞个数,
    1. 采用sismember利用用户id查看是否点赞,利用
    2. 采用scard统计点赞总数

list

  • 分页 利用lpush存放数据,再利用lrange进行数据分页

  • 缓存击穿 简单的做法可以用2个缓存来解决

  • 抢红包 先把红包,比如100块,20个先进行拆分随机20个红包lpush到redis,然后抢的时候利用lpop一个个抢,先进行判断这个人是否已经抢过,利用key包含红包的id,如果没抢过,再先判断红包还有没有钱,如果有钱抢了之后塞入到对应红包的key里面

string

读多的场景

hash

写多的场景,因为可以操作对象的某个属性,不需要像string一样转JSON再转回来

zset(通常用于排行)

  • 微博热榜排行,小时,天,月 每条微博是一个member,每条微博热度值是一个score

以小时为单位,每一个小时是一个zset,24小时就合并24个zset,7天就合并24*7

先计算当前小时的key,然后把当前微博作为member,热度只为score加入zset中




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • 2379. Minimum Recolors to Get K Consecutive Black Blocks
  • 2471. Minimum Number of Operations to Sort a Binary Tree by Level
  • 1387. Sort Integers by The Power Value
  • 2090. K Radius Subarray Averages
  • 2545. Sort the Students by Their Kth Score