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

主頁 > 知識(shí)庫 > 基于redis實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解

基于redis實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解

熱門標(biāo)簽:四川穩(wěn)定外呼系統(tǒng)軟件 b2b外呼系統(tǒng) 一個(gè)地圖標(biāo)注多少錢 400電話辦理的口碑 南京手機(jī)外呼系統(tǒng)廠家 廊坊外呼系統(tǒng)在哪買 地圖標(biāo)注工廠入駐 高碑店市地圖標(biāo)注app 臺(tái)灣電銷

前言

業(yè)務(wù)中碰到的需求(抽象描述一下):針對(duì)不同的用戶能夠?qū)崿F(xiàn)不同時(shí)間的間隔循環(huán)任務(wù)。比如在用戶注冊成功24小時(shí)后給用戶推送相關(guān)短信等類似需求。

使用crontab?太重,且基本不現(xiàn)實(shí),不可能給每一個(gè)用戶在服務(wù)器上生成一個(gè)定時(shí)任務(wù)。
定時(shí)輪詢?IO頻繁且效率太低

想到經(jīng)常的使用的redis可以設(shè)置緩存時(shí)間,應(yīng)該會(huì)有過期的事件通知吧,查了一下文檔,果然有相關(guān)配置,叫做“鍵空間事件通知”。具體說明可參考官方文檔。

技術(shù)棧

redis / nodeJs / koa

技術(shù)重難點(diǎn)

  • 開啟redis的鍵空間通知功能(2.8.0及以上的版本才有此功能)
  • 盡量使用單獨(dú)的redis db來實(shí)現(xiàn)
  • 使用基于redis的分布式鎖來實(shí)現(xiàn)相關(guān)事件不會(huì)被重復(fù)消費(fèi)
  • 需要二次使用的信息需要體現(xiàn)在redis緩存的key中
  • redis cache key使用業(yè)務(wù)前綴,避免重名覆蓋
  • 防止業(yè)務(wù)服務(wù)重啟導(dǎo)致nodejs層面的監(jiān)聽失效

"talk is cheap, show me the code 🤖"

核心代碼

核心代碼
const { saveClient, subClient } = require('./db/redis') // 存儲(chǔ)實(shí)例和訂閱實(shí)例需要為兩個(gè)不同的實(shí)例
const processor = require('./service/task')
const config = require('./config/index')
const innerDistributedLockKey = '__' // 內(nèi)部使用的分布式鎖的key的特征值
const innerDistributedLockKeyReg = new RegExp(`^${innerDistributedLockKey}`)

saveClient.on('ready', async () => {
 saveClient.config('SET', 'notify-keyspace-events', 'Ex') // 存儲(chǔ)實(shí)例設(shè)置為推送鍵過期事件
 console.log('redis init success')
})

subClient.on('ready', () => { // 服務(wù)重啟后依舊可以初始化所有processor
 subClient.subscribe(`__keyevent@${config.redis.sub.db}__:expired`) // 訂閱實(shí)例負(fù)責(zé)訂閱消息
 subClient.on('message', async (cahnnel, expiredKey) => {
  // 分布式鎖的key不做監(jiān)聽處理
  if (expiredKey.match(innerDistributedLockKeyReg)) return
  // 簡易分布式鎖,拿到鎖的實(shí)例消費(fèi)event
  const cackeKey = `${innerDistributedLockKey}-${expiredKey}`
  const lock = await saveClient.set(cackeKey, 2, 'ex', 5, 'nx') // 這里的用法可以實(shí)現(xiàn)簡易的分布式鎖
  if (lock === 'OK') {
   await saveClient.del(cackeKey)
   for (let key in processor) {
    processor[key](expiredKey) // processor對(duì)應(yīng)的是接收到相關(guān)鍵過期通知后執(zhí)行的業(yè)務(wù)邏輯,比如推送短信,然后在相關(guān)processor中再次set一個(gè)定時(shí)過期的key
   }
  }
 })
 console.log('subClient init success')
})
servide/task (processor)
exports.sendMessage = async function sendMessage(expiredKey, subClient) {
 // 只處理相關(guān)業(yè)務(wù)的過期事件
 if (expiredKey.match(/^send_message/)) {
  const [prefix, userId, type] = expiredKey.split('-')
  let user = getUser(userId)
  if (user.phone) {
   push(message) // 偽代碼
   resetRedisKey(expiredKey, ttl) // 重新把key設(shè)置為一段時(shí)間后過期,過期后會(huì)再次觸發(fā)本邏輯
  }
 }
}

