Node.js Redis事务:单个连接上的并发监视

时间:2014-09-15 15:26:19

标签: node.js transactions redis socket.io-1.0

使用nodejs,socket.io和redis事务。
想知道这段代码会发生什么(虚拟代码)

var redis = require('redis');  
var client = redis.createClient();  

...  

socket.on('setSomeKey', function() {  
    client.watch('someKey');
    client.get('someKey',function(err,replies) {  
        client.multi().set('someKey','someValue').exec();
    });
});

socket.on('setSomeStuff', function() {
    client.watch('someStuff');
    client.set('someStuff','blip');
    ...
});

客户端1发送事件' setSomeKey':
- > redis看一些关键 - > redis得到someKey并等待回复

客户端2发送事件' setSomeStuff'
- > redis看一些东西
- > redis设置了someStuff&等待回复

客户1: - >收到某些关键词'并尝试multi..exec:
=>将手表放在一些东西上吗? client2设置影响多个exec?

换句话说,用MONITOR观看redis时会发生这种情况:
- 看一些关键 - 得到一些关键 - 看一些东西
- 设置someStuff
- 多
- exec =>失败,因为"看一些东西"哪个在回调中执行get和multi..exec之间有变化?

0 个答案:

没有答案