← 返回首页

Redis集群搭建与管理

📂 java ⏱ 2 min 217 words

Redis集群搭建与管理

概述

Redis集群是Redis的分布式解决方案。本教程介绍Redis集群的搭建和管理。

1. Redis Cluster配置

# redis-cluster.conf
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes

2. Java连接Redis集群

import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.HostAndPort;
import java.util.Set;

public class RedisClusterClient {
    private final JedisCluster cluster;
    
    public RedisClusterClient() {
        Set<HostAndPort> nodes = Set.of(
            new HostAndPort("localhost", 7000),
            new HostAndPort("localhost", 7001),
            new HostAndPort("localhost", 7002)
        );
        
        this.cluster = new JedisCluster(nodes);
    }
    
    public void set(String key, String value) {
        cluster.set(key, value);
    }
    
    public String get(String key) {
        return cluster.get(key);
    }
    
    public void close() {
        cluster.close();
    }
}

3. 实际应用示例

分布式会话

@Service
public class SessionService {
    private final JedisCluster cluster;
    
    public void saveSession(String sessionId, Map<String, Object> sessionData) {
        String json = objectMapper.writeValueAsString(sessionData);
        cluster.setex("session:" + sessionId, 3600, json);
    }
    
    public Map<String, Object> getSession(String sessionId) {
        String json = cluster.get("session:" + sessionId);
        if (json != null) {
            return objectMapper.readValue(json, Map.class);
        }
        return null;
    }
    
    public void deleteSession(String sessionId) {
        cluster.del("session:" + sessionId);
    }
}

分布式限流

@Service
public class RateLimiter {
    private final JedisCluster cluster;
    
    public boolean isAllowed(String key, int maxRequests, int windowSeconds) {
        long current = System.currentTimeMillis() / 1000;
        String redisKey = "rate:" + key + ":" + (current / windowSeconds);
        
        long count = cluster.incr(redisKey);
        if (count == 1) {
            cluster.expire(redisKey, windowSeconds);
        }
        
        return count <= maxRequests;
    }
}

4. 最佳实践

  1. 合理设置集群规模:根据业务需求设置节点数量
  2. 数据分片:合理设置槽位分配
  3. 高可用配置:配置主从复制和哨兵
  4. 监控集群状态:使用redis-cli监控集群状态
  5. 备份数据:定期备份集群数据

总结

Redis集群是Redis的分布式解决方案。掌握Redis集群的搭建和管理,可以构建高可用、高性能的缓存系统。