Redis的基本数据类型
set
- 抽奖
- 京东抽奖,利用set的随机值random,先把一堆数据丢入对应的key里面,然后随机取出来,比如京东豆豆
- 支付宝抽奖,与京东不同两者区别是,京东豆奖品可以重复,支付宝抽中之后不能继续下一轮抽奖,比如京东豆可以重复抽中10个,但是支付宝1w人抽2部手机,只能由不同人抽中,所以需要利用spop,弹出并删除
-
黑名单 先默认初始化一堆数据到redia里面,等待登陆的时候利用set方法sismember判断是否在初始化数据内
- 随机展示数据
- 群推荐 初始化一批数据然后利用srandmember随机取出数据展示
- 微博热搜推荐 与群推荐不同的是,群推荐一般只是展示群号,微博热搜一般是一个java bean,比如本地热搜,娱乐热搜,今日热搜,一个热搜块下面还有热搜集合,相当于一个set里面放多个list
- 微博点赞功能
- 第一个点:用户可以点赞或者取消点赞,采用redia的set数据结构,key=like:postid value={userid},sadd命令点赞,srem取消点赞
- 第二个点:查看帖子信息,通过用户id和帖子id,查看用户是否点赞,查看帖子点赞个数,
- 采用sismember利用用户id查看是否点赞,利用
- 采用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: