redis消息队列写入mysql_redis怎么实现将消息队列持久化到数据库中?
要看你用的是什么語(yǔ)言,如果是php的,你可以這樣考慮, 首先一個(gè)是將這兩個(gè)分為兩個(gè)隊(duì)列來(lái)實(shí)現(xiàn), 一個(gè)用來(lái)實(shí)現(xiàn)消息優(yōu)先級(jí),一個(gè)來(lái)實(shí)現(xiàn)定時(shí)發(fā)送用的是redis的有序集合,用zadd添加時(shí),將score比做是優(yōu)先級(jí),也可以用時(shí)間戳來(lái)當(dāng)做score,用來(lái)表示時(shí)間將消息加入優(yōu)先級(jí)的隊(duì)列,將1,2替換為時(shí)間就是定時(shí)發(fā)送的隊(duì)列了$redis = new Redis();$redis->connect('127.0.0.1', 6379);$redis->zAdd('zset1', 1, 'message');$redis->zAdd('zset1', 2, 'message2');從隊(duì)列中取出數(shù)據(jù)$redis->zRevRangeByScore('zset1, '+inf', '-inf', array('withscores'=>false, 'limit'=>array(0,20)));
這條語(yǔ)句表示從zset1這個(gè)隊(duì)列里按照score從最大(+inf)到最小(-inf)的排序中取出20條,不帶score,如果想要從小到大可以用 zRangeByScore如果你想讓這些都運(yùn)行在命令行下,可以參考下面來(lái),當(dāng)然這些是經(jīng)過(guò)刪減的connect('127.0.0.1', 6379); $redis->zRevRangeByScore('zset1', '+inf', '-inf', array('withscores'=>false, 'limit'=>array(0,20))); exit; } else { pcntl_wait($status); }}pcntl_fork是PHP中的生成子進(jìn)程,當(dāng)調(diào)用該函數(shù)時(shí),會(huì)返回一個(gè)進(jìn)程pid,當(dāng)pid為0時(shí)表明是在子進(jìn)程中,所以把要執(zhí)行的東西全放這里,這樣就實(shí)現(xiàn)了
總結(jié)
以上是生活随笔為你收集整理的redis消息队列写入mysql_redis怎么实现将消息队列持久化到数据库中?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 请问常州抽脂肪一般多少钱?
- 下一篇: 吉林通化御鹿瑰宝多少钱一盒?