const redis = require('redis'); let clientA = redis.createClient(6379, '127.0.0.1'); let clientB = redis.createClient(6379, '127.0.0.1'); //客户端A订阅频道 clientA.subscribe('news'); clientA.subscribe('sports'); //客户端A监听消息 clientA.on('message', function (channel, message) { console.log('客户端A收到', channel, message); //客户端A在10秒后取消订阅 setTimeout(function () { clientA.unsubscribe('news'); }, 10000); }); setInterval(function () { clientB.publish('news', '这是一条新闻' + new Date().toLocaleString()); clientB.publish('sports', '这是一条体育' + new Date().toLocaleString()); }, 1000);
六、redis事务
redis事务可以一次性执行多个命令,multi 命令之后,exec命令之前,命令都会放到队列中,直到执行exec,将会执行队列中的命令。
discard可以取消事务,放弃执行事务块内的所有命令。
const redis = require('redis'); let client = redis.createClient(6379, '127.0.0.1'); client.multi() .hset('person', 'name', 'haohao') .hset('person', 'age', '34') .exec(function (err, result) { if (err) { console.log(err); } console.log(result); client.quit(); });
注意redis中的事务跟mysql中的事务是有区别的。