草庐IT

transaction_ISOLATION

全部标签

transactions - Redis 中的顺序监视调用

这种模式合法吗?$redis->watch('foo');$var1=$redis->get('foo');$redis->watch('bar');$var2=$redis->get('bar');$redis->multi();$redis->mset(['foo'=>42,'bar'=>9001]);$redis->exec();或者秒看调用取消了先看状态? 最佳答案 这个模式是合法的。来自redisdocumentationWATCHcanbecalledmultipletimes.SimplyalltheWATCHcall

transactions - Redis 中的顺序监视调用

这种模式合法吗?$redis->watch('foo');$var1=$redis->get('foo');$redis->watch('bar');$var2=$redis->get('bar');$redis->multi();$redis->mset(['foo'=>42,'bar'=>9001]);$redis->exec();或者秒看调用取消了先看状态? 最佳答案 这个模式是合法的。来自redisdocumentationWATCHcanbecalledmultipletimes.SimplyalltheWATCHcall

transactions - Redis:具有多个键的事务

我正在使用SpringDataRedis。Redis中的基本数据模型是job:包含作业数据的哈希。queue:包含用作队列的作业ID的列表。新作业将保存在job哈希中,并将其推送到queue。我们有多个工作客户端汇集queue以通过弹出id并从哈希中读取详细信息来使用新的作业id。现在,我正在尝试根据工作数据中的某些标志制定一项新功能,即某些工作人员只能使用某些工作。问题是worker只有在阅读了它的详细信息后才能知道它是否可以使用该作业,而不是在从队列中获取id时才知道。我本来以为我可以把这个操作序列放到一个事务中,查看队列。从哈希中读取作业详情并检查是否可消费。如果是,从队列中取出

transactions - Redis:具有多个键的事务

我正在使用SpringDataRedis。Redis中的基本数据模型是job:包含作业数据的哈希。queue:包含用作队列的作业ID的列表。新作业将保存在job哈希中,并将其推送到queue。我们有多个工作客户端汇集queue以通过弹出id并从哈希中读取详细信息来使用新的作业id。现在,我正在尝试根据工作数据中的某些标志制定一项新功能,即某些工作人员只能使用某些工作。问题是worker只有在阅读了它的详细信息后才能知道它是否可以使用该作业,而不是在从队列中获取id时才知道。我本来以为我可以把这个操作序列放到一个事务中,查看队列。从哈希中读取作业详情并检查是否可消费。如果是,从队列中取出

transactions - 在 Redis 中,当存在没有关联的 EXEC 或 DISCARD 的 MULTI 时会发生什么?

我有一系列在Redis集之间移动元素的脚本。有时这些操作需要是原子的。有时一个脚本会失败,但其他脚本会继续工作。我很好奇如果在一个脚本中我运行MULTI并启动但随后脚本以某种方式失败并且我从不调用EXEC或DISCARD会发生什么-我知道我的数据完整性很好因为事务永远不会发生,但是由于命令在某处排队并且从未执行我担心如果这种情况发生得太频繁(不应该,但谁知道呢?)我需要清理队列吗? 最佳答案 取决于“脚本失败”的确切含义如果与redis服务器的连接丢失,则查询缓冲区将被释放。如果与redis服务器的连接仍然活跃,而你的代码的其他部分

transactions - 在 Redis 中,当存在没有关联的 EXEC 或 DISCARD 的 MULTI 时会发生什么?

我有一系列在Redis集之间移动元素的脚本。有时这些操作需要是原子的。有时一个脚本会失败,但其他脚本会继续工作。我很好奇如果在一个脚本中我运行MULTI并启动但随后脚本以某种方式失败并且我从不调用EXEC或DISCARD会发生什么-我知道我的数据完整性很好因为事务永远不会发生,但是由于命令在某处排队并且从未执行我担心如果这种情况发生得太频繁(不应该,但谁知道呢?)我需要清理队列吗? 最佳答案 取决于“脚本失败”的确切含义如果与redis服务器的连接丢失,则查询缓冲区将被释放。如果与redis服务器的连接仍然活跃,而你的代码的其他部分

transactions - 是否有支持 Redis 集群上事务的 Redis 客户端(首选 Java)?

我在网上仔细查找,但找不到提供此功能的成熟Redis客户端。只找到这个project.有人知道提供上述内容的Redis客户端吗?谢谢你。 最佳答案 Redis集群中的事务与RedisStandalone中的事务不同。TL;DR;与客户问题相比,这更多是关于保证和权衡的概念性问题。说明在Redis集群中,一个特定的节点是一个或多个哈希槽的主节点,这是在多个节点之间分片数据的分区方案。根据命令中使用的键计算出的一个哈希槽位于一个节点上。具有多个键的命令仅限于产生相同的哈希槽。否则,他们将被拒绝。这样的星座称为交叉时隙。交易似乎是对跨槽键

transactions - 是否有支持 Redis 集群上事务的 Redis 客户端(首选 Java)?

我在网上仔细查找,但找不到提供此功能的成熟Redis客户端。只找到这个project.有人知道提供上述内容的Redis客户端吗?谢谢你。 最佳答案 Redis集群中的事务与RedisStandalone中的事务不同。TL;DR;与客户问题相比,这更多是关于保证和权衡的概念性问题。说明在Redis集群中,一个特定的节点是一个或多个哈希槽的主节点,这是在多个节点之间分片数据的分区方案。根据命令中使用的键计算出的一个哈希槽位于一个节点上。具有多个键的命令仅限于产生相同的哈希槽。否则,他们将被拒绝。这样的星座称为交叉时隙。交易似乎是对跨槽键

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