标签: redis-cluster

WAIT命令可以在Redis中提供强大的一致性吗?

问候溢出者,

在Redis的标记/集群设置中,我们是否可以使用带有从站总数的WAIT命令来确保Redis服务器之间的一致性?为什么不?

亲切的问候

consistency redis redis-sentinel redis-cluster

7
推荐指数
1
解决办法
1632
查看次数

将 StackExchange.Redis 客户端与 Redis 集群一起使用

我如何告诉 StackExchange.Redis (v1.0.481) 它即将连接到 Redis 集群(v3.2.6,以防万一),而不仅仅是一个独立/复制的实例?例如,当我使用 redis-cli 时,我必须传递一个 -c 标志以使其能够识别集群。StackExchange.Redis 连接字符串中是否有等效标志?

我搜索并遇到了几个包含多个逗号分隔的 host:port 参数的连接字符串示例,但没有任何内容明确使 StackExchange.Redis 集群感知。

谢谢。

c# redis stackexchange.redis redis-cluster

7
推荐指数
1
解决办法
8967
查看次数

AWS Redis 集群 - MOVE 错误

我尝试在 AWS Redis 集群上执行 hmset 命令,但出现以下“移动”错误。不知道发生了什么。

移动 7652 10.0.4.210:6379

from rediscluster import StrictRedisCluster

startup_nodes = [{"host": self.host, "port": self.port}]
client = StrictRedisCluster(startup_nodes=startup_nodes,
                                        decode_responses=True,
                                        skip_full_coverage_check=True)

client.hmset('my_key', {'abc':'123'})
Run Code Online (Sandbox Code Playgroud)

amazon-web-services redis redis-cluster

7
推荐指数
2
解决办法
9946
查看次数

如何使用 spring boot 2.x 为 redis 集群设置密码

“对不起,我的英语不是很好”。

这是我的 redis 配置类:

