【HBZ分享】Redis的各种类型实战应用场合

String

  1. 计数器,通过incr/decr, 比如商品库存,流量包数量
  2. 业务数据key-value, 缓存结果数据,提高性能,较少DB压力
  3. 分布式session会话解决方案,集群环境下token校验。
  4. 分布式锁,集群下保证线程安全

List

  1. 简易版消息队列,不过一般不会使用,但可以实现此功能
  2. 最近联系人列表, 像商场首页的那些商品数据都是缓存的
  3. 历史记录和操作日志等
  4. 批量查询分页数据,list类型可以做分页查询,比如商城首页商品都是分页的,但并不是直接从DB取,而是从redis 的

Set

  1. 存储用户画像,产品标签集合存储,比如文章有多个标签,可以将对应标签存储再不同的key
  2. 集合去重,可以使用set
  3. 社交应用里面计算数据的交集,并集等
  4. 抽奖小程序:保证不重复,随机弹出一个元素,可以把小奖存多条,大奖存的少,这样随机弹一个就大概率小奖了, spop随机弹出一个元素,并移除, srandmenber仅仅返回元素,不会移除
  5. 网站独立ip统计

Sorted Set(有序集合)

  1. 根据分数,实时排行榜。 比如商品热销榜,视频热播,热门文章
  2. 优先级任务队列,将任务的优先级作为Sorted Set的分值

Hash

  1. 对象存储:可以存储对象中的多个属性。
  2. 通过hset添加和修改,使用hgetall获取所有信息, hget获取单个信息
  3. 计数器系统:比如网站点赞数,评论数。每个文本,图片或者视频等支持点赞和评论的内容ID作为Hash表中的键, 点赞和评论次数作为Hash表中的值
  4. key=文章id, field=评论, value=值, field=点赞, value=值
  5. 电商里面购物车的存储结构,
    第一层Map, Key是用户id
    第二层Map, Key是购物车中的商品id, 值是购物车的数据比如买2件,3件

Bitmap(位存储)

  1. 极小内存占用下对大量的二进制数据进行存储和处理
  2. 布隆过滤器:判断一个元素是否在一个集合中。将元素通过Hash算法转换位多个二进制位, 并将其对应的二进制位设置为1
  3. 去重操作: 使用Bitmap进行去重。将需要去重的数据的Hash值作为Bitmap的键,将数据的id号或标识作为Bitmap中对应的二进制位,"1"表示已存在该数据, “0”表示为存在该数据
  4. 日活、月活UV统计, 签到统计,用户点赞,用户签到,访问计数,在线用户等

你可能感兴趣的:(redis,数据库,缓存)