Redis常见应用场景

String存储

  1. 点击计数功能,incr key:001自增,如链接点击数.
  2. 分布式锁 set key value nx px 1000//通过setnx设置随机值并设置失效时间,写值成功既加锁成功。
  3. 集群环境的session共享

List存储

常应用于队列,栈,可根据下标索引查找或范围内查询。
微信公众号订阅消息列表:
小明useId:001关注了阿里巴巴招聘和腾讯招聘公众号,
1.阿里巴巴先发了一条推送001:lpush userId:001:gongzhonghao 001
2.腾讯再发了一条推送002:lpush userId:001:gongzhonghao 002;
显示最新订阅消息三条:lrange userId:001:gongzhonghao 0 2


Hash存储

购物车的设计

1.展示所有的购物车商品
2.购物车的商品总数
3.增加和减少商品的数量
4.移除商品
5.结算价格--通过页面参数可直接计算

加入购物车:hmset user01:cart001 goods1Id 1 goods2Id 2
展示即获取hash所有商品和数量:hgetall user01:cart001


Set存储

一:小程序有个抽奖活动,活动id为0001,基于redis怎么实现抽奖?

比如4个人参加抽奖。
1.把userId加入set:sadd act:0001 001 002 003 004;
2.查看抽奖用户有哪些:smembers act:0001
3.随机抽奖2个人:srandmember act:0001返回2个id;若中奖过的需要排除掉spop act:0001 2,表示随机抽取两个并从集合移除。
备注:有些版本不支持spop act:0001 count这种命令。


二:微博点赞or朋友圈点赞怎么设计?
易建联发布了一个微博weibo:001,
1.粉丝A点赞:sadd weibo:001 fensiA
2.查看用户B是否点赞过:sismember weibo:001 yonghuB,是返回1,否则0。
3.粉丝A取消点赞:srem weibo:001 fensiA--rem即remove
4.查看此条微博点赞的用户列表:smembers weibo:001
5.查看点赞总数:scard weibo:001


三.微博的微关系如何设计?共同关注?我关注的人也关注他?
1.我关注的人有这些:sadd meCare kobe yijianlian james
2.james关注的人有这些:sadd jamesCare kobe yijianlian yaoming
3.yaoming关注的人:sadd yaomingCare james curry rose
4.jemes和我me共同关注的人即交集:sinter meCare yaomingCare->返回james, intersection即交集.
5.我关注的人也关注他(kobe),我关注的人james也关注了kobe,
sismember meCare kobe--sismember jamesCare kobe
6.我可能认识的人
sdiff meCare yaomingCare //计算差集


zset有序集合

常用于排行榜,新闻话题榜等等。
百度页面的搜索热点设计实现,以日期为key

1.点击热点链接点击量+1,zincrby hot:20191026 1 庆阳发现大油田

2.排行榜实现,zrevrange hot:20191026 0 7 withscore --返回有序集合指定区间0-7内的成员,通过索引,分数从高到低
3.展示近3日的排行榜前八名
zrevrange hot:20191024-hot:20191026 0 7 withscore。
还有其他命令的应用可自行查询~~

你可能感兴趣的:(java,redis)