无德之人常嫉他人之有德。——培根
(资料图片)
Redis是一种高性能的内存数据存储系统,它支持多种数据结构和灵活的操作。除了提供常规的键值存储功能外,Redis还支持订阅/发布、事务、Lua脚本等高级功能,其中回调函数是Redis的一个重要特性之一。
回调函数是一种在特定事件发生时自动执行的函数。在Redis中,回调函数通常用于在特定事件发生时自动执行一些操作。这些事件包括:
客户端连接/断开连接数据库键过期发布/订阅消息通过使用回调函数,我们可以在这些事件发生时执行一些自定义的逻辑,从而实现更加灵活和复杂的应用程序。
在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会自动执行这个脚本,并将消息输出到控制台。
在编写回调函数时,我们还需要考虑一些安全问题。由于回调函数通常是在Redis进程的上下文中执行的,因此我们需要确保脚本不会执行任何危险操作,如删除文件或执行系统命令等等。为了确保安全性,我们可以使用一些技术,如沙盒化或限制脚本执行权限等等。
总之,回调函数是Redis的一个非常有用的特性,它可以让我们在特定事件发生时自动执行一些操作,从而实现更加灵活和复杂的应用程序。如果您正在使用Redis,并且想要了解更多关于回调函数的内容,可以看Redis官方文档。
例如:京东购物车结算,在用户进行结算的时候,支付时间为30分钟,用户未在30分钟之内支付,则需要进入待支付状态。
咱们可以采用redis ,key有效期回调事件实现,为每笔支付的订单设置有限期为30分钟,在当前key失效的时候,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 的别名 |
首先发送一条普通消息,设置过期时间。
@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,进行业务处理"); } } }}
标签:
精彩推荐
Redis是一种高性能的内存数据存储系统,它支持多种数据结构和灵活的操作。除了提供常规的键值存储功能外...
关于开展“清朗·从严整治‘自媒体’乱象”专项行动的通知,自媒体,网信办,短视频
1、炎炎夏日,酷暑难耐,这个时候购买空调的家庭比较多,美的空调是比较常用的品牌,但是当美的空调出现...
媒体:儿子沉迷手机爸爸逼他连玩17小时,“反向教育”要把握好度
1、观音菩萨梦九重。本文到此分享完毕,希望对大家有所帮助。
来源:海外网海外网3月12日电据美国福克斯新闻网11日报道,美国知名家居用品连锁店品牌“”的联合创始人...
1、披萨实践2、培根披萨的做法3、豆腐培根小披萨4、传统意大利披萨。5、自制必胜客比萨做法本文到此结束...
1、所谓iPhone的“小圆点”实际上是iPhone系统自带的一个功能,叫做“AssistiveTouch”它能帮助我们大大...
利物浦0-1伯恩茅斯,克洛普赛后接受BT采访。克洛普:“我们在上半场占据优势,他们打出了他们想要的反击...
京东PLUS会员年卡12个月,56 8https: u jd com I8E6tqf电脑外设匠品小屋电脑椅乳胶坐垫黑框黑网+...
1、闪闪发光,就是磷光的意思。篆书(荆,闪烁)(水旁,水波)的意思是波浪在闪烁。2、055-79000李真切,音。水在石
1、通过礼券获得指挥官。2、003010是腾讯旗下腾讯游戏制作开发的一款赛车休闲手机游戏,面向公测推出。...
单刀开关和双刀开关,双刀双掷开关和一开多控开关一样吗高手指点啊很多人还不知道,现在让我们一起来看...
新型冠状病毒传播性强,不侥幸,不冒险,情谊常在,聚会不急一时。03月11日06时河北石家庄昨日累计报告...
1、轻徭薄赋,汉语成语,拼音是qīngyáobáofù。2、见“轻繇薄赋”,意思是减轻徭役,降低赋税。本文到此结束
大家好,小乐来为大家解答以上的问题。forexample和suchas的区别and soon,forexample和suchas的区别这...
汕头超声、乔锋智能3月17日深交所首发上会
1、鳄鱼[简明汉英词典]caymancrocodilecrocodiliancrocodile这个比较常用!c
1、在显示器OSD中按出调整菜单,选择其中的“重置图标”,按下“确定”,即可解决问题。2、具体如下:实...
上证报中国证券网讯近日,广西壮族自治区发展和改革委员会发布关于开展《广西陆上风电中长期发展规划》(...
资讯News
08-17
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
聚焦Policy
当好农民工的“护薪人” 近日,罗某等7名农民工在收到被拖欠的工资后,纷纷打电话向江西省南昌市...
“通讯录里所有人都知道我欠钱了” □ 本报记者 韩丹东 □ 本报见习记者 张守坤 ...
大连宝马车撞人案肇事司机被判死刑 本报讯 记者韩宇 10月29日,辽宁省大连市中级人民法院一审...
医院财务迷上网络赌博输光5000万元公款 □ 本报记者 马维博 □ 本报通讯员 汪宇堂 曹...
辊环车削 雕琢毫厘(工匠绝活) 【绝活看点】 23年来,雷虎始终扎根一线,改进钢材轧制工艺...
交警严查超标电动自行车挪用“白牌” 截至昨晚6时,处罚电动自行车违法行为共计6585笔;下一步将...
明起寒潮来袭 北方气温普降10℃以上 中央气象台预计,本周日北京平原地区最低气温降至-4℃左右...
多种蔬菜价格降幅达五成 包括菠菜、蒿子秆等 预计本月中旬蔬菜恢复供需平衡 本报讯(记者...
北京周日最低气温或达-4℃ 本报讯(记者 赵婷婷)北京青年报记者昨天从中央气象台获悉,新一股...
昌平一家四口确诊新冠肺炎 天通北苑第二社区升级为中风险地区 朝阳两涉疫校区及16所学校停课 ...