草庐IT

TRANSACTIONS

全部标签

concurrency - 多个并发程序在同一哈希键上执行读取/删除的 Redis 行为

我有一个程序(program_1)(基于Jedis)定期写入RedisHASH(KEY_1)。我有另一个定期执行的程序(program_2)(单独的JVM进程),并且在Redis事务中执行以下操作:Transactiontransaction=redis.multi();//getthecurrententitytableResponse>currentEntityTableResponse=transaction.hgetAll(KEY_1);transaction.del(KEY_1);transaction.exec();我的假设是当program_2删除了HASH(使用KEY_

concurrency - 多个并发程序在同一哈希键上执行读取/删除的 Redis 行为

我有一个程序(program_1)(基于Jedis)定期写入RedisHASH(KEY_1)。我有另一个定期执行的程序(program_2)(单独的JVM进程),并且在Redis事务中执行以下操作:Transactiontransaction=redis.multi();//getthecurrententitytableResponse>currentEntityTableResponse=transaction.hgetAll(KEY_1);transaction.del(KEY_1);transaction.exec();我的假设是当program_2删除了HASH(使用KEY_

redis - Redis Hash Hmset是在Transaction中执行的吗?

假设我正在使用HMSETmyhashfield1"Hello"field2"World"在我的redis中设置两个字段,而其他人正在使用HGETALLkey获取所有键,在这种情况下他们有机会得到结果field1吗?或者结果可能仅为null或field1,field2。 最佳答案 Redis保证HMSET和HGETALL都是原子执行的。所以你要么得到空回复,要么得到myhash的所有字段。 关于redis-RedisHashHmset是在Transaction中执行的吗?,我们在Stack

redis - Redis Hash Hmset是在Transaction中执行的吗?

假设我正在使用HMSETmyhashfield1"Hello"field2"World"在我的redis中设置两个字段,而其他人正在使用HGETALLkey获取所有键,在这种情况下他们有机会得到结果field1吗?或者结果可能仅为null或field1,field2。 最佳答案 Redis保证HMSET和HGETALL都是原子执行的。所以你要么得到空回复,要么得到myhash的所有字段。 关于redis-RedisHashHmset是在Transaction中执行的吗?,我们在Stack

mysql - 写入两个或多个不同数据存储时的事务

假设我们有两个数据存储:MySQL(innodb)和Redis。我们需要将一些数据写入两个存储并在事务中执行。try{$Mysql->transaction();//startmysqltransaction$Mysql->somecommands();//execsomesql$Redis->multi();//startredistransaction$Redis->somecommands();//execsomerediscommands$Redis->exec()//rediscommit$Mysql->commit();//mysqlcommit}catch(Excepti

mysql - 写入两个或多个不同数据存储时的事务

假设我们有两个数据存储:MySQL(innodb)和Redis。我们需要将一些数据写入两个存储并在事务中执行。try{$Mysql->transaction();//startmysqltransaction$Mysql->somecommands();//execsomesql$Redis->multi();//startredistransaction$Redis->somecommands();//execsomerediscommands$Redis->exec()//rediscommit$Mysql->commit();//mysqlcommit}catch(Excepti

node.js - Redis - 在具有 promise 的事务中插入数组中的值( Bluebird )

我有一个这样的数组:varnames=['Irina','Michael','Carl'];我想使用promise交易将它们插入redis(我不知道其他方式)。但是我对如何做到这一点感到困惑;这是我的代码:varPromise=require("bluebird");varredis=require("redis");Promise.promisifyAll(redis.RedisClient.prototype);Promise.promisifyAll(redis.Multi.prototype);varclient=redis.createClient(),multi;varna

node.js - Redis - 在具有 promise 的事务中插入数组中的值( Bluebird )

我有一个这样的数组:varnames=['Irina','Michael','Carl'];我想使用promise交易将它们插入redis(我不知道其他方式)。但是我对如何做到这一点感到困惑;这是我的代码:varPromise=require("bluebird");varredis=require("redis");Promise.promisifyAll(redis.RedisClient.prototype);Promise.promisifyAll(redis.Multi.prototype);varclient=redis.createClient(),multi;varna

mysql - HandlerSocket 事务

在Redis中可以这样完成事务:redis.watch('powerlevel')current=redis.get('powerlevel')redis.multi()redis.set('powerlevel',current+1)redis.exec()是否可以使用HandlerSocket执行此操作?使用交易提供handlersotsket的一般特性是什么? 最佳答案 将Redis“事务”与通用事务引擎进行比较总是有点误导。RedisWATCH/MULTI/EXECblock是:不是原子的(出错时不回滚)一致的(反正Redi

mysql - HandlerSocket 事务

在Redis中可以这样完成事务:redis.watch('powerlevel')current=redis.get('powerlevel')redis.multi()redis.set('powerlevel',current+1)redis.exec()是否可以使用HandlerSocket执行此操作?使用交易提供handlersotsket的一般特性是什么? 最佳答案 将Redis“事务”与通用事务引擎进行比较总是有点误导。RedisWATCH/MULTI/EXECblock是:不是原子的(出错时不回滚)一致的(反正Redi