婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > redis鍵空間通知使用實現

redis鍵空間通知使用實現

熱門標簽:貴州電銷卡外呼系統 十堰營銷電銷機器人哪家便宜 魔獸2青云地圖標注 超呼電話機器人 日本中國地圖標注 山東外呼銷售系統招商 宿遷便宜外呼系統平臺 鄭州人工智能電銷機器人系統 北京400電話辦理收費標準

導語

最近在開發一個定時活動,而且活動是多個場次的。這個是后就需要在活動開始的時候推送信息給客戶端,結束的時候也要推送一次。簡單的設計方案就是將配置緩存在redis,然后每隔一秒就輪詢reids,獲取配置信息,然后判斷是不是到活動開始或者結束的時間點,然后推送給客戶端。

但是,這里會有一個問題,如果沒有到活動開始或結束的時間點,這里會造成很多無用的輪詢操作。這個操作不但增大了對這個key的訪問量,同時也會占用cpu,降低機器性能。

redis在2.8.0版本提供了一個鍵空間通知功能機制,對于這個功能的詳細描述,可以查閱官方文檔。簡單總結就是,客戶端可以訂閱一個key,當這個可以發生改變時,redis會通知到已經訂閱的客戶端。

實現

這個實現也很簡單,我們可以通過一個demo來看看如何使用這個機制。

package main

import (
   "context"
   "fmt"
   "github.com/go-redis/redis/v8"
   "time"
)

var redisCli *redis.Client

func init() {
   // 連接redis
   redisCli = redis.NewClient(redis.Options{
      Addr:     "127.0.0.1:6379",
      Password: "redis123",
   })
}

/*
 * redis key 過期自動通知
 */
func SetExpireEvent() {
   // 設置一個鍵,并且3秒鐘之后過期
   redisCli.Set(context.Background(), "test_expire_event_notify", "測試鍵值過期通知", 3*time.Second)
}

func SubExpireEvent() {
   // 訂閱key過期事件
   sub := redisCli2.Subscribe(context.Background(), "__keyevent@0__:expired")
   
   // 這里通過一個for循環監聽redis-server發來的消息。
   // 當客戶端接收到redis-server發送的事件通知時,
   // 客戶端會通過一個channel告知我們。我們再根據
   // msg的channel字段來判斷是不是我們期望收到的消息,
   // 然后再進行業務處理。
   for {
      msg := -sub.Channel()
      fmt.Println("Channel ", msg.Channel)
      fmt.Println("pattern ", msg.Pattern)
      fmt.Println("pattern ", msg.Payload)
      fmt.Println("PayloadSlice ", msg.PayloadSlice)
   }
}

func main() {
   SetExpireEvent()
   go SubExpireEvent()
   
   // 這里sleep是為了防止main方法直接推出
   time.Sleep(10 * time.Second)
}

代碼結果輸出如下:

上面代碼實現邏輯很簡單,核心邏輯就是訂閱__keyevent@0__:expired這個事件,然后一個循環等待事件的通知。值得注意的是,要啟用這個特性需要修改配置文件,啟用notify-keyspace-events這個配置,可以參考配置文件中的注釋對不同事件進行啟用。

在業務中使用

回到開始提及的業務場景,如何在這種場景中使用redis的機制呢?其實很簡單,當活動配置到數據庫之后,會有一個更新緩存的步驟。在將數據設置在活動緩存時,只要我們計算當前時間到活動開始/結束這個時間差,將這個差作為鍵的過期時間。

例如,活動id1的開始時間為t0, 結束時間為t2, 當前時間為t。這個時候就可以這么設置:

// 活動開始的key設置
redisCli.Set(context.Background(), "id1:start", "活動開始了", t0 - t)
// 活動結束結束的key設置
redisCli.Set(context.Background(), "id1:start", "活動開始了", t1 - t)

通過這么設置,當活動開啟/結束就可以接收到相應的通知了。

總結

