国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

??
1. ?? ??
2. ??? ??
三、配置
三、案例
代碼
新增和修改都是set指令
刪除
過期
? ??? ??? Redis SpringBoot? Redis ? ?? ???? ?????? ??

SpringBoot? Redis ? ?? ???? ?????? ??

May 26, 2023 pm 01:55 PM
redis springboot key

1. ?? ??

Keyspace ??? ???? ?????? ???? ??? ???? ?? ????? Redis ?? ???? ???? ??? ? ????.

? ?? ???? ?? ?????.

LPUSH ? ? [value …] ??? ?? ?? ????.

DB ??????? ?? ??? ?.

???? Redis? ?? ? ?? ??(pub/sub)? ?? ????? ?? ? ?? ??? ???? ?? ?????? ??? ?? ?? ?? ????? ?? ??? ??? ? ????.

Redis? ?? ?? ? ?? ??? ?? ? ????? ??? ???? ??? ????? ???? ??? ??? ??? ?? ?? ? ?? ??? ???? ?? ? ????. ???? ???? ?????? ??? ?????. ?? ?? ?? ?? ??? ?? ???? ?????.

???? ?? ? ?? ?? ??? ?? ????? ???? Lua ?????? ??? ?? ? ??? ?????? ?? ???? ??? ??? ??? ? ????. ??.

2. ??? ??

??????? ???? ? ??? ?? ????? ??? ? ?? ??? ???? ????.

?? ??, 0 ??? ??????? mykey ?? ?? DEL key [key …] ??? ???? ???? ? ?? ???? ?????. ?? ?? ? ?? PUBLISH ?? ??? ??? ???? ?? ?????. 0?號數(shù)據(jù)庫的鍵?mykey?執(zhí)行?DEL key [key …]命令時(shí), 系統(tǒng)將分發(fā)兩條消息, 相當(dāng)于執(zhí)行以下兩個(gè)?PUBLISH channel message?命令:

PUBLISH __keyspace@0__:mykey del
PUBLISH __keyevent@0__:del mykey

訂閱第一個(gè)頻道 __keyspace@0__:mykey 可以接收 0 號數(shù)據(jù)庫中所有修改鍵 mykey 的事件, 而訂閱第二個(gè)頻道 __keyevent@0__:del則可以接收 0 號數(shù)據(jù)庫中所有執(zhí)行 del 命令的鍵。

以 keyspace 為前綴的頻道被稱為鍵空間通知(key-space notification), 而以 keyevent 為前綴的頻道則被稱為鍵事件通知(key-event notification)。

當(dāng) del mykey 命令執(zhí)行時(shí):

  • 鍵空間頻道的訂閱者將接收到被執(zhí)行的事件的名字,在這個(gè)例子中,就是 del 。

  • 鍵事件頻道的訂閱者將接收到被執(zhí)行事件的鍵的名字,在這個(gè)例子中,就是 mykey 。

三、配置

因?yàn)殚_啟鍵空間通知功能需要消耗一些 CPU , 所以在默認(rèn)配置下, 該功能處于關(guān)閉狀態(tài)。

可以通過修改 redis.conf 文件, 或者直接使用 CONFIG SET 命令來開啟或關(guān)閉鍵空間通知功能:

當(dāng) notify-keyspace-events 選項(xiàng)的參數(shù)為空字符串時(shí),功能關(guān)閉。

另一方面,當(dāng)參數(shù)不是空字符串時(shí),功能開啟。

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

SpringBoot? Redis ? ?? ???? ?????? ??

輸入的參數(shù)中至少要有一個(gè) K或者 E , 否則的話, 不管其余的參數(shù)是什么, 都不會有任何通知被分發(fā)。

舉個(gè)例子, 如果只想訂閱鍵空間中和列表相關(guān)的通知, 那么參數(shù)就應(yīng)該設(shè)為 Kl , 諸如此類。

將參數(shù)設(shè)為字符串"AKE" 表示發(fā)送所有類型的通知。

每當(dāng)一個(gè)鍵因?yàn)檫^期而被刪除時(shí),產(chǎn)生一個(gè) expired 通知。

