Redis:五、注意事项


一、数据类型的注意事项

1. String 类型:

在这里插入图片描述
在这里插入图片描述
使用redis 来存储String 类型的数据,可以存储key:value形式、也可以存储 json格式。

2. Hash类型:

在这里插入图片描述
在这里插入图片描述
redis实例使用----购物车:
在这里插入图片描述
问题出现在:如果仅仅使用redis来保存数据,那么不能确定到具体的商品的信息。

解决方法一:考虑将每条购物车中的商品记录保存为两条field,一条field保存商品的购买数量,另一个field保存商品的详细信息。
在这里插入图片描述
这样能够获取到商品的信息,但是有了新的问题:多个用户都购买同一个商品,不同的只是商品的数量,商品的详细信息都是相同的。
解决方法二:改用两条独立的hash格式存储,其中一条hash专门用于存储商品的购买数量,另一个hash专门用于存储商品的信息。


redis实例使用----hash实现抢购:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. list类型:

在这里插入图片描述

list数据类型扩展操作:
list阻塞式队列:

list阻塞数据的获取----- blpop、brpop:

blpop key1 [key2]  timeout
brpop key1 [key2]  timeout 

该模式类似于阻塞队列的形式,当list中存在任务时获取处理,当list中任务为空时等待一有任务加入立马获取进行处理。

list扩展操作:

在这里插入图片描述
案例中通过list 数据类型来rpush进点赞的用户姓名,如果取消点赞使用lrem key value count

list操作注意事项:

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

list类型应用场景:
  • 依赖list的数据具有顺序的特征对信息进行管理;
  • 使用队列模型解决多路信息汇总合并的问题;
  • 使用栈模型解决最新消息的问题;

4. set类型:

list 数据结构的底层是链表,而set 数据结构的底层是hash表。只不过 hash表的值为 空nil
在这里插入图片描述

set数据类型扩展操作:
1. set 随机获取数据:

随机获取或者随机从集合中移除数据: srandmember key [count]
spop key
redis 应用于随机推荐类信息检索,例如随机歌单推荐,热点新闻推荐,热卖旅游路线,应用APP推荐。

2. set 交并差补集合操作:

在这里插入图片描述
应用实例:

  • redis应用于同类信息的关联搜索、二度关联搜索、深度关联搜索;
  • 显示共同关注、共同好友;
  • 由用户A出发,获取到好友B的好友信息列表、购物清单、游戏充值列表;
set注意操作事项:
  • 依赖 set集合数据不重复的特征,依赖set集合hash存储结构特征完成数据过滤与快速查询;
  • redis 应该仅仅用于提供基础数据而不是提供校验结果。

5. zset类型:

在这里插入图片描述
在这里插入图片描述

zset扩展操作:

redis 应用于计数器组合排序功能对应的排名:
在这里插入图片描述

zset的注意事项:

在这里插入图片描述
zset 底层是基于 set 数据结构实现的,因此数据不能够重复;如果重复添加数据那么score 值将反复覆盖,虽然会报错。

zset类型的应用场景:
  • 基于时间线限定的任务处理
    在这里插入图片描述
  • 对于带有权重的任务,优先处理权重高的任务,采用score记录权重记录
    在这里插入图片描述
    在这里插入图片描述
    注意权重处理时是按位处理而不是按照数值大小处理,因此位数必须保持一致,不足位数在前端补0.

6. key通用操作:

  • 基本操作:
    在这里插入图片描述
  • 时效性控制:
    在这里插入图片描述
  • 查询模式:
    在这里插入图片描述
  • 通用操作:
    在这里插入图片描述

二、数据类型实践案例

1.按次结算的服务控制(可限时)

在这里插入图片描述

在这里插入图片描述

2.微信消息提示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.高级数据类型

3.1 Bitmaps数据类型:

  • 介绍:
    Bitmaps并不是实际的数据类型,而是定义在String类型上的一个面向字节操作的集合。因为字符串是二进制安全的块,它们的最大长度是512M。
    字节操作可以分为两类:恒定时间的单个字节操作(比如说将某一个字节设置为1或者0)、批量操作字节(计算给定字节范围内计算设置字节数量)。

  • 用法:
    1. setbit key offset value:给位图指定索引设置值,返回该索引位置的原始值。
    (1).零存零取
    在这里插入图片描述
    (2). 整存零取 [如果对应位的字节是不可打印字符,redis-cli会显示该字符的16进制形式]
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2. getbit key offset:获取位图指定索引的值、不存在的key被当成是空字符串来处理。
    在这里插入图片描述
    3. bitcount key [start end]:获取指定范围全部值为1的个数。
    在这里插入图片描述
    4. bitpos key targetBit [start end]:计算位图指定范围(start到end,单位为字节,如果不指定就是获取全部)第一个偏移量对应的值等于targetBit的位置。
    在这里插入图片描述
    5. bitop and|or|not|xor destkey key[key…]
    做多个bitmap的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存到destkey中。
    在这里插入图片描述

  • 业务场景:

  1. 电影网站统计每天某一部电影是否被点播、统计每天有多少部电影被点播、统计每周/月/年有多少部电影被点播、统计年度哪部电影没有被点播。
    解决方案:使用bitmaps 数据类型来存放每一天各部电影的播放情况,使用电影的id来作为存储的key,1代表已经播放、0代表未播放。如果要求每周月年的数据情况就可以使用[bitop or] 来求解。
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值