当前位置: 首页 > 科技观察

Redis16种常见使用场景总结

时间:2023-03-14 21:47:03 科技观察

目录缓存数据共享分布式分布式锁全局ID计数器流量限制统计购物车用户消息时间轴时间轴消息队列抽奖点赞签到签到商品标签商品筛选用户关注度和推荐模型排行榜1、CacheString类型例如:热点数据缓存(如报道、名人作弊)、对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享DistributedString类型,因为Redis是一个分布式的独立服务,可以在多个应用之间共享。例如:分布式会话org.springframework.sessionspring-session-data-redis3.分布式锁String类型的setnx方法,只有不存在才能添加成功,returntruepublicstaticbooleangetLock(Stringkey){Longflag=jedis.setnx(key,"1");if(flag==1){jedis.expire(key,10);}returnflag==1;}publicstaticvoidreleaseLock(Stringkey){jedis.del(key);}4.全局IDint类型,incrby,使用原子incrby在userid1000分库分表的场景下,一次取一段5.计数器int类型,incr方法如:文章阅读量,微博点赞数,允许一定的延时,先写入Redis,然后定时同步到数据库6.限流int类型,incr方法以访问者的ip等信息为key,每访问一次计数增加一次,超过则返回false。将setk1asetbitk161setbitk170getk1/*67表示的a的二进制位修改为bit二进制对应ASCII码97,转换为二进制数据为01100001b对应ASCII码98,转换为二进制数据为01100010,因为bit很节省空间(1MB=8388608bit),可用于统计大量数据。*/例如:在线用户统计、留存用户统计setbitonlineusers01setbitonlineusers11setbitonlineusers20支持按位与、按位或等操作BITOPANDdestkeykey[key...],对一个或多个key进行逻辑并集,并将结果保存到destkey。BITOPORdestkeykey[key...],对一个或多个key进行逻辑或,结果保存到destkey。BITOPXORdestkeykey[key...],对一个或多个key进行逻辑异或,结果保存到destkey。BITOPNOTdestkeykey,计算给定key的逻辑非,结果保存到destkey。计算BITOP"AND""7_days_both_online_users""day_1_online_users""day_2_online_users"..."day_7_online_users"8,shoppingcart在线7天用户的String或hash。所有String能做的哈希都可以做key:userid;字段:产品编号;值:产品数量。+1:阻碍。-1:hdecr。删除:hdel。全选:hgetall。项目数:hlen。9、用户消息时间线timelinelist,双向链表,当时间线使用即可。有序插入10.消息队列List提供了两种阻塞弹出操作:blpop/brpop,可以设置超时blpop:blpopkey1timeout移除并获取列表的第一个元素,如果列表中没有元素,该列表将被阻塞,直到等待超时或找到可弹出元素。brpop:brpopkey1超时删除并获取列表的最后一个元素。如果列表中没有元素,则列表将被阻塞,直到等待超时或找到弹出元素。上面的操作。其实就是java的阻塞队列。你学到的东西越多。学习成本越低,队列:先进先出:rpushblpop,左头右尾,右入队,左出队栈:先进后出:rpushbrpop11,抽奖自带随机值spopmyset12,点赞,签到,签到如果上面的微博ID是t1001,用户ID是u3001。使用like:t1001来维护t1001。所有喜欢这条微博的用户都为这条微博点赞:saddlike:t1001u3001取消点赞:sremlike:t1001u3001是否点赞:sismemberlike:t1001u3001所有点赞的用户:smemberslike:t1001点赞数:scardlike:t1001是它比数据库简单多了?另外,关注Java知音公众号,回复“后端面试”,送你面试题集!13、产品标签的老规矩,使用tags:i5001来维护产品的所有标签。saddtags:i5001清晰细腻画面saddtags:i5001真彩清晰显示saddtags:i5001极致工艺14.商品筛选//获取差集sdiffset1set2//获取交集(intersection)sinionset1set2//获取并集sunionset1set2if:iPhone11推出saddbrand:appleiPhone11saddbrand:iosiPhone11sadscreensize:6.0-6.24iPhone11sadscreentype:lcdiiPhone11过滤产品,苹果,ios,屏幕在6.0-6.24之间,屏幕材质为LCD屏幕interbrand:applebrand:iosscreensize:6.0-6.24screentype:lcd15,用户关注,推荐modelfollow关注fans相互关注:sadd1:follow2sadd2:fans1sadd1:fans2sadd2:follow1我关注的人也关注他(走路口):sinter1:follow2:fans的人mayknow:Peoplethatuser1mayknow(differenceset):sdiff2:follow1:followPeoplethatuser2mayknow:sdiff1:follow2:follow16,排行榜id为6001的新闻点击数加1:zincrby热点新闻:201909261n6001获取今天点击次数最多的15篇文章:zrevrangehotNews:20190926015withscores