无德之人常嫉他人之有德。——培根
(资料图)
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脚
-
热点聚焦:塔里木油田迈入九千米级油气勘探开发新阶段
《人民日报》(2023年03月16日12版)图为塔里木油田果勒3C井。谭辉摄记者从中国石油塔里木油田获悉:位于塔克拉玛干沙漠腹地富满油田的果勒3C
-
每日精选:星空电影介绍_电影星空简介
1、星空是一部由林书宇执导,由徐娇、刘若英、庾澄庆、林晖闵主演的成长爱情奇幻电影,影片改编自台湾插画家几米同名绘本《星空
-
世界微头条丨青海:首次在行业协会成立消费维权服务站
青海:首次在行业协会成立消费维权服务站中工网讯(工人日报-中工网记者邢生祥)3月9日,青海省市场监督管理局消费者权益服务保障处联合省消费
-
马赫
1、马赫数是速度与音速的比值,音速(即声音的传播速度)在不同高度、温度与大气密度等状态下具有不同数值,只是一个相对值,每
-
极品家丁8_关于极品家丁8简述
1、《极品家丁8》是2009年2月1日广西人民出版社出版的一部图书,作者是禹岩。2、书中描述项羽胜利以后的另外一个时空里。3、穿越时空林晚荣通
-
传奇宠物蛋版本辅助_传奇宠物蛋版本_天天快消息
1、神途传奇里边有个打宠物蛋的服叫“松花蛋”。本文就为大家分享到这里,希望小伙伴们会喜欢。
-
美联储陷入两难 黄金走势开始被下压 看热讯
周三(3月15日)欧市盘中,现货黄金小幅走低,交投于1887 48美元 盎司附近,虽然隔夜美国CPI数据仍比较强劲,令美联储下周维持利率不变
-
英语贺卡怎么做简单又漂亮2020年_英语贺卡怎么做-全球通讯
纸、彩笔、水笔先准备好一张纸、几支彩笔和一支水笔先把长方形的纸对折一下,再打开,分成左右两部分用绿色彩笔在纸的左边画一个
-
环球快资讯:2023广东高中学考成绩证书怎么下载打印?
广东省2023年第一次普通高中学业水平合格性考试成绩证书一、官微小程序入口:点击进入4月10日10:00起,登录广东省教育考试院官方微信(ID:gd
-
这个“城堡”可能夺命?带娃游玩可长点心!|资讯
近期天气逐渐回暖,家长朋友开始带着宝宝们去户外游玩,“充气城堡”这一游乐设施也广受小朋友们喜爱。但五颜六色、梦幻可爱的“城堡”,其...
-
“末日博士”鲁比尼推出另类避险交易策略以应对高通胀风险
经济学家鲁比尼(NourielRoubini)与集团合作,推出系列规划金融产品中的首个产品,为投资者在市场大跌时提供另类避险策略。鲁比尼因预见房地
-
创新科技!全球首个3D打印房屋在中国成功落成
一座全球首个3D打印房屋于近日成功落成。这座房屋采用了最先进的3D打印技术,不仅造型新颖,而且施工速度快、成本低,创造了建筑行业的一项新
-
春耕正当时具体详细内容是什么
春耕正当时今天的热度非常高,现在也是在热搜榜上了,那么具体的春耕正当时是什么情况呢,大家可以一起来看看具体都是怎么回事吧
-
电脑分辨率不正常是怎么回事_电脑分辨率不正常 当前速讯
1、应该是显卡与驱动不匹配。2、下载的驱动不对吧显卡驱动有问题吧,,显卡驱动有问题驱动没装兼容!在驱动下应该是你的显卡驱
-
新车品鉴:一汽-大众探岳X新增车型上市 售价27.08万元
汽车现在已经越来越普及,基本上都快实现每家每户都有汽车了,那么汽车这么多的情况之下,我们在用车的过程当中肯定也就会遇到各
-
天天微资讯!土耳其2月强震已致4.8万余人遇难
新华社安卡拉3月13日电(记者王腾飞)土耳其内政部长索伊卢13日表示,2月6日发生在该国南部的强烈地震已造成至少4844
-
ChatGPT 功能即将登陆 Twitter 竞争对手 Koo 当前关注
Twitter的竞争对手Koo,正在为其平台带来自己的ChatGPT功能,称它将协助用户撰写贴文。Koo周一宣布了这一新增功能,称其为「全球首创」,并称
-
贵州轮胎:公司目前没有飞机轮胎相关产品|全球热头条
每经AI快讯,有投资者在投资者互动平台提问:请问领导,公司有没有考虑开始在飞机轮胎方面发展?这也符合公司定位。贵州轮胎(000589 SZ)3月13
-
环球观焦点:光遇:9.8复刻什么?如果不是白鸟斗,728天两周年了!
前言:大家好,我是喜欢玩游戏、聊游戏的孟婆小叔。脑海里,似乎有这样的印象,不管哪一次,官方公布复刻后,官博的评论区,充满了火药味,一
-
带鱼烧腐竹_带鱼炖腐竹
解答:1、将豆干浸泡在温水中,直到它膨胀。2、在带鱼表面轻轻划几刀,以便快速入味。3、加入葱、姜、白胡椒、盐和料酒,拌匀
-
轿跑SUV造型!小鹏G6申报图曝光,可选装激光雷达!|世界快资讯
如今的国内汽车市场,从年初的新能源车“价格战”,到现在已经波及到了燃油车市场,正当各大车企都沉浸在降价促销的竞争中时,小鹏这边又有...
-
香椿拌豆腐做法家常菜_香椿拌豆腐的做法大全 环球焦点
1、自制的豆腐2、把上面不平的地面切掉。3、砧板上的骰子4、将焯过的香椿切碎5、将豆腐放入锅中,然后放入香椿。6、加入适
-
南通一男子盗走黄金首饰被拘5个月_信息
近日,南通秦女士报警称家里有几件黄金首饰被盗。民警发现密码门锁并没有被撬过,于是对知道密码的人逐一进行排查,可惜未果。不料几天后,朋
-
北京HPV疫苗预约入口(二价+四价+九价) 当前播报
北京HPV疫苗预约入口(二价+四价+九价)可以直接点击下面预约北京HPV疫苗预约入口,预约时请仔细阅读温馨提醒二价疫苗预约入口:点击预约入口四
-
全球球精选!第三届汉服花朝文化节开幕
第三届汉服花朝文化节开幕
-
穿了这么多年的羽绒服,还不知道怎么洗?不要一次就把衣服洗坏了
厚厚的羽绒服,清洗起来也是一件麻烦事情,送到干洗店清洗价格昂贵,自己清洗又怕洗不好,导致羽绒服越洗越不够保暖。其实有很多人虽然穿了这
-
动态:场地平整土方量计算中的零线_场地平整土方量计算
1、场地平整土方量计算步骤与方法 在地形图上场平的范围内,按比例画出方格网,方格越小越精确,通常不复杂的地形为每个方格
-
即时看!摩托罗拉40 PRO出现:你能猜到它的设计吗
摩托罗拉成为首批推出Snapdragon8Gen2智能手机的公司之一。像往常一样,该公司保留了在中国推出新旗舰店的
-
劲嘉股份累计回购2.09%股份 耗资2.48亿元|全球热议
劲嘉股份(002191 SZ)公告,公司截至2023年3月10日累计回购股份3069 1万股,约占公司目前总股本的2 09%,累计成交金额为2 48亿元(不含交易费用)。