Redis
Redis 是意大利程序员 Salvatore Sanfilippo 用 C 语言实现内存数据结构存储,使用 BSD 许可,首个正式版本发布于 2009 年; 2015 年作者加入美国 Redis, Ltd. 企业,该企业随后作为正式赞助商并主导后续开发。
安装工具
Ubuntu 上安装客户端 sudo apt install redis-tools
容器方式安装
在 Linux/macOS 上启动实例
分别创建配置、日志和数据目录
mkdir -p /data/etc/kv
mkdir -p /data/log/kv && chmod 777 /data/log/kv
mkdir -p /data/kv生成随机密码 openssl rand -base64 10
创建配置文件 /data/etc/kv/redis.conf ,示例:
txt
port 6379
requirepass 这里替换为上面生成的密码...
loglevel warning
logfile "/var/log/redis/redis-server.log"启动容器实例
shell
docker run -d \
--restart unless-stopped \
--name kv \
-p 6379:6379 \
-v /data/etc/kv:/usr/local/etc/redis \
-v /data/kv:/data \
-v /data/log/kv:/var/log/redis \
redis 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 /data/redis-server.log启动容器实例 docker run -d --restart unless-stopped --name kv -p 6379:6379 -v c:/docker-data/kv:/data redis redis-server /data/redis.conf
常见问额
故障:持久化写入失败会删除部分或全部未过期数据
问题日志
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
