Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua redis集群是否支持事务和xFF1F;_Lua_Redis_Cluster Computing_Jedis - Fatal编程技术网

Lua redis集群是否支持事务和xFF1F;

Lua redis集群是否支持事务和xFF1F;,lua,redis,cluster-computing,jedis,Lua,Redis,Cluster Computing,Jedis,我是redis的新手,我刚用了几个月redis。目前我使用的是2.8.x稳定版,但我尝试使用3.0.0来导入redis集群功能。我使用java jedis作为客户端,这是我的问题:我发现最新版本的jedis客户端支持redis cluster lua脚本(JedisCluster.evalsha),但我找不到管道和事务相关的函数,所以我想知道是不是jedis没有实现它(管道、事务)然而,或者仅仅是redis cluster根本不支持管道和事务?JedisCluster没有实现事务和管道,因为它很

我是redis的新手,我刚用了几个月redis。目前我使用的是2.8.x稳定版,但我尝试使用3.0.0来导入redis集群功能。我使用java jedis作为客户端,这是我的问题:我发现最新版本的jedis客户端支持redis cluster lua脚本(JedisCluster.evalsha),但我找不到管道和事务相关的函数,所以我想知道是不是jedis没有实现它(管道、事务)然而,或者仅仅是redis cluster根本不支持管道和事务?

JedisCluster没有实现事务和管道,因为它很难实现。 Redis可以在集群模式下发送MOVED或ASK,这意味着我们应该注意在节点之间移动插槽

我在考虑JedisCluster的管道模式,但没有进行进一步的研究。


目前,绝地团队正致力于稳定/向绝地集群提供更多API。

Hi,在我们的案例中,我们使用了大量事务和管道。所以,如果我们想使用JedisCluster,我们是否必须将所有那些管道化或事务化的用例重写为lua脚本?不幸的是,是的。使用“Redis Cluster”安全地同时发送两个或多个操作的唯一方法是使用multi-exec进行批处理。但由于绝地武士不考虑成批请求,因此需要执行大量工作。如果您确定在请求时不移动插槽,您可以向Redis群集的任何节点查询“哪个节点有插槽”,并创建绝地武士实例,像普通的Redis&Jedis一样请求。您可以使用JedisClusterCRC16查询钥匙->插槽,但目前Jedis没有对外提供插槽->节点查询。编辑:您可以通过JedisClusterInfoCache查询插槽->节点。JedisClusterInfoCache.discoverClusterNodesAndSlots()发现并映射插槽->节点关系,而JedisClusterInfoCache.getSlotPool()为您提供连接到持有插槽的节点的JedisPool。请注意,它不会自动反映节点/插槽的更改,因此您可能需要经常调用JedisClusterInfoCache.discoverClusterSlots()。感谢您的耐心等待。ShardedJedis似乎也不完全支持管道和事务,因此在我们的例子中,我想我们必须选择以下两种解决方案:1、使用JedisCluster并将所有事务和管道重写为lua脚本,在这种情况下,所有redis服务器将承担相同的工作负载;2、使用ShardedJedis,对主redis执行所有与写相关的工作,并使用ShardedJedis对从redis执行其他读取工作(包括管道读取)。我说得对吗?