@Component
@ConfigurationProperties(prefix = "spring.redis.cluster")
@Data
public class RedisClusterProperties {
    List<String> nodes;
}
Run Code Online (Sandbox Code Playgroud)
@Configuration
public class RedisConfig {

@Autowired
RedisClusterProperties redisClusterProperties;

@Bean
public  RedisConnectionFactory connectionFactory(){
    return  new JedisConnectionFactory(
            new RedisClusterConfiguration(redisClusterProperties.getNodes()));
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来是我的 application.properties

spring.redis.cluster.nodes[0] = *.*.*.*:7001
spring.redis.cluster.nodes[1] = *.*.*.*:7002
spring.redis.cluster.nodes[2] = *.*.*.*:7003
spring.redis.cluster.nodes[3] = *.*.*.*:7004
spring.redis.cluster.nodes[4] = *.*.*.*:7005
spring.redis.cluster.nodes[5] = *.*.*.*:7006
Run Code Online (Sandbox Code Playgroud)

接下来是我的测试班

@Component
@Slf4j
public class TestRedis {
    @Autowired
    RedisConnectionFactory connectionFactory;

    @Scheduled(cron = "0 26 18 ? * *")
    public void scheduler(){
        RedisClusterConnection connection = 
connectionFactory.getClusterConnection(); …
Run Code Online (Sandbox Code Playgroud)

java configuration spring-boot redis-cluster

7
推荐指数
1
解决办法
6333
查看次数

Kubernetes中的Redis集群不写入node.conf文件

我正在尝试设置Redis集群,并且在这里遵循了此指南:https//rancher.com/blog/2019/deploying-redis-cluster/

基本上,我将创建一个具有副本6的StatefulSet,以便可以拥有3个主节点和3个从属节点。在所有节点启动之后,我创建了集群,并且一切正常……但是,如果查看每个redis节点的文件“ nodes.conf”(应该保存所有节点的配置),可以看到它是空的。这是一个问题,因为每当重新启动redis节点时,它都会在该文件中搜索该节点的配置以更新其自身的IP地址,并与其他节点进行MEET,但是他什么也没找到,因此基本上可以在该节点上启动新集群他自己的,带有新的ID。

我的存储是一个NFS连接的共享文件夹。负责存储访问的YAML是这样的:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: nfs-provisioner-raid5
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-provisioner-raid5
    spec:
      serviceAccountName: nfs-provisioner-raid5
      containers:
        - name: nfs-provisioner-raid5
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-raid5-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: 'nfs.raid5'
            - name: NFS_SERVER
              value: 10.29.10.100
            - name: NFS_PATH
              value: /raid5
      volumes:
        - name: nfs-raid5-root
          nfs:
            server: 10.29.10.100
            path: /raid5
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner-raid5
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: …
Run Code Online (Sandbox Code Playgroud)

redis kubernetes redis-cluster

7
推荐指数
1
解决办法
218
查看次数

使用集群设置在 Redisson 和 Lettuce 之间为 Redis 选择

我正在考虑在我的应用程序服务器中使用LettuceRedisson Java 客户端(以连接到 Redis)。我无法从尝试过这两种方法或其中一种方法的人那里找到对这两种方法的正确比较。我看到的唯一详细比较是hereRedisson自己发布的其他一些链接。我发现的另一个链接是这个SO post,它没有得到很好的接收。

我想听听实际使用过这两个客户端或其中一个客户端的人的意见,他们的经验/用例以及优缺点是什么。我目前有一个集群 Redis 设置,我正在使用 Lettuce。生菜达到了我想要的效果。然而,在故障转移时发现集群中的新节点有一些痛点。我在这个SO 线程中提出了这个问题,并且能够按照答案中的解释解决它。从积极的方面来说,我发现与 Redisson 的文档相比,Lettuce 文档更清晰、更易于遵循。

我主要考虑转向Redisson,因为我希望使用 Redisson 的RedLock 由 Redis实现,以便在我的应用服务器的多个实例之间进行领导者选举。Lettuce 没有提供它的实现。因此,开箱即用的唯一选项是 Redisson。在这种情况下,我还必须完全摆脱 Lettuce 和 Redisson。Redissons 如何支持 Redis 集群部署。我想知道 Redisson 是否报告/未决故障转移时的集群节点发现问题(我在他们的repo 中没有看到任何问题)。我也读到过关于库体积庞大且不如 Lettuce 轻巧的担忧。

鉴于上述问题和我已有的知识,我想了解有关使用这两个客户端的评论,以帮助我做出决定。

谢谢

redis lettuce redisson redis-cluster leader-election

7
推荐指数
0
解决办法
1282
查看次数

Redis 集群:主节点故障没有自动故障转移

我正在尝试使用 6 台机器实现 Redis 集群。我有一个由六台机器组成的流浪集群:

192.168.56.101
192.168.56.102
192.168.56.103
192.168.56.104
192.168.56.105
192.168.56.106
Run Code Online (Sandbox Code Playgroud)

所有正在运行的 redis-server

我编辑了以上所有服务器的 /etc/redis/redis.conf 文件添加了这个

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-slave-validity-factor 0
appendonly yes
Run Code Online (Sandbox Code Playgroud)

然后我在六台机器中的一台上运行它;

./redis-trib.rb create --replicas 1 192.168.56.101:6379 192.168.56.102:6379 192.168.56.103:6379 192.168.56.104:6379 192.168.56.105:6379 192.168.56.106:6379
Run Code Online (Sandbox Code Playgroud)

Redis 集群已启动并正在运行。我通过在一台机器上设置值来手动检查它在另一台机器上显示。

$ redis-cli -p 6379 cluster nodes
3c6ffdddfec4e726f29d06a6da550f94d976f859 192.168.56.105:6379 master - 0 1450088598212 5 connected
47d04bc98ab42fc793f9f382855e5c54ab8f2e20 192.168.56.102:6379 slave caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 0 1450088598716 7 connected
040d4bb6a00569fc44eec05440a5fe0796952ccf 192.168.56.101:6379 myself,slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 0 4 connected
caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 192.168.56.104:6379 master - 0 1450088599720 7 connected 0-10922
d78293d0821de3ab3d2bca82b24525e976e7ab63 192.168.56.106:6379 …
Run Code Online (Sandbox Code Playgroud)

redis redis-cluster

6
推荐指数
1
解决办法
3421
查看次数

如何从redis集群中删除节点?

我谷歌了一下,找到了两个解决方案:

  1. CLUSTER FORGET( http://redis.io/commands/cluster-forget )

  2. redis-trib.rb del-node

我认为CLUSTER FORGET“是正确的做法。

但我真的很想知道有关redis-trib.rb del-node.

有人可以解释它们之间的区别吗?

redis redis-cluster

6
推荐指数
1
解决办法
8444
查看次数

使用 aws_elasticache_replication_group 获取 Terraform 的终端节点

我有一个我认为是带有 Redis 的 AWS ElastiCache 的简单 Terraform 配置:

resource "aws_elasticache_replication_group" "my_replication_group" {
  replication_group_id          = "my-rep-group",
  replication_group_description = "eln00b"

  node_type                     = "cache.m4.large"
  port                          = 6379
  parameter_group_name          = "default.redis5.0.cluster.on"

  snapshot_retention_limit      = 1
  snapshot_window               = "00:00-05:00"

  subnet_group_name             = "${aws_elasticache_subnet_group.my_subnet_group.name}"

  automatic_failover_enabled    = true

  cluster_mode {
    num_node_groups             = 1
    replicas_per_node_group     = 1
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法定义端点输出:

output "my_cache" {
  value = "${aws_elasticache_replication_group.my_replication_group.primary_endpoint_address}"
}
Run Code Online (Sandbox Code Playgroud)

当我通过 terragrunt 运行 apply 时,我得到:

错误:运行计划出错:发生 1 个错误:

module.mod.output.my_cache:资源“aws_elasticache_replication_group.my_replication_group”没有变量“aws_elasticache_replication_group.my_replication_group.primary_endpoint_address”的属性“primary_endpoint_address”

我在这里做错了什么?

amazon-web-services amazon-elasticache terraform redis-cluster

6
推荐指数
1
解决办法
6066
查看次数

Redlock 与 redis-ha 集群

我一直在尝试根据 Helm Chart 中安装在 kubernetes 中的 Redis 集群来配置分布式 RedLock stable/redis-ha。理想情况下,我希望集群有多个副本(主/辅助复制)。

我正在遵循使用 StackExchangeRedis 和 Redlock.Net 进行设置的标准示例

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");

var multiplexers = new List<RedLockMultiplexer>
{
    redis
};

var redlockFactory = RedLockFactory.Create(multiplexers);

var resource = "the-thing-we-are-locking-on";
var expiry = TimeSpan.FromSeconds(30);

using (var redLock = await redlockFactory.CreateLockAsync(resource, expiry))
{
    //This is almost always false and the lock status is NoQuorum
    if (redLock.IsAcquired)
    {
        
    }
    
}
Run Code Online (Sandbox Code Playgroud)

我看到的行为是,即使在单用户环境中,通常也不会获取锁。状态为 NoQuorum,这表明 RedLock .Net 无法获得多数票,但在我当前的测试集群中,我只有一个副本。我已经让它工作了几次,但它通常不稳定并且随机停止工作。

我已经找到了关于集群锁定的部分https://github.com/samcook/RedLock.net

基本上我的理解是有基本的支持,但是你必须直接连接到集群中的所有副本。

以前有人成功地针对集群配置过分布式锁定吗?

c# redis stackexchange.redis redis-cluster redlock.net

6
推荐指数
1
解决办法
1357
查看次数