這種方案其實可以完全滿足文中的需求場景,但是這種方案其實也存在一些問題。其實這些問題在redis文檔中也有相應說明。

  • 第一,redis-server在推送這個事件通知時,只要訂閱了這個事件的客戶端端都會收到這個消息。通常,我們的業務都是跑在多個結點中,所以這個時候就要根據場景看要不要進行業務的原子操作。
  • 第二,redis-server只會推送一次這個通知。假如說在redis-server推送這個通知時,結點掛了或者由于其他異常情況沒有收到消息,redis-server不會再重新推送。
  • 第三,通知可能會延遲。由于redis實現機制,對于過期的鍵,會有兩種機制進行處理,一種是當命令訪問鍵時,發現鍵已過期。另一種是通過后臺系統在后臺逐步查找過期的鍵,以便能夠收集那些從未被訪問的鍵。所以會有出現延遲的可能。

本文介紹了使用redis的鍵空間通知機制來實現了一種業務場景,當然這種方式并不是最好的,還有其他方式來實現。在實際開發中會有很多的因素要考慮,而且實現方式也是多種多樣,這個就需要我們分析每一種方案的利弊,然后進行抉擇。

到此這篇關于redis鍵空間通知使用實現的文章就介紹到這了,更多相關redis鍵空間通知 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • redis學習之RDB、AOF與復制時對過期鍵的處理教程
  • 大家都應該知道的Redis過期鍵與過期策略
  • Redis 2.8-4.0過期鍵優化過程全紀錄
  • Redis開啟鍵空間通知實現超時通知的步驟詳解
  • 使用redis實現延遲通知功能(Redis過期鍵通知)

標簽:果洛 北京 江蘇 大慶 臺州 楊凌 吉安 朝陽

