1.Redis 管道(Pipeline)
我们搬家的时候往往是大包小包。此时,有两种方案可以选择:
完全靠一己之力,一趟一趟的搬。 找个货运车,一趟就搬过去。 而Pipeline就是这个这个货运车,把你的一批命令一把送过去,然后告诉你结果。目的是节省你的网络开销(建立连接 关闭连接 再开再关,对于计算机而已都是需要开辟资源去处理的)。
1.1使用场景:
1.批处理、维护缓存数据
在电商的场景中,我们可能会把商品的一些信息放到缓存,比如说:库存数据,比如说显示的商品价格,而前篇文章提到了:Redis中的List、Set、Hash实际使用场景 我们用Redis Hash存放购物车数据,商品信息直接存在了hash的一个filed:info_productIdx
里。当我们的商品价格在后台被改掉的时候:购物车显示给用户的价格肯定也得是最新的。
2.Redis的发布发布订阅(Pub/Sub)
发布订阅,顾名思义,一个消息发布之后,已经预约了当前主题的订阅者都能收到通知。
127.0.0.1:6379> PUBLISH testChannel "hello sub"
# 返回2为订阅者的个数
(integer) 2复制
另外两个客户端订阅testChannel
通道的消息,消息发布之后订阅者收到通知:
SUBSCRIBE testChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "testChannel"
3) (integer) 1
1) "message"
2) "testChannel"
3) "hello sub"
1) "message"复制
订阅某个特定的前缀的通道:比如订阅下文中的所有秒杀活动开始的通知。
SUBSCRIBE activity*
复制
2.1使用场景:
异步消息通知(like:活动预约提醒) 我们在京东/天猫订阅的秒杀活动预约通知,其实我们往Redis技术层面来思考,Redis轻而易举就能实现了。假如活动ID为: 666
,活动key设置为:activity:666
,活动未开始之前提供用户【提醒我】按钮,当按钮被点击之后,相当于用户订阅了通道key 为:SUBSCRIBE activity:666
,而活动开始那一刻便是发布消息:PUBLISH activity:666 "IPhone 12 activiy start "
,然后通过业务代码实现站内推送或者是短信的方式通知。
3.Redis事务
Redis事务相比MySQL,在Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。
# 开启事务:
MULTI
OK
INCR foo
QUEUED
INCR bar
QUEUED
# 提交事务
EXEC
# 提交结果,按提交命令顺序返回
1) (integer) 1
2) (integer) 1复制
Redis事务中的错误处理 使用事务时可能会遇上以下两种错误:
事务在执行 EXEC 之前,入队的命令可能会出错。比如说,命令可能会产生语法错误(参数数量错误,参数名错误,等等),或者其他更严重的错误,比如内存不足(如果服务器使用 maxmemory 设置了最大内存限制的话)。从
Redis 2.6.5
开始,服务器会对命令入队失败的情况进行记录,并在客户端调用 EXEC 命令时,拒绝执行并自动放弃这个事务
。命令可能在 EXEC 调用之后失败。举个例子,事务中的命令可能处理了错误类型的键,比如将列表命令用在了字符串键上面,诸如此类。Redis不会进行特别处理:即使事务中有某个/某些命令在执行时产生了错误,
事务中的其他命令仍然会继续执行
。
下期规划:
Redis的持久化RDB及AOF机制。
文章转载自Java壹码平川,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
国产非关系型数据库 Eloqkv 初体验
JiekeXu
149次阅读
2025-04-10 23:51:35
融合Redis缓存的PostgreSQL高可用架构
梧桐
104次阅读
2025-04-08 06:35:40
Redis概要
听溪
44次阅读
2025-04-11 10:23:10
Redis数据库——Cluster集群模式
编程Cookbook
37次阅读
2025-04-16 15:34:44
安装与配置Redis
鲁鲁
37次阅读
2025-04-11 10:26:10
使用Jedis访问Redis数据库
怀念和想念
36次阅读
2025-04-11 15:08:30
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
33次阅读
2025-04-17 10:41:56
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
30次阅读
2025-04-11 09:02:30
Redis提供的持久化机制
luyingjun
27次阅读
2025-04-11 15:11:05
Redis
鲁鲁
26次阅读
2025-04-07 20:14:35