Redis使用场景(1205)

1.redis单线程

2.数据库和缓存同步问题;通常使用Cache Aside 策略(从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式)中的先更新数据库,后更新缓存。

3.String类型应用场景:

   set key value

   a.单值缓存 (set key value)

   b.Json格式缓存 (value为json字符串)-登录

   c.浏览量  (incr key)

   d.限速 (短信验证码)

   e.购物车

   f.列表数据

   g.锁(setnx,del)

  Redis使用场景(1205)_第1张图片

4. Hash类型应用场景

    a.购物车:

      hmset key field value [field value…]

      hmset user 1:name apple 1:price 5 1:count 2…

      hincrby key field increment:为哈希表key中field键的值增加increment,增量为负值,为减少

      以用户id为hash的key值,商品id为field,商品数量为value

   Redis使用场景(1205)_第2张图片

   Redis使用场景(1205)_第3张图片

Redis使用场景(1205)_第4张图片

    b.当对象的某个属性需要频繁修改时,不适合用string+json, 因为每次修改都需要重新将整个对象序列化并赋值, 如果使用hash类型,则可以针对某个属性单独修改,没有序列化,也不需要修改整个对象。比如,商品的价格、销量、关注数、评价数等可能经常发生变化的属性,就适合存储在hash类型里,某值修改操作如图:

 Redis使用场景(1205)_第5张图片

  Redis使用场景(1205)_第6张图片

5.List类型应用场景

  lpush key value [value…] 将一个或多个value值插到key列表头部 (最左)

  rpush key value [value…] 将一个或多个value值插到key列表尾部 (最右)

  lpop key 移除并返回key列表头元素  rpop key 移除并返回key列表尾元素

     a.Stack=lpush+lpop (栈,先进后出)

     b.Queue=lpush+rpop (队列,先进先出)

     c.Blocking MQ=lpush+brpop(消息队列,先进先出)

  Redis使用场景(1205)_第7张图片

  Redis使用场景(1205)_第8张图片

 d.微博和微信公众号消息流

    lpush key value ,lrange key 0 -1 (前五条数据 0 4)

    Redis使用场景(1205)_第9张图片

   Redis使用场景(1205)_第10张图片

6.Set类型应用场景

   Redis使用场景(1205)_第11张图片

  a.微信抽奖小程序

     sadd key member [member…] 往集合key中存入元素

     smember key 获取集合key中所有元素

     srandmember key [count] 从集合key中选出count个元素,元素不从key中删除

     spop key [count] 从集合key中选出count个元素,元素从key中删除

    Redis使用场景(1205)_第12张图片

   Redis使用场景(1205)_第13张图片

  

b.微信微博点赞、收藏、标签、某应用的黑名单

    Redis使用场景(1205)_第14张图片

    Redis使用场景(1205)_第15张图片

c.微信关注模型

   sinter 交集,sunion 并集,sdiff差集

   Redis使用场景(1205)_第16张图片

   Redis使用场景(1205)_第17张图片

   Redis使用场景(1205)_第18张图片

7.Zset类型应用场景

   Redis使用场景(1205)_第19张图片

   用户订单: 

   Redis使用场景(1205)_第20张图片

你可能感兴趣的:(Redis使用场景(1205))