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
备注
-
安全提示:
- 务必修改默认密码
- 在生产环境中禁用危险命令
- 限制Redis的内存使用以防止系统内存耗尽
- 考虑为Redis配置专用用户运行
-
持久化选项:
- RDB:按指定时间间隔执行数据集的时间点快照
- AOF:记录服务器接收的每个写操作
- 可以同时启用两种方式以获得更高的数据安全性
-
常见问题解决:
- 内存不足:调整
maxmemory
参数,并考虑使用适当的淘汰策略 - 连接超时:检查防火墙设置和网络配置
- 数据丢失:确保正确配置了持久化选项
- 内存不足:调整
-
监控建议:
- 使用Redis自带的
INFO
命令监控基本状态 - 考虑使用Redis Exporter + Prometheus + Grafana进行高级监控
- 定期备份Redis数据以防灾难性故障
- 使用Redis自带的
Redis作为一款功能强大的内存数据库,在微服务架构、高并发应用、缓存系统等场景下有着广泛的应用。通过Docker方式部署,你可以快速搭建一个可靠的Redis服务,为你的应用提供高性能的数据存储和缓存支持。