每當(dāng)一個(gè)鍵因?yàn)?code>maxmemory政策而被刪除以回收內(nèi)存時(shí),產(chǎn)生一個(gè) evicted 通知。

所有命令都只在鍵真的被改動了之后,才會產(chǎn)生通知。

比如說,當(dāng) SREM key member [member …]

config set notify-keyspace-events KEA

? ?? ?? __keyspace@0__:mykey? ???? ?????? 0??? ??? ?? ? mykey? ???? ??? ? ????. ? ?? ??? ???? __keyevent@0__:del ??? 0? ???????? del ??? ???? ?? ?? ??? ? ????.

??????? ???? ?? ??? ????? ????? ??, ?????? ???? ?? ??? ? ??? ????? ???.

del mykey ??? ??? ?:
  • keyspace ?? ???? ??? ???? ??(? ?? del )? ?? ???.

  • ? ??? ??? ???? ???? ??? ?? ??(? ?? mykey )? ?? ???.

3. ??

? ?? ?? ??? ??? ??? CPU? ???? ??? ?? ????? ? ??? ?? ????.

??redis.conf ??? ???? ????? ?? ??? ??? ? ? ???, CONFIG SET ??? ?? ??? ?? ????. ????notify-keyspace-events ??? ????? ? ???? ?? ??? ????. ??. ??????, ????? ? ???? ?? ?? ?? ??? ??????. ????notify-keyspace-events? ????? ??? ??? ?? ?? ??? ???? ?? ??? ??? ? ????. ????SpringBoot? redis ? ?? ???? ??? ?????????????? ?????? K ?? E</? ?? ?? ??? ???. code>, ??? ??? ??? ????? ???? ??? ???? ????. ?????? ?? ?????? ??? ??? ??? ????? ????? <code>Kl? ???? ???. ?????? ??? ?? ??? ????? ????? "AKE" ???? ?????. ?????? ??? ?? ?? ??? ??? ?? ??? ?????. ????maxmemory ???? ?? ???? ???? ?? ?? ??? ??? ?? ??? ?????. ???????? ??? ?? ??? ??? ??? ??? ?????. ?????? ?? SREM ? ?? [member &hellip;]? ???? ???? ?? ??? ????? ?? ?? ?? ?? ?? ??? ?? ??? ?? ??? ????? ? ??? ??? ??? ????. ???????? ??? ??? ?? ??? ?? ?? ?? ??? ???? ?? ???? ?? ?? ????. ????Redis? ?? ? ?? ??? ???? ??? ?? ?????. ???????? ????? ????? ? ?? ???? ?? ??? ?? ?? ?????. ?????? ???? ?????? ???? ? ?? ?? ???? ?? ??????? ??? ?? ????? ?? ?????. ???? ? ???? ? ???? ??? ?? ???? ?? ?? ???????? ???? Redis? ??? ??? ?????. ??????Redis? TTL? 0? ? ?? ?? ????? ?? ???? ????. ????? ??? ?? ????? ??? TTL? ??? ?? ?? ??? ?? TTL? 0? ? ? ????. ?? ??? ??? ??? ??? ?? ??? ?????. ??

因此, Redis 產(chǎn)生expired通知的時(shí)間為過期鍵被刪除的時(shí)候, 而不是鍵的生存時(shí)間變?yōu)?0 的時(shí)候。

三、案例

按上文內(nèi)容,我們先將redis的鍵空間通知開啟,我們開啟所有的通知,在可以端中測試后沒問題再到代碼中測試。

連接到redis 輸入一下命令

SpringBoot? Redis ? ?? ???? ?????? ??

config set notify-keyspace-events KEA

訂閱鍵空間和鍵事件的主題

SpringBoot? Redis ? ?? ???? ?????? ??

psubscribe &#39;__key*__:*&#39;#對所有庫鍵空間通知
 
psubscribe &#39;__keyspace@2__:*&#39; #是對db2數(shù)據(jù)庫鍵空間通知
 
psubscribe &#39;__keyspace@2__:order*&#39; #是對db2數(shù)據(jù)庫,key前綴為order所有鍵的鍵空間通知

創(chuàng)建一個(gè) key :name valus:zhangsan