總結(jié)

  • 此功能利用了redis的鍵空間通知功能實(shí)現(xiàn)了簡單了基于用戶或者基于不同業(yè)務(wù)場景的定時(shí)任務(wù)功能。由于鍵空間事件通知功能是一個(gè)較消耗CPU的操作,所以建議使用單獨(dú)的DB來處理。
  • 這里展示出來的是基本用法,未考慮定時(shí)任務(wù)的持久化功能,如果使用過程中redis故障重啟,則會(huì)導(dǎo)致所有定時(shí)任務(wù)丟失。如果在redis發(fā)布鍵失效通知時(shí),訂閱服務(wù)出故障未在線,或者網(wǎng)絡(luò)問題沒有被消費(fèi)方收到,也會(huì)導(dǎo)致此次事件丟失。
  • redis的expired事件并不是在key過期的時(shí)候觸發(fā),而是在key被刪除的時(shí)候觸發(fā)。redis會(huì)定期清理過期的key,或者當(dāng)訪問key的時(shí)候檢查是否過期,只有這時(shí)過期的key才會(huì)觸發(fā)刪除操作,因此會(huì)有一些小的時(shí)間差距(個(gè)人的實(shí)際使用中并沒有影響用戶體驗(yàn))。

因此需要權(quán)衡使用redis的過期機(jī)制實(shí)現(xiàn)的定時(shí)任務(wù)的使用場景。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • java操作Redis緩存設(shè)置過期時(shí)間的方法
  • 使用redis的increment()方法實(shí)現(xiàn)計(jì)數(shù)器功能案例
  • Redis有效時(shí)間設(shè)置以及時(shí)間過期處理操作

