redis数据结构和应用场景

redis数据结构和应用场景

参考文章

  • string HashMap<String,Object>
    • 分布式锁 setnx (Set If Not Exist) set mset mget del
      • 合理的key设计 存储多个key代替json
    • 分布式计数器 incryby(key数值相加) decyby(key数值相减) incr(自加1) decr(自减1)
      • incryby 一次性拿多个数值存入本地内存
    • 在线用户统计/签到打卡 bitmap getbit setbit bitcount bittops
  • hash(key field value) HashMap<String,HashMap<String,Object>>
    • 底层数据结构 ziplist hashtable
    • hset hsetnx hget hmset hmget hdel hincrby
    • 便于管理
    • 减少IO
    • 减少key冲突/减少外层key数量
    • 不能使用场景
      • 集群数据分布 会倾斜于一台机器
      • 对value直观的操作时
    • 购物车
      • hincrby userid:shoppingcart goodsid count
      • hgetall userid:shoppingcart 购物车商品
      • hget userid:shoppingcart goodsid 商品数量
      • hlen userid:shoppingcart 商品总数
  • list HashMap<String,List>
    • lpush/lpop左边 rpush/rpop右边 lrange 0 -1 拿出所有元素
    • 消息队列(brpop/blpop 阻塞弹出)
    • 关注的最新的消息列表(微博/朋友圈/新闻app)
      • 每个人有关注的key push到相关key的消息
        • 获取到粉丝列表的userid后进行lpush操作
        • lpush {andy}:subscribe {msgID}
      • lrange取分页数据前几条 lrange {andy}:subscribe {msgID}
  • set HashMap<String,HashSet>
    • sadd srem srandmember(随机返回集合一个/多个随机元素) SPOP(随机返回并移除集合一个/多个随机元素) sinter交 sunion并 sdiff差
    • 刷礼物/转发微博 抽奖
      • sadd key {userid}
      • smember 获取所有用户 滚动转起来
      • spop 中奖userid 或者 srandmember count几名中奖
    • 点赞/签到/打卡
      • 点赞 取消点赞 检测是否点赞 点赞用户 点赞用户数
    • 用户关注/商品推荐
      • 打开u1的主页
        • 共同关注 sinter me u1
        • 我关注的人也关注u1 拿出自己的关注数据 逐个SISMEMBER(判断成员元素是否是集合的成员)
        • 我可能认识的人 sdiff
    • 商品筛选
      • 手机 sdiff
        • 屏幕寸尺
        • cpu
        • 系统
  • zset HashMap<String,HashSet>
    • 底层数据结构 ziplist skiplist(字典 跳跃表)
    • zadd zrem zscore zincrby(指定成员的分数加上指定增量) zrange(返指定区间内的成员) zinter交 zunion并
    • 某日销售业绩排序/多日销售业绩 周榜/月榜/年榜
      • zunion
    • 在线用户活跃度
      • 过期时间作为score
    • 单日排行耪 周榜/月榜/年榜
      • 百度热榜
        • 点击一次 zincrby 1
        • 获取top10 zrevrange (返回有序集指定区间内按分数递减)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值