写点什么

一口气说出 Redis 16 个常见使用场景,rxjava 原理

用户头像
极客good
关注
发布于: 刚刚

*/


复制代码


例如:在线用户统计,留存用户统计


setbit onlineusers 01


setbit onlineusers 11


setbit onlineusers 20


复制代码


支持按位与、按位或等等操作


BITOPANDdestkeykey[key...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。


BITOPORdestkeykey[key...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。


BITOPXORdestkeykey[key...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。


BITOPNOTdestkeykey ,对给定 key 求逻辑非,并将结果保存到 destkey 。


复制代码


计算出 7 天都在线的用户


BITOP "AND" "7_days_both_online_users" "day_1_online_users" "day_2_online_users" ... "day_7_online_users"


复制代码


8、购物车




String 或 hash。所有 String 可以做的 hash 都可以做



  • key:用户 id;field:商品 id;value:商品数量。

  • +1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。


9、用户消息时间线 timeline




list,双向链表,直接作为 timeline 就好了。插入有序


10、消息队列




List 提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间


  • blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  • brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。


上面的操作。其实就是 java 的阻塞队列。学习的东西越多。学习成本越低


  • 队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列

  • 栈:先进后出:rpush brpop


11、抽奖




自带一个随机获得值


spop myset


复制代码


12、点赞、签到、打卡





假如上面的微博 ID 是 t1001,用户 ID 是 u3001


用 like:t1001 来维护 t1001 这条微博的所有点赞用户


  • 点赞了这条微博:sadd like:t1001 u3001

  • 取消点赞:srem like:t1001 u3001

  • 是否点赞:sismember like:t1001 u3001

  • 点赞的所有用户:smembers like:t1001

  • 点赞数:scard like:t1001


是不是比数据库简单多了。


13、商品标签





老规矩,用 tags:i5001 来维护商品所有的标签。



    【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
    浏览器打开:qq.cn.hn/FTf 免费领取
    复制代码


    sadd tags:i5001 画面清晰细腻


    • sadd tags:i5001 真彩清晰显示屏

    • sadd tags:i5001 流程至极


    14、商品筛选




    // 获取差集


    sdiff set1 set2


    // 获取交集(intersection )


    sinter set1 set2


    // 获取并集


    sunion set1 set2


    复制代码



    假如:iPhone11 上市了


    sadd brand:apple iPhone11


    sadd brand:ios iPhone11


    sad screensize:6.0-6.24 iPhone11


    sad screentype:lcd iPhone 11


    复制代码


    赛选商品,苹果的、ios 的、屏幕在 6.0-6.24 之间的,屏幕材质是 LCD 屏幕


    sinter brand:apple brand:ios screensize:6.0-6.24 screentype:lcd


    复制代码


    15、用户关注、推荐模型




    follow 关注 fans 粉丝


    相互关注:


    • sadd 1:follow 2

    • sadd 2:fans 1

    • sadd 1:fans 2

    • sadd 2:follow 1


    我关注的人也关注了他(取交集):


    • sinter 1:follow 2:fans


    可能认识的人:


    • 用户 1 可能认识的人(差集):sdiff 2:follow 1:follow

    • 用户 2 可能认识的人:sdiff 1:follow 2:follow

    用户头像

    极客good

    关注

    还未添加个人签名 2021.03.18 加入

    还未添加个人简介

    评论

    发布
    暂无评论
    一口气说出 Redis 16 个常见使用场景,rxjava原理