环球实时:手把手带你了解redis回调机制及代码实现
无德之人常嫉他人之有德。——培根
(相关资料图)
1.redis回调
1.概念
Redis是一种高性能的内存数据存储系统,它支持多种数据结构和灵活的操作。除了提供常规的键值存储功能外,Redis还支持订阅/发布、事务、Lua脚本等高级功能,其中回调函数是Redis的一个重要特性之一。
回调函数是一种在特定事件发生时自动执行的函数。在Redis中,回调函数通常用于在特定事件发生时自动执行一些操作。这些事件包括:
客户端连接/断开连接数据库键过期发布/订阅消息通过使用回调函数,我们可以在这些事件发生时执行一些自定义的逻辑,从而实现更加灵活和复杂的应用程序。
2.脚本配置文件
在Redis中,回调函数通常是通过在配置文件中定义来注册的。下面是一个示例配置文件,其中包含了一些回调函数的定义:
bashCopy code# Sample Redis configuration file# Register a callback function to execute when a client connectsclient-connect-callback /path/to/client-connect-script.sh# Register a callback function to execute when a client disconnectsclient-disconnect-callback /path/to/client-disconnect-script.sh# Register a callback function to execute when a key expireskeyspace-event-notification expired /path/to/key-expire-script.sh# Register a callback function to execute when a message is published to a channelnotify-keyspace-events KEA /path/to/pubsub-script.sh
在上面的示例中,我们注册了四个回调函数。第一个回调函数在客户端连接时执行,第二个在客户端断开连接时执行,第三个在键过期时执行,第四个在消息发布时执行。
要使用回调函数,我们需要编写相应的脚本。脚本可以是任何可执行文件,如Bash脚本、Python脚本等等。下面是一个示例Bash脚本,用于在客户端连接时打印一条消息:
bashCopy code#!/bin/bashecho "A client has connected"
在上面的脚本中,我们使用了echo命令来输出一条消息。当客户端连接时,Redis会自动执行这个脚本,并将消息输出到控制台。
3.概念总结
在编写回调函数时,我们还需要考虑一些安全问题。由于回调函数通常是在Redis进程的上下文中执行的,因此我们需要确保脚本不会执行任何危险操作,如删除文件或执行系统命令等等。为了确保安全性,我们可以使用一些技术,如沙盒化或限制脚本执行权限等等。
总之,回调函数是Redis的一个非常有用的特性,它可以让我们在特定事件发生时自动执行一些操作,从而实现更加灵活和复杂的应用程序。如果您正在使用Redis,并且想要了解更多关于回调函数的内容,可以看Redis官方文档。
2.场景需求
1.需求
例如:京东购物车结算,在用户进行结算的时候,支付时间为30分钟,用户未在30分钟之内支付,则需要进入待支付状态。
3.实现方案
咱们可以采用redis ,key有效期回调事件实现,为每笔支付的订单设置有限期为30分钟,在当前key失效的时候,redis进行回调。
4.redis配置
首先找到redis.conf配置文件,如果你跟我一样使用mac包管理工具brew安装的。
找到homebrew.mxcl.redis.plist
文件
打开之后就可以看到redis.conf的文件地址了。
打开配置文件之后找到notify-keyspace-events ""
,然后设置成notify-keyspace-events "Ex"
notify-keyspace-events 的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知:
字符 | 发送的通知 |
---|---|
K | 键空间通知,所有通知以__keyspace@ |
E | 键事件通知,所有通知以 __keyevent@ |
g | DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知 |
$ | 字符串命令的通知 |
l | 列表命令的通知 |
s | 集合命令的通知 |
h | 哈希命令的通知 |
z | 有序集合命令的通知 |
x | 过期事件,每当有过期键被删除时发送 |
e | 驱逐事件,每当有键因为maxmemory政策而被删除时发送 |
A | 参数 g$lshzxe 的别名 |
5.代码实现
首先发送一条普通消息,设置过期时间。
@ApiOperation(value = "测试redis回调") @SaCheckLogin @PostMapping("/test") public ApiResponse testTask(){ redisUtil.set("FILE:userInfo","我是一条消息,来测试是否进入回调",60); return ApiResponse.ok(); }
添加RedisListenerConfig
回调配置类
@Slf4j@Configurationpublic class RedisListenerConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); return container; } @Component public static class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { public RedisKeyExpirationListener(RedisMessageListenerContainer container) { super(container); } @Override public void onMessage(Message message, byte[] pattern) { final String keyInfo = "FILE:userInfo"; String key = message.toString(); log.info("redis失效进入回调函数携带key:{}", key); if (key != null && key.startsWith(keyInfo)) { log.info("需要特殊处理的key,进行业务处理"); } } }}
6.测试结果
标签:
相关文章
环球实时:手把手带你了解redis回调机制及代码实现
Redis是一种高性能的内存数据存储系统,它支持多种数据结构和灵活的操作。除了提供常规的键值存储功能外,Redis还支持订阅 发布、事务、Lua脚
过敏性咳嗽一般要多久痊愈_过敏性咳嗽一般要多久
1、病情分析:过敏性咳嗽发生的时间与患者自身的体质、病情的严重程度以及是否采取积极的治疗措施有直接关系。2、如果采取积极
债券承销业务存违规行为 中信建投证券被北京证监局责令改正
3月15日,北京证监局官网发布关于对中信建投证券股份有限公司采取责令改正措施的决定。经查,该公司在开展债券承销业务的过程中,存在以下问题
in business_on business 动态
1、onbusiness:固定搭配“因公”forbusiness:for是表示目的的意思。2、译为“为了,因为,
每日视讯:盾安环境:公司已与主流新能源车企及系统公司建立了合作 包括吉利、蔚来、一汽等主机厂
有投资者在投资者互动平台提问:您好,董秘!公司汽车热管理业务现主要覆盖国内汽车厂商,请问对于欧美汽车厂商,如特斯拉、通用、奔驰、宝马
短片电影《祈祷》入围第20届世界民族电影节_当前信息
内蒙古自治区电影集团12日消息指,由内蒙古青年导演朝鲁门自编自导短片电影《祈祷》入围第20届世界民族电影节。世界民族电影
Team(TISI.US):2022年Q4财报实现营收2.113亿美元-全球即时看
Team(TISI US):2022年Q4财报实现营收2 113亿美元,前值为2 237亿美元;每股收益为-5 46美元,前值为-8 90美元。
中国诚通发展集团(00217)附属与内蒙古锡多铁路订立售后回租协议 环球速看
智通财经APP讯,中国诚通发展集团(00217)发布公告,于2023年3月14日,公司间接全资附属公司诚通融资租赁与承租人内蒙古锡多铁路股份有限公司订
21 年放假安排_21年放假安排时间表
1、今年五一连放5天假【2021年最新放假安排汇总】3月至11月,总计放假21天,需补班5天。2、-清明节:4月3日(周
全国人大代表李燕履职一年间:用实际行动书写时代美好画卷_当前焦点
使命在肩,践维笃行。2022年,全国人大代表、齐鲁制药集团总裁李燕积极贯彻“十四五”规划对医药产业发展的新要求,把履行代表责任与企业家使...
4月25日西安最新疫情消息通知 天天热议
北京时间4月25日西安疫情最新消息-西安截至4月25日08时35分疫情数据1、现存确诊:20较昨日新增待公布2、累计
天天信息:赫莲娜面霜适合什么肤质 赫莲娜面霜适合油皮还是干皮
不同的肤质使用的面霜也是不太一样的,这个赫莲娜的面霜适合什么肤质的人使用?这款面霜干皮使用好一些还是油皮使用好?
世界观焦点:内分泌失调会有哪些症状表现女性_内分泌失调会有哪些症状表现
1、病情分析:因为内分泌紊乱实际上是所有内分泌系统疾病的统称,根据功能紊乱的腺体,其症状也是不同的。2、比如甲亢可以表现
官方回应山西泽州二三孩中考将加10分:由于加分对象十几年后才中考,加分措施还未执行过
3月13日,据中国新闻周刊报道,近日,山西泽州二三孩中考将加10分引发关注。《泽州县促进人口均衡发展九项措施》规定,在泽
特此说明写在哪个位置图片_特此说明写在哪个位置-滚动
1、7 3 5发文机关署名、成文日期和印章7 3 5 1加盖印章的公文成文日期一般右空四字编排,印章用红色,不得
广发信用卡的消费利息是什么|焦点快看
广东发展银行的消费利息是指贷款卡持卡人的非现金交易不再享受免息还款期待遇,自发卡机构记账日起至还款日支付透支利息,除持卡人与发卡机构
环球看点!俄军事观察员:春夏攻势将是特别军事行动的关键阶段;
俄军事观察员:春夏攻势将是特别军事行动的关键阶段;据俄罗斯卫星通讯社援引俄“ura ru”网站报道,俄军事观察员称,春夏
市区开展便道设施集中整治
本报讯(路志虎)日前,市城管局市政维护管理中心开展市区便道集中维修整治行动,进一步推动城市品质建设,扮靓城市颜值。截至目前,已维修便
【你好代表】王建广:乡村振兴需选出“领头雁”栽下“梧桐树”
央视网消息(记者徐辉):“乡村振兴要选好‘领头雁’,栽下‘梧桐树’,没有产业就无法带动经济发展,就无法吸引、留住人才。”作为一名基...
秋梨膏怎么熬制 秋梨膏如何熬制
1、将梨用食盐杀菌搓洗,用清水冲洗干净。2、用擦丝器将梨擦能丝,也可用绞馅机绞碎,目的是方便快速熬煮软烂。3、将上述所有配料(除川贝粉外
江西大动作!集中整治 特别是钨、稀土、锂!啥情况?
【江西大动作!集中整治特别是钨、稀土、锂!啥情况?】日前,江西省人民政府在其官方网站上发布了《全省深入整治规范矿产资源保护开发利用专
北海康成:存放于硅谷银行的现金并不重大
北海康成:存放于硅谷银行的现金并不重大:北海康成公告,公司董事会获悉近期媒体报导,指出SiliconValleyBank(SVB,硅谷银行)已被加州金融保护与创
大侠立志传敏捷属性提升是多少
在游戏大侠立志传(Hero & 039;sAdventure)中,麻利是网友能够经过跑图提高,况且经验提高值与识图经验提高值同等,每继续奔驰1分钟大致能增多3点
千元以下投资小项目_千元以下投资|天天观焦点
1、一般基金是200起投!2、先学会量入为出,有了结余才能理财3、建议买一些人身保险,存一些钱。量入为出买一点基金定投。
紧抓后冬奥契机 朝阳区举办体育产业工作会
近日,朝阳区体育产业工作会暨体育产业交流活动在朝阳宾馆举行,140余家从事场馆经营、健身休闲、体育传媒等相关行业的单位代表参加,为增强朝
Maven编译提示“Malformed \uxxxx encoding” 天天聚看点
这种主要是因为mvn本地仓库里有些包拉取的有问题,找出来然后删除即可,原文:java lang IllegalArgumentException:Malfor