跳到主要内容

Redis

介绍

Redis (Remote Dictionary Server) 是一个开源的、高性能的、基于内存的键值数据存储系统,常用作数据库、缓存、消息代理和流处理引擎。Redis 以其卓越的性能、丰富的数据类型、原子操作和多功能实用性而闻名于世界各地的开发者社区。

主要特性

  • 高性能:基于内存操作,读写速度极快(每秒可执行约10万次读写操作)
  • 丰富的数据类型:支持字符串、哈希、列表、集合、有序集合等多种数据结构
  • 原子性操作:所有操作都是原子性的,支持多个操作合并后的原子性执行
  • 多功能实用性:支持发布/订阅、Lua脚本、事务、持久化、集群等功能
  • 高可用性:通过主从复制、哨兵模式和集群模式保证服务可靠性

官方网站

官方网站:https://redis.io
中文文档:http://redis.cn
GitHub仓库:https://github.com/redis/redis

Docker方式安装

使用Docker安装Redis是目前最简便、最一致的部署方式之一,特别适合开发环境和容器化的生产环境。

compose文件

创建compose.yml文件:

services:
redis:
image: redis:latest # 可以指定版本,如redis:6.2、redis:7.0或redis:latest
container_name: my-redis
restart: unless-stopped
ports:
- "${REDIS_PORT}:6379"
volumes:
- ./data:/data # Redis数据持久化目录
- ./config/redis.conf:/usr/local/etc/redis/redis.conf # 配置文件挂载
command: redis-server /usr/local/etc/redis/redis.conf # 使用配置文件启动
env_file:
- .env
networks:
- redis-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3

networks:
redis-network:
driver: bridge

env文件

创建.env文件配置环境变量:

# Redis配置
REDIS_PORT=6379
REDIS_PASSWORD=your_strong_password
REDIS_MAX_MEMORY=256mb

配置文件

创建config/redis.conf文件:

# 基础配置
port 6379
bind 0.0.0.0
protected-mode yes
requirepass ${REDIS_PASSWORD}

# 内存管理
maxmemory ${REDIS_MAX_MEMORY}
maxmemory-policy allkeys-lru

# 持久化配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

# 日志配置
loglevel notice
logfile "/data/redis.log"

# 安全配置
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""

启动

启动Redis容器:

# 创建必要的目录
mkdir -p data config

# 如果配置文件不存在,则创建
[ ! -f config/redis.conf ] && touch config/redis.conf

# 启动容器
docker compose up -d

# 查看容器状态
docker compose ps

# 查看日志
docker compose logs -f redis

连接测试

# 使用docker命令连接到Redis
docker exec -it my-redis redis-cli

# 身份验证
auth your_strong_password

# 测试连接
ping
# 预期响应: PONG

# 设置和获取值
set testkey "Hello Redis"
get testkey

备注

  1. 安全提示

    • 务必修改默认密码
    • 在生产环境中禁用危险命令
    • 限制Redis的内存使用以防止系统内存耗尽
    • 考虑为Redis配置专用用户运行
  2. 持久化选项

    • RDB:按指定时间间隔执行数据集的时间点快照
    • AOF:记录服务器接收的每个写操作
    • 可以同时启用两种方式以获得更高的数据安全性
  3. 常见问题解决

    • 内存不足:调整maxmemory参数,并考虑使用适当的淘汰策略
    • 连接超时:检查防火墙设置和网络配置
    • 数据丢失:确保正确配置了持久化选项
  4. 监控建议

    • 使用Redis自带的INFO命令监控基本状态
    • 考虑使用Redis Exporter + Prometheus + Grafana进行高级监控
    • 定期备份Redis数据以防灾难性故障

Redis作为一款功能强大的内存数据库,在微服务架构、高并发应用、缓存系统等场景下有着广泛的应用。通过Docker方式部署,你可以快速搭建一个可靠的Redis服务,为你的应用提供高性能的数据存储和缓存支持。