日本人妻巨大乳挤奶水免费,亚洲av之男人的天堂,日韩 欧美 动漫 国产 制服,川上奈美夫の上司に犯 在线观看

您的位置:首頁(yè) >觀察 > 正文

環(huán)球報(bào)道:手把手帶你了解redis回調(diào)機(jī)制及代碼實(shí)現(xiàn)

無(wú)德之人常嫉他人之有德?!喔?/p>


(相關(guān)資料圖)

1.redis回調(diào)

1.概念

Redis是一種高性能的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),它支持多種數(shù)據(jù)結(jié)構(gòu)和靈活的操作。除了提供常規(guī)的鍵值存儲(chǔ)功能外,Redis還支持訂閱/發(fā)布、事務(wù)、Lua腳本等高級(jí)功能,其中回調(diào)函數(shù)是Redis的一個(gè)重要特性之一。

回調(diào)函數(shù)是一種在特定事件發(fā)生時(shí)自動(dòng)執(zhí)行的函數(shù)。在Redis中,回調(diào)函數(shù)通常用于在特定事件發(fā)生時(shí)自動(dòng)執(zhí)行一些操作。這些事件包括:

客戶(hù)端連接/斷開(kāi)連接數(shù)據(jù)庫(kù)鍵過(guò)期發(fā)布/訂閱消息

通過(guò)使用回調(diào)函數(shù),我們可以在這些事件發(fā)生時(shí)執(zhí)行一些自定義的邏輯,從而實(shí)現(xiàn)更加靈活和復(fù)雜的應(yīng)用程序。

2.腳本配置文件

在Redis中,回調(diào)函數(shù)通常是通過(guò)在配置文件中定義來(lái)注冊(cè)的。下面是一個(gè)示例配置文件,其中包含了一些回調(diào)函數(shù)的定義:

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

在上面的示例中,我們注冊(cè)了四個(gè)回調(diào)函數(shù)。第一個(gè)回調(diào)函數(shù)在客戶(hù)端連接時(shí)執(zhí)行,第二個(gè)在客戶(hù)端斷開(kāi)連接時(shí)執(zhí)行,第三個(gè)在鍵過(guò)期時(shí)執(zhí)行,第四個(gè)在消息發(fā)布時(shí)執(zhí)行。

要使用回調(diào)函數(shù),我們需要編寫(xiě)相應(yīng)的腳本。腳本可以是任何可執(zhí)行文件,如Bash腳本、Python腳本等等。下面是一個(gè)示例Bash腳本,用于在客戶(hù)端連接時(shí)打印一條消息:

bashCopy code#!/bin/bash?echo "A client has connected"

在上面的腳本中,我們使用了echo命令來(lái)輸出一條消息。當(dāng)客戶(hù)端連接時(shí),Redis會(huì)自動(dòng)執(zhí)行這個(gè)腳本,并將消息輸出到控制臺(tái)。

3.概念總結(jié)

在編寫(xiě)回調(diào)函數(shù)時(shí),我們還需要考慮一些安全問(wèn)題。由于回調(diào)函數(shù)通常是在Redis進(jìn)程的上下文中執(zhí)行的,因此我們需要確保腳本不會(huì)執(zhí)行任何危險(xiǎn)操作,如刪除文件或執(zhí)行系統(tǒng)命令等等。為了確保安全性,我們可以使用一些技術(shù),如沙盒化或限制腳本執(zhí)行權(quán)限等等。

總之,回調(diào)函數(shù)是Redis的一個(gè)非常有用的特性,它可以讓我們?cè)谔囟ㄊ录l(fā)生時(shí)自動(dòng)執(zhí)行一些操作,從而實(shí)現(xiàn)更加靈活和復(fù)雜的應(yīng)用程序。如果您正在使用Redis,并且想要了解更多關(guān)于回調(diào)函數(shù)的內(nèi)容,可以看Redis官方文檔。

2.場(chǎng)景需求

1.需求

例如:京東購(gòu)物車(chē)結(jié)算,在用戶(hù)進(jìn)行結(jié)算的時(shí)候,支付時(shí)間為30分鐘,用戶(hù)未在30分鐘之內(nèi)支付,則需要進(jìn)入待支付狀態(tài)。