set name wsl

觀察訂閱的窗口 會受到兩個(gè)消息,第一個(gè)是:鍵空間 第二個(gè)是鍵事件,鍵空間是內(nèi)容是操作指令,主題中包含有key,鍵事件主題中包含了指令,內(nèi)容是key。

SpringBoot? Redis ? ?? ???? ?????? ??

到這里說明已經(jīng)開啟了鍵空間通知

代碼

以下代碼采用string類型演示

在配置一下MessageListenerContainer類,將我們寫好的監(jiān)聽類添加到該類中即可,刪除和過期都是需要添加,我這里就一起添加了后面就不做演示。

@Configuration
public class RedisConfig {
 
    @Autowired
    private RedisTemplate redisTemplate;
 
    @Autowired
    private RedisUpdateAndAddListener redisUpdateAndAddListener;
 
    @Autowired
    private RedisDeleteListener redisDeleteListener;
 
    @Autowired
    private RedisExpiredListener redisExpiredListener;
 
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        //監(jiān)聽所有的key的set事件
        container.addMessageListener(redisUpdateAndAddListener, redisUpdateAndAddListener.getTopic());
        //監(jiān)聽所有key的刪除事件
        container.addMessageListener(redisDeleteListener,redisDeleteListener.getTopic());
        //監(jiān)聽所有key的過期事件
        container.addMessageListener(redisExpiredListener,redisExpiredListener.getTopic());
        return container;
    }
 
 
}

新增和修改都是set指令

所以監(jiān)聽的主題都一樣,實(shí)現(xiàn)MessageListener接口,重寫onMessage這里就是收到消息的處理邏輯

@Component
@Data
public class RedisUpdateAndAddListener implements MessageListener {
	//監(jiān)聽的主題
    private  final PatternTopic topic = new PatternTopic("__keyevent@*__:set");
 
    @Override
    public void onMessage(Message message,byte[] pattern){
        String topic = new String(pattern);
        String msg = new String(message.getBody());
        System.out.println("收到key更新或修改,消息主題是:"+ topic+",消息內(nèi)容是:"+msg);
    }
 
}

在redis中對name這個(gè)key進(jìn)行set操作

set name wsl

在控制臺就可以看到name這個(gè)key被操作了

SpringBoot? Redis ? ?? ???? ?????? ??

刪除

跟上面的更新監(jiān)聽一樣,只需要把訂閱主題更改一下即可。同樣需要添加到這個(gè)RedisMessageListenerContainer,上面已經(jīng)添加,這里不做演示

@Component
@Data
public class RedisDeleteListener implements MessageListener {
 
    //監(jiān)聽主題
    private  final PatternTopic topic = new PatternTopic("__keyevent@*__:del");
 
