-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed as not planned
Description
spring-data-redis-2.7.14
redis集群版本 5.0
# config
@Bean
public LettuceConnectionFactory lettuceConnectionFactory() {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(redisProperties.getCluster().getNodes());
redisClusterConfiguration.setMaxRedirects(3);
//支持自适应集群拓扑刷新和静态刷新源
ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
.enablePeriodicRefresh()
.enableAllAdaptiveRefreshTriggers()
.refreshPeriod(Duration.ofSeconds(5))
.build();
ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
.topologyRefreshOptions(clusterTopologyRefreshOptions).build();
//从优先,读写分离,读从可能存在不一致,最终一致性CP
LettuceClientConfiguration lettuceClientConfiguration = LettuceClientConfiguration.builder()
.readFrom(ReadFrom.SLAVE_PREFERRED)
.clientOptions(clusterClientOptions).build();
return new LettuceConnectionFactory(redisClusterConfiguration,lettuceClientConfiguration);
}
private final RedisTemplate<String, Object> redisTemplate;
String REDIS_LIST_LPOP = "local key = KEYS[1]\n" +
"local count = tonumber(ARGV[1])\n" +
"local values = redis.call('LRANGE', key, 0, count - 1)\n" +
"redis.call('LTRIM', key, count, -1)\n" +
"return values\n";
DefaultRedisScript<List> redisScriptForLPOP= new DefaultRedisScript<>();
redisScriptForLPOP.setScriptText(REDIS_LIST_LPOP);
redisScriptForLPOP.setResultType(List.class);
List execute = redisTemplate.execute(redisScriptForLPOP, Collections.singletonList(key), count);
error
@user_script: 4: -READONLY You can't write against a read only replica.
Metadata
Metadata
Assignees
Labels
No labels