Redis
Redis 是意大利程序员 Salvatore Sanfilippo 用 C 语言实现内存数据结构存储,使用 BSD 许可,首个正式版本发布于 2009 年; 2015 年作者加入美国 Redis, Ltd. 企业,该企业随后作为正式赞助商并主导后续开发。
安装工具
Ubuntu 上安装客户端 sudo apt install redis-tools
容器方式安装
在 Linux/macOS 上启动实例
分别创建配置、日志和数据目录
shell
mkdir -p /d/etc/redis
mkdir -p /d/log/redis
mkdir -p /d/data/redis
chmod 777 /d/log/redis
chmod 777 /d/data/redis生成随机密码 openssl rand -base64 10
创建配置文件 /d/etc/redis/redis.conf ,示例:
shell
cat << EOF >> /d/etc/redis/redis.conf
port 6379
requirepass secret
loglevel warning
logfile "/var/log/redis/redis-server.log"
EOF拉取 Redis v5.x 镜像 docker pull redis:5
启动容器实例
shell
docker run -d \
--restart unless-stopped \
--name kv \
-p 6379:6379 \
-v /d/etc/redis:/usr/local/etc/redis \
-v /d/data/redis:/data \
-v /d/log/redis:/var/log/redis \
redis:5 redis-server /usr/local/etc/redis/redis.conf在 Windows 上启动实例
创建目录持久化数据 mkdir c:\docker-data\kv
创建自定义配置文件 c:\docker-data\kv\redis.conf
txt
port 6379
#requirepass secret...
loglevel debug
logfile /var/log/redis/redis-server.log启动容器实例
shell
docker run -d \
--restart unless-stopped
--name kv
-p 6379:6379 \
-v c:/d/etc/redis:/usr/local/etc/redis \
-v c:/d/data/redis:/data \
-v c:/d/log/redis:/var/log/redis \
redis:5 redis-server /usr/local/etc/redis/redis.conf测试读写
shell
redis-cli -h localhost -p 6379 -a secret info
redis-cli -h localhost -p 6379 -a secret set a b
redis-cli -h localhost -p 6379 -a secret get a常见问额
故障:持久化写入失败会删除部分或全部未过期数据
问题日志
txt
300548:M 06 Jul 2049 19:00:41.117 # Background saving error
300548:M 06 Jul 2049 19:00:47.029 * 1 changes in 900 seconds. Saving...
300548:M 06 Jul 2049 19:00:47.029 * Background saving started by pid 1859837
1859837:C 06 Jul 2049 19:00:47.029 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Read-only file system定位过程:
- 确定配置文件中数据目录位置
grep ^dir /etc/redis/redis.conf, 显示dir /var/lib/redis; - 查看运行时配置 数据目录位置
redis-cli config get dir, 显示/etc,确定是因为将数据目录设置错误导致数据丢失;
修复:redis-cli config set dir /var/lib/redis