    /**
     *
     * @param message 消息
     * @param pattern 主題
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String topic = new String(pattern);
        String msg = new String(message.getBody());
        System.out.println("收到key的刪除,消息主題是:"+ topic+",消息內(nèi)容是:"+msg);
    }
}

在redis輸入命令,del name 在控制臺可以看到已經(jīng)收到消息了。

SpringBoot? Redis ? ?? ???? ?????? ??

過期

如上面的操作方式一樣

@Data
@Component
public class RedisExpiredListener implements MessageListener {
 
    //監(jiān)聽主題
    private  final PatternTopic topic = new PatternTopic("__keyevent@*__:expired");
 
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String topic = new String(pattern);
        String msg = new String(message.getBody());
        System.out.println("收到key的過期,消息主題是:"+ topic+",消息內(nèi)容是:"+msg);
    }
}

?在redis中寫一個(gè)定時(shí)刪除的keySETEX age 18 3三秒后就可以控制臺打印了相關(guān)信息

SpringBoot? Redis ? ?? ???? ?????? ??

? ??? SpringBoot? Redis ? ?? ???? ?????? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
?? Laravel? ??? ?? ? : 2024 ?? ?? ?? Laravel? ??? ?? ? : 2024 ?? ?? Apr 30, 2025 pm 02:18 PM

2024 ?? ?? Laravel ?? ???? ??? ????. 1. Laraveldebugbar, ??? ?????? ????? ? ?????. 2. ??? ?? ???? ????? ???? Laraveltelescope; 3. Laravelhorizon, Redis ??? ?? ??. ??? ?? ?? ?? ??? ? ?? ???? ??? ???? ? ????.

Laravel ?? ?? ? ?? ?? (Windows/Mac/Linux) Laravel ?? ?? ? ?? ?? (Windows/Mac/Linux) Apr 30, 2025 pm 02:27 PM

?? ?? ???? Laravel ??? ???? ??? ??? ????. 1. windows : XAMPP? ???? PHP ? Composer? ???? ?? ??? ???? Laravel? ?????. 2.MAC : Homebrew? ???? PHP ? ???? ???? Laravel? ??????. 3.Linux : Ubuntu? ???? ???? ?????? PHP ? Composer? ???? Laravel? ??????. ? ???? ?? ??? ??? ???? ?? ??? Laravel ?? ??? ??? ??? ???? ?? ?????.

REDIS : ?? ?????? ??? ?? REDIS : ?? ?????? ??? ?? May 07, 2025 am 12:09 AM

Redis? ???? ?? ?? ???????? ???? ?? ?? ????? ?? ? ??? ?? ? ???? ???? ???? ????. 1.Redis? ??? ??, ?? ?? ? ?? ??, ?? ??? ? ?? ?? ?? ?? ??? ?????. 2. ???? ??????? ???? ?????? ??? ?? ? ???? ??? ???? ??? ???? ???? ????. 3. Redis? ?? ??????? ?? ?? ???? ????? ?? ???? ??? ?? ???????.

Linux? ??? ???? ???? ??? ?????? Ulimit? ???? ??? Linux? ??? ???? ???? ??? ?????? Ulimit? ???? ??? May 29, 2025 pm 11:09 PM

Linux System? Ulimit ??? ?? ??? ???? ???? ??? ??? ??? ?????. 1. ulimit? ?? ??? ? (-n), ??? ?? (-v), ??? ??? (-u) ?? ?? ? ??? ?? ? ? ?????. 2. ULIMIT-N2048? ?? ?? ??? ?? ULIMIT ??? ?? ????? ?? ???? ?????. 3. ??? ? ??? ???? /etc/security/limits.conf ? pam ?? ??? ???? sessionRequiredPam_limits.so? ???????. 4. SystemD ???? ?? ???? lim? ???????.

Redis? ?? ?????????? Redis? ?? ?????????? May 05, 2025 am 12:07 AM

Redis? ?? ????????? ??? ?????? ?????. 1. ???????? Redis? ???? ???? ??? ??? ?????. 2. ???? Redis? ?? ???? ?? ??? ??????. 3. ??? ?????? Redis? ??? ??????? ??? Publish-Subscribe ??? ?????.

REDIS : SQL ?? - NOSQL ?? REDIS : SQL ?? - NOSQL ?? May 08, 2025 am 12:25 AM

Redis? ???? ????? ?? SQL ??????? ?? ????. 1) Redis? ??? ????? ?? ?? ?? ?? ? ?? ??? ?????. 2) ??? ??? ??? ??? ?? ? ???? ?? ??? ??? ??? ?????. 3) ?? ??? ??? ??? ?????? ?? ???? ?? ??? ? ? ????.

PHPStudy? ?? ?? PHP ? ??? ????? ?? ? ?? PHPStudy? ?? ?? PHP ? ??? ????? ?? ? ?? May 16, 2025 pm 07:54 PM

PHPStudy? ???? ?? PHP ? ???? ???? ???? ??? ?????. 1. PHPStudy ?? ? ??? ??; 2. ? ??? ?? ???? ? ?????? ??? ?????. 3. ?? ???? ???? ?? PHP ????? ??????. 4. ? ??? ??? ????? ???????. ? ??? ?? ??? ???? ?? PHP ? ???? ???? ?? ? ? ????.

Redis : ??? ?? ?? ????? ????? Redis : ??? ?? ?? ????? ????? May 03, 2025 am 12:11 AM

redisisanopen-source, in-memorydatructurestorestoreusedasadatabase, cache ? messagebroker, excell

See all articles