3.實(shí)現(xiàn)方案

咱們可以采用redis ,key有效期回調(diào)事件實(shí)現(xiàn),為每筆支付的訂單設(shè)置有限期為30分鐘,在當(dāng)前key失效的時(shí)候,redis進(jìn)行回調(diào)。

4.redis配置

首先找到redis.conf配置文件,如果你跟我一樣使用mac包管理工具brew安裝的。

找到homebrew.mxcl.redis.plist文件

打開(kāi)之后就可以看到redis.conf的文件地址了。

打開(kāi)配置文件之后找到notify-keyspace-events "",然后設(shè)置成notify-keyspace-events "Ex"

notify-keyspace-events 的參數(shù)可以是以下字符的任意組合,它指定了服務(wù)器該發(fā)送哪些類(lèi)型的通知:

字符

發(fā)送的通知

K

鍵空間通知,所有通知以__keyspace@__ 為前綴

E

鍵事件通知,所有通知以 __keyevent@__ 為前綴

g

DEL 、 EXPIRE 、 RENAME 等類(lèi)型無(wú)關(guān)的通用命令的通知

$

字符串命令的通知

l

列表命令的通知

s

集合命令的通知

h

哈希命令的通知

z

有序集合命令的通知

x

過(guò)期事件,每當(dāng)有過(guò)期鍵被刪除時(shí)發(fā)送

e

驅(qū)逐事件,每當(dāng)有鍵因?yàn)閙axmemory政策而被刪除時(shí)發(fā)送

A

參數(shù) g$lshzxe 的別名

5.代碼實(shí)現(xiàn)

首先發(fā)送一條普通消息,設(shè)置過(guò)期時(shí)間。

@ApiOperation(value = "測(cè)試redis回調(diào)")    @SaCheckLogin    @PostMapping("/test")    public ApiResponse testTask(){        redisUtil.set("FILE:userInfo","我是一條消息,來(lái)測(cè)試是否進(jìn)入回調(diào)",60);        return ApiResponse.ok();    }

添加RedisListenerConfig回調(diào)配置類(lèi)

@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失效進(jìn)入回調(diào)函數(shù)攜帶key:{}", key);            if (key != null && key.startsWith(keyInfo)) {                log.info("需要特殊處理的key,進(jìn)行業(yè)務(wù)處理");            }        }    }}

6.測(cè)試結(jié)果

關(guān)鍵詞

熱門(mén)資訊

性中国熟妇videofreesex| 亚洲AV无码一区二区一二区潮浪| 啦啦啦www播放日本观看| 天天做天天爱夜夜爽| 国产精品亚洲av在线观看| 国精无码欧精品亚洲一区| 亚洲精品巨爆乳无码大乳巨| 成人片黄网站色大片免费观看cn| 女人扒开屁股桶爽30分钟高潮 | 日本真人做爰免费视频120秒| 国产放荡对白视频在线观看 | 亚洲精品午夜无码专区| 亚洲成AV人片高潮喷水| 亚洲熟妇色xxxxx亚洲| www.五月天| 成av人电影在线观看| 无码视频一区二区三区在线观看| AV无码专区亚洲AVL在线观看 | 日本熟妇乱妇熟色a片蜜桃| 含羞草国产亚洲精品岁国产精品 | 国产成人亚洲精品狼色在线 | 丰满熟妇videosxxxxx| 国产精品伦一区二区三级视频| 久精品国产欧美亚洲色AⅤ大片| 国产在线观看无码免费视频| 被强到爽的邻居人妻完整版| 免费观看18禁无遮挡真人网站| 中文字幕日本人妻久久久免费| 日产亚洲一区二区三区| 人妻出轨系列38部分阅读| 国语自产偷拍精品视频偷| 富婆一对一刺激交友| 《交换:完美的邻居》中字| 波多野结衣视频| 精品一区二区三区四区五区六区| 与亲女洗澡时伦了| 少妇被粗大的猛烈进出免费视频 | 国产熟女露脸大叫高潮| 人人妻人人澡人人爽精品欧美| 国内精品久久毛片一区二区| 国产精品久久欧美久久一区|