Redis单机安装与多平台部署

Redis单机安装与多平台部署

以下是针对Redis单机安装与多平台部署要点整理,包含生产级配置建议和跨平台差异处理方案:


一、单机安装核心步骤

1. Linux系统(Ubuntu/CentOS)
# 安装依赖
sudo apt-get install build-essential tcl  # Ubuntu
sudo yum groupinstall "Development Tools" # CentOS

# 编译安装(推荐)
wget https://download.redis.io/releases/redis-7.2.0.tar.gz
tar xzf redis-7.2.0.tar.gz
cd redis-7.2.0
make -j$(nproc) && sudo make install

# 生产环境建议配置
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/6379.conf
sudo vi /etc/redis/6379.conf  # 修改关键参数

关键配置项

bind 0.0.0.0                  # 允许远程连接(需配合安全组)
protected-mode no             # 生产环境建议关闭
daemonize yes                # 后台运行
dir /var/lib/redis           # 数据目录
requirepass yourpassword     # 密码认证
maxmemory 8GB                # 不超过物理内存70%
appendonly yes               # 开启AOF持久化
2. Windows系统(WSL2/原生)

powershell

# 通过WSL2安装(推荐)
wsl --install Ubuntu
ubuntu.exe
# 后续步骤同Linux

# 原生Windows安装(仅开发环境)
choco install redis-64       # 通过Chocolatey包管理器
redis-server --service-install redis.windows.conf
3. macOS系统
# 通过Homebrew安装
brew install redis
brew services start redis

# 配置文件路径
/usr/local/etc/redis.conf

二、多平台部署差异处理

维度 Linux Windows Docker
性能 原生支持epoll,性能最优 仅开发测试,性能损失30%+ 接近原生,需映射端口
持久化存储 直接挂载物理卷 需配置卷映射 必须挂载volume
服务管理 systemd托管 Windows服务 容器编排(K8s/Docker Compose)
内存分配 透明大页需禁用 无特殊要求 需配置cgroup限制
生产推荐 物理机/KVM 不推荐 容器化部署

三、容器化部署方案(生产级)

1. Docker单实例

dockerfile

# 自定义镜像
FROM redis:7.2-alpine
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

启动命令

docker run -d \
  -p 6379:6379 \
  -v /data/redis:/data \
  --name redis-prod \
  --memory=4g --cpus=2 \
  redis:7.2-alpine
2. Kubernetes集群部署
# redis-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-cluster
spec:
  serviceName: redis
  replicas: 6
  selector:
    matchLabels:
      app: redis
  template:
    spec:
      containers:
      - name: redis
        image: redis:7.2-alpine
        args: ["--cluster-enabled", "yes"]
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: redis-data
    spec:
      storageClassName: ssd
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 50Gi

四、跨平台Java客户端配置

1. 连接单机实例
// Lettuce配置(推荐)
RedisClient client = RedisClient.create("redis://password@host:6379/0");
StatefulRedisConnection connection = client.connect();

// Jedis配置(传统)
JedisPool pool = new JedisPool(new JedisPoolConfig(), "host", 6379, 2000, "password");
try (Jedis jedis = pool.getResource()) {
    jedis.set("key", "value");
}
2. 连接集群模式
// Lettuce集群连接
Set nodes = new HashSet<>();
nodes.add(RedisURI.create("redis://node1:6379"));
nodes.add(RedisURI.create("redis://node2:6379"));
RedisClusterClient clusterClient = RedisClusterClient.create(nodes);
StatefulRedisClusterConnection clusterConnection = clusterClient.connect();

// Redisson配置
Config config = new Config();
config.useClusterServers()
      .addNodeAddress("redis://node1:6379", "redis://node2:6379")
      .setPassword("password");
RedissonClient redisson = Redisson.create(config);

五、生产环境关键检查项

  1. 安全加固

    # 禁用高危命令
    rename-command FLUSHDB ""
    rename-command CONFIG ""
    
    # 启用ACL(Redis 6+)
    acl setuser default on >strongpassword ~* +@all
    
  2. 性能调优

    # 内核参数优化(Linux)
    vm.overcommit_memory = 1
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    
  3. 监控配置

    # Prometheus监控示例
    scrape_configs:
      - job_name: 'redis'
        static_configs:
          - targets: ['redis-host:9121']  # redis_exporter端口
    
  4. 备份策略

    # RDB定时备份
    crontab -e
    0 2 * * * redis-cli -a password bgsave && cp /var/lib/redis/dump.rdb /backup/redis-$(date +%F).rdb
    

六、故障排查工具箱

问题 诊断命令 Java日志分析要点
连接超时 telnet host 6379 检查客户端连接池配置(maxWaitMillis)
内存溢出 redis-cli info memory 监控RedisTemplate的序列化大小
主从同步失败 redis-cli -a password info replication 检查网络带宽和复制积压缓冲区
慢查询 redis-cli slowlog get 10 优化BigKey和使用Pipeline

通过以上方案,可快速实现从开发到生产的全环境部署。建议优先采用Linux+Docker的部署方式,配合Spring Data Redis实现无缝集成。对于云环境,可直接使用阿里云/ AWS的托管Redis服务避免运维负担。

你可能感兴趣的:(redis,redis,缓存)