巨人網絡通訊聲明:本文標題《redis鍵空間通知使用實現》,本文關鍵詞  redis,鍵,空間,通知,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《redis鍵空間通知使用實現》相關的同類信息!
  • 本頁收集關于redis鍵空間通知使用實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩一区三区| 日本v片在线高清不卡在线观看| 国产专区欧美精品| 美女网站一区二区| 欧美人与z0zoxxxx视频| 亚洲免费在线观看视频| 国产精品丝袜久久久久久app| 国产精品一二三四区| 国模大尺度一区二区三区| 91搞黄在线观看| 麻豆91在线看| 在线看日本不卡| 中文字幕不卡一区| 不卡欧美aaaaa| 亚洲日本一区二区| 欧美三级视频在线| 麻豆精品视频在线观看视频| 精品国产一区二区三区不卡| 国产激情视频一区二区三区欧美 | 国产精品午夜在线| 激情综合色播激情啊| 欧美高清dvd| 日av在线不卡| 中文字幕成人av| 国产精品黄色在线观看 | 91久久精品网| 亚洲精品日韩综合观看成人91| 亚洲欧美日韩国产一区二区三区 | 在线日韩一区二区| 亚洲韩国精品一区| 精品国产91九色蝌蚪| 粉嫩aⅴ一区二区三区四区五区| 精品成人一区二区| 奇米一区二区三区av| 欧美性猛片xxxx免费看久爱| 成人午夜看片网址| 国产精品美女久久久久aⅴ国产馆| 成人99免费视频| 精品国产青草久久久久福利| 国内久久精品视频| 亚洲欧洲99久久| 欧美一级精品大片| 国产成人午夜高潮毛片| 亚洲精品中文字幕在线观看| 成人免费av在线| 亚洲欧美视频在线观看视频| 国产精品久久久久久久久免费丝袜 | 亚洲成人综合视频| 国产精品久久精品日日| 欧美日韩一区二区三区四区| 久久精品国产99国产精品| 亚洲乱码国产乱码精品精小说 | 欧美国产日韩在线观看| 99re8在线精品视频免费播放| 99re66热这里只有精品3直播 | 成人性生交大片免费看中文网站| 色狠狠av一区二区三区| 国产在线视频一区二区| 亚洲第一主播视频| 综合激情成人伊人| 欧美国产一区二区| 久久久一区二区三区捆绑**| 91精品欧美福利在线观看| 91亚洲资源网| 97国产一区二区| 成人av电影在线| 成人动漫在线一区| thepron国产精品| av成人老司机| 91天堂素人约啪| 国产一区二区久久| 欧美少妇一区二区| 欧美性猛片xxxx免费看久爱| 精品福利在线导航| 欧美一级精品在线| 欧美亚洲动漫制服丝袜| 精品国产91洋老外米糕| 亚洲一区二区影院| 亚洲激情图片一区| 亚洲成人手机在线| 亚洲电影激情视频网站| 亚洲午夜久久久久久久久电影网| 国产一区啦啦啦在线观看| 午夜精品成人在线视频| 性欧美疯狂xxxxbbbb| 亚洲福中文字幕伊人影院| 美腿丝袜亚洲色图| 蜜桃视频一区二区三区| 欧美tickling网站挠脚心| 久久夜色精品一区| 久久av资源站| 亚洲欧美日韩一区二区| 久久先锋影音av| 国产精品网站一区| 一区二区久久久久| 免费av成人在线| av亚洲产国偷v产偷v自拍| 欧美色综合网站| 久久久久久久电影| 亚洲综合视频在线| 久久99久久久久久久久久久| 秋霞影院一区二区| 国产91高潮流白浆在线麻豆| 一本一道波多野结衣一区二区| 在线成人av网站| 2023国产精品自拍| 亚洲国产成人自拍| 国产精品福利一区| 日韩欧美第一区| 国模大尺度一区二区三区| 国产精品久久久久久久久免费丝袜| 99国产欧美久久久精品| 国产精品一区二区三区网站| 国产精品91xxx| 欧美性淫爽ww久久久久无| 久久综合狠狠综合久久激情| 亚洲老司机在线| 国产乱一区二区| 欧美三级电影一区| 国产精品久久久久久久久久免费看| 91精品国产品国语在线不卡| 国产日韩欧美高清| 男女男精品视频| 色域天天综合网| 亚洲欧洲日韩女同| 国产一区二区三区四区五区入口| 天堂久久久久va久久久久| 国产综合色视频| 欧美变态tickle挠乳网站| 亚洲国产成人va在线观看天堂| 国产精品传媒在线| 国产中文一区二区三区| 欧美一区二区高清| 无吗不卡中文字幕| 欧美探花视频资源| 亚洲综合色在线| 91浏览器入口在线观看| 国产精品大尺度| av动漫一区二区| 亚洲色图一区二区| 欧洲激情一区二区| 亚洲麻豆国产自偷在线| av不卡在线播放| 亚洲卡通欧美制服中文| 在线一区二区三区做爰视频网站| 色噜噜久久综合| 欧美国产日韩精品免费观看| 国产精品一区久久久久| 国产精品女同一区二区三区| 国产精品一区二区在线看| 国产视频一区不卡| 91在线国产福利| 亚洲综合久久av| 精品视频在线看| 九色|91porny| 国产日韩精品视频一区| 成人免费观看av| 亚洲精品亚洲人成人网| 欧美日韩成人在线| 午夜电影一区二区| 日韩你懂的电影在线观看| 粉嫩一区二区三区性色av| 亚洲桃色在线一区| 欧美一区二区三区视频免费播放| 欧美日韩国产小视频在线观看| 欧美日韩免费一区二区三区视频| 欧美美女视频在线观看| 亚洲国产美女搞黄色| 欧美一二三四区在线| 精品一区二区影视| 欧美国产一区视频在线观看| 在线中文字幕一区| 国产精品一级黄| 亚洲一区二区精品视频| 日韩欧美一区在线| 91影视在线播放| 国产精品69久久久久水密桃| 亚洲柠檬福利资源导航| 日韩欧美自拍偷拍| 色狠狠综合天天综合综合| 精品一区二区三区免费播放 | 视频在线观看91| 欧美大片在线观看| 色综合天天综合色综合av| 久久精品国产免费看久久精品| 欧美午夜精品久久久| 日韩精品1区2区3区| 国产精品日日摸夜夜摸av| 91精品婷婷国产综合久久竹菊| 亚洲一区在线观看免费| 日韩一区二区精品在线观看| 成人国产精品免费网站| 六月丁香综合在线视频| 亚洲福利视频一区| 中文字幕亚洲成人| 国产精品另类一区| 国产精品日日摸夜夜摸av| 欧美电视剧在线看免费| 欧美日韩国产综合久久| 91天堂素人约啪|