RediStack icon indicating copy to clipboard operation
RediStack copied to clipboard

Support for Cluster Mode?

Open dkolas opened this issue 10 months ago • 4 comments

Hi there,

When connected to our Redis Cluster, we're getting a lot of errors of the form:

MOVED 12858 <internal-ip>:6379

From looking at the post here: https://forums.swift.org/t/redistack-future-plans/65703 and the fact that there isn't a RedisClusterClient yet, my understanding is that this client doesn't yet support cluster mode, and my best option is to reduce it to a single shard/replica for now. Is that correct?

dkolas avatar Sep 13 '23 13:09 dkolas

Hi @dkolas,

thanks for bringing this up. I have a cluster implementation that I need to start to upstream.

my best option is to reduce it to a single shard/replica for now. Is that correct?

That is correct!

fabianfett avatar Sep 14 '23 15:09 fabianfett

@fabianfett Thanks for the quick response.

Everything appears to be working smoothly now with a non-clustered deployment. I'll keep an eye out for the changes!

dkolas avatar Sep 14 '23 16:09 dkolas

You can track progress here: Milestone: Redis Cluster support

fabianfett avatar Sep 18 '23 09:09 fabianfett

@fabianfett Hi Fabian Do we already support Cluster? I tried to get some Redis IP list through the internal URL, but got this error:

[ ERROR ] command failed [error: (Redis) CROSSSLOT Keys in request don't hash to the same slot, rdstk_conn_id: 85C7A6C1-EAB9-4E80-B845-BD34ECCF0486, rdstk_conpool_id: 284305BD-D3AC-4423-B13E-DB792CC9FA91]
[ ERROR ] Job run failed: RedisError(message: "(Redis) CROSSSLOT Keys in request don\'t hash to the same slot")

Used in Vapor:


let pool = RedisConfiguration.PoolOptions(maximumConnectionCount: .maximumActiveConnections(2),
                                                  minimumConnectionCount: 0,
                                                  connectionBackoffFactor: 2,
                                                  initialConnectionBackoffDelay: .milliseconds(100),
                                                  connectionRetryTimeout: config.redisConnectionTimeout)
let redisConfig = try RedisConfiguration(serverAddresses: redisAddresses,
                                                 password: config.redisPassword,
                                                 pool: pool)
        
app.queues.use(.redis(redisConfig))

Jinxiansen avatar Feb 28 '24 08:02 Jinxiansen