redis的各种类型的应用场景

Redis中存储的数据要小,并且频繁更改;

String

key的设计:user:1:name  这样设计方便更改;

用途:分布式锁:setnx business:{id}  返回1代表取锁成功,返回0代表取锁失败;  当业务操作完 del business:{id}  通常创建锁时给一个有效时间 用于防止异常死锁;

用途:INCR order:{id}  记录浏览数; get order:{id}

Hash

key的设计:hset user {id}:name zhang; 

用途:电商购物车的实现; hget cart:{userId} productId  查看某件商品的数量;  Hincrby cart:{userId} productId  1 增加某件商品的数量;

  hkeys 返回购物车中的所有商品ID;根据Id去加载商品的详细信息  Hlen cart:{userId} 返回购物车中商品的种类数量;

  HgetAll 返回购物车中所有的键值(KYE VALUE);

 

 当用户key 为USER时 所有数据都会存在一个节点;(集群根据hash值分布存储)

List 

 

 用list实现很多常用的数据结构;

BRPOP key timeout 从表尾取数据,如果没有就堵塞 timeout秒,如果timeout==0 那么就一直堵塞;

用途:消息流:

  Lpush msg:{userid} msgId  给某个用户的消息列表添加一条消息;

  LRange msg:{userId} 0 5 返回这个用户的五条消息Id;

  弊端:如果需要推送的用户过多:不适用;

 

posted @ 2020-08-19 18:51  不知无畏  阅读(222)  评论(0)    收藏  举报