在 Spring 中将 JedisCluster 与 RedisTemplate 结合使用

Using JedisCluster with RedisTemplate in Spring

最初在我们的代码中,我们将 RedisTemplateJedisConnectionFactoryJedisPoolConfig 结合使用,因为我们在单个节点上使用 Redis:

   @Bean(name = "redisTemplate")
    public RedisTemplate<String, String> getRedisTemplate(JedisConnectionFactory jedisConnectionFactory) {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(jedisConnectionFactory);
        // ...
        return template;
    }

    @Bean
    JedisConnectionFactory jedisConnectionFactory(Configuration config) {
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
        jedisConnectionFactory.setHostName(config.get(HOST));
        jedisConnectionFactory.setPort(config.getInt(PORT));
        jedisConnectionFactory.setUsePool(true);
        jedisConnectionFactory.setPoolConfig(createJedisPoolConfig(config));
        jedisConnectionFactory.afterPropertiesSet();
        return jedisConnectionFactory;
    }

    JedisPoolConfig createJedisPoolConfig(Config config) {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // ...
        return poolConfig;
    }

我们现在使用的是 JedisCluster,因为我们使用的是 Redis 集群。

当我们使用 RedisTemplate 时,我们使用了一些命令,例如 redisTemplate.hasKey(cacheKey) 来检查密钥是否存在,redisTemplate.opsForValue().set 以及与 RedisTemplate.

相关的许多其他命令

这些方法似乎不适用于 JedisCluster

有没有一种方法可以将 RedisTemplate 与 JedisCluster 结合使用来避免重新编码这些方法,而只使用 RedisTemplate 提供的方法?

或者是否有替代命令可以用来代替 RedisTemplate 提供的命令?

s there a way I can use RedisTemplate in conjunction with JedisCluster to avoid re-coding these methods and just utilise the methods RedisTemplate offers?

是的,参考这个SO answer

Or are there alternative commands that can be used in place of the ones offered by RedisTemplate?

供以后参考,也是。

RedisTemplate.hasKey(cacheKey) 是 Redis EXISTS 命令的接口。
JedisCluster.exists(cacheKey) 是等价的。

RedisTemplate.opsForValue().set()operations on strings 的接口。
JedisCluster.set("key", "value") 是等价的。

使用 RedisTemplate 文档找出正在使用的 Redis 命令,然后使用他们的文档将其映射到 Jedis 中的等效命令。

在你最喜欢的搜索引擎中搜索“Redis [COMMAND] in Jedis”应该能找到你需要的东西。