標(biāo)簽:甘南 河源 拉薩 南寧 畢節(jié) 定州 伊春 泰州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于redis實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解》,本文關(guān)鍵詞  基于,redis,實(shí)現(xiàn),定時(shí),任務(wù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于redis實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于redis實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩另类国产亚洲欧美一级| 91亚洲精品久久久蜜桃网站 | 国内精品久久久久影院一蜜桃| 中文字幕va一区二区三区| aaa亚洲精品| 欧美日韩一区二区电影| 国产亚洲午夜高清国产拍精品| 一区二区三区中文字幕精品精品| 亚洲动漫第一页| 国产在线不卡一区| 99久久久无码国产精品| 欧美主播一区二区三区| 国产精品亲子乱子伦xxxx裸| 亚洲一区二区三区在线看| 国模冰冰炮一区二区| 欧美久久婷婷综合色| 色婷婷久久综合| 欧美一区永久视频免费观看| 欧美激情在线观看视频免费| 国产精品一区在线| 99久久免费视频.com| 色综合色狠狠综合色| 日本一区二区三区四区| 蜜臀久久99精品久久久久久9| 日本va欧美va精品| 欧美三级乱人伦电影| 自拍偷在线精品自拍偷无码专区 | 国产精品中文字幕日韩精品| 日韩精品综合一本久道在线视频| 日本道色综合久久| 视频一区视频二区在线观看| 国产精品欧美一级免费| 视频精品一区二区| 91福利国产精品| 欧美日韩成人一区二区| 国内久久精品视频| 亚洲特级片在线| 欧美日韩国产首页在线观看| 亚洲伊人色欲综合网| 欧美久久一二区| 99久久久免费精品国产一区二区| 日韩成人一级大片| 久久久久久久久免费| eeuss鲁一区二区三区| 美女免费视频一区| 一区二区三区美女视频| 国产精品欧美久久久久无广告| 色婷婷久久久亚洲一区二区三区 | 91麻豆福利精品推荐| 99久久精品免费| 美女爽到高潮91| 亚洲视频狠狠干| 久久久久久久久97黄色工厂| 2014亚洲片线观看视频免费| 日韩精品最新网址| 久久精品一区八戒影视| 4438x亚洲最大成人网| 欧美视频在线一区二区三区 | 色婷婷av一区二区三区之一色屋| 亚洲不卡一区二区三区| 精品久久久网站| 成人av综合一区| 91国产免费看| 麻豆91在线看| 一区二区三区 在线观看视频| 欧美精品精品一区| 亚洲人成网站影音先锋播放| 成人在线综合网站| 欧美一区二区三区性视频| 国产丝袜欧美中文另类| 国内精品视频666| 欧美日韩免费电影| 一区视频在线播放| 国产91在线看| 日韩视频国产视频| 在线日韩一区二区| 秋霞电影网一区二区| 中文成人综合网| 精品国产乱码久久久久久蜜臀| 国产盗摄一区二区| 中文字幕亚洲综合久久菠萝蜜| 亚洲综合精品自拍| 欧美亚洲图片小说| 免费xxxx性欧美18vr| 亚洲欧洲在线观看av| 久久久99久久| 26uuu国产电影一区二区| 精品国产一区二区三区四区四 | 亚洲高清视频中文字幕| 99国产欧美另类久久久精品| 黄页视频在线91| 国产色产综合产在线视频| 欧美裸体bbwbbwbbw| 51精品国自产在线| 久久综合色鬼综合色| 欧美人体做爰大胆视频| 91国偷自产一区二区使用方法| 国产精品小仙女| 国产精品综合一区二区| 岛国精品在线观看| 欧美综合天天夜夜久久| 1区2区3区欧美| 日产欧产美韩系列久久99| 日韩高清一区在线| 欧美日韩国产经典色站一区二区三区| 亚洲欧美视频一区| 日本福利一区二区| 久久久91精品国产一区二区三区| 午夜电影网亚洲视频| 久久精品视频免费观看| 亚洲自拍偷拍欧美| 韩国精品主播一区二区在线观看 | 久久免费看少妇高潮| 日韩精品资源二区在线| 色婷婷精品大在线视频| 日韩午夜av电影| 亚洲一区二区三区视频在线| 久久9热精品视频| 日本成人中文字幕在线视频| 激情亚洲综合在线| 欧美二区在线观看| 日本一区免费视频| 亚洲成人av在线电影| 欧美又粗又大又爽| 精品裸体舞一区二区三区| 亚洲一区二区三区自拍| 欧洲另类一二三四区| 亚洲免费观看视频| 色一情一伦一子一伦一区| 一区二区在线看| 在线观看免费亚洲| 亚洲成人中文在线| 精品理论电影在线| 床上的激情91.| 一区二区三区免费看视频| 老鸭窝一区二区久久精品| 在线电影欧美成精品| 免费成人av在线| 制服丝袜成人动漫| 爽好久久久欧美精品| 精品美女被调教视频大全网站| 国产精品99久久久久久久女警| 久久久亚洲综合| 色菇凉天天综合网| 国产美女娇喘av呻吟久久| 国产三级久久久| 国产成人午夜高潮毛片| 一区2区3区在线看| 欧美精品一区二区三区在线| 国产aⅴ综合色| 偷偷要91色婷婷| 在线观看国产91| 国产日韩欧美精品在线| 久久丁香综合五月国产三级网站| 欧美日产国产精品| 免费成人性网站| 国产精品视频线看| 国产精品麻豆一区二区 | 懂色一区二区三区免费观看| 中文字幕日韩一区| 欧美日韩精品三区| 天涯成人国产亚洲精品一区av| 久久久噜噜噜久久人人看| 成人黄页在线观看| 亚洲成人动漫一区| 欧美精品一卡二卡| 国产精品一区二区x88av| 亚洲欧美日韩国产中文在线| 国产农村妇女毛片精品久久麻豆 | 日韩成人精品在线| 亚洲愉拍自拍另类高清精品| 亚洲欧洲一区二区三区| 亚洲国产高清在线| 精品久久久久久久久久久久久久久| 精品视频1区2区3区| 91美女在线看| 大美女一区二区三区| 成人免费福利片| 欧美性受xxxx黑人xyx| 91在线视频网址| 色偷偷久久一区二区三区| 欧美少妇性性性| youjizz久久| 欧美一级日韩一级| 欧美一区二区视频在线观看2022| 欧美一区二区三区系列电影| 久久精品综合网| 国产精品美女久久久久高潮| 亚洲一区二区在线免费观看视频 | 中文字幕精品一区二区三区精品| 2023国产精品| 午夜精品一区二区三区免费视频 | 国产蜜臀av在线一区二区三区 | 国产精品一二三区在线| 欧美bbbbb| 午夜日韩在线电影| 亚洲色欲色欲www在线观看| 亚洲精品欧美在线| 91麻豆精品91久久久久久清纯| 日本高清不卡一区|