作为一名长期与Redis打交道的后端工程师,我经常需要处理各种Redis运维和配置问题。今天整理了一份Redis常用命令和配置的实战手册,包含了我多年积累的操作技巧和避坑经验。无论你是刚接触Redis的新手,还是需要快速查阅命令的老手,这份指南都能提供直接可用的操作方案。
Redis作为高性能的键值数据库,在缓存、会话存储、排行榜等场景中广泛应用。但如果不熟悉其基础命令和配置,很容易在运维过程中踩坑。比如我曾经因为没正确配置持久化,导致服务器重启后丢失了大量缓存数据;也遇到过因为忘记设置密码而导致的安全隐患。下面这些内容都是经过生产环境验证的可靠方案。
在Linux系统中,我们首先需要找到Redis的可执行文件位置。通常安装后redis-cli和redis-server会放在/usr/local/bin目录下,但如果你不确定,可以使用find命令搜索:
bash复制find / -name redis* 2>/dev/null
这个命令会搜索整个文件系统中名称包含"redis"的文件,2>/dev/null是为了过滤掉权限错误提示。找到路径后,进入对应目录:
bash复制cd /usr/local/bin
启动Redis服务时,建议始终指定配置文件路径,避免使用默认配置:
bash复制redis-server /path/to/your/redis.conf
提示:生产环境一定要使用配置文件启动,直接运行redis-server会导致使用内存默认配置,可能引发严重问题。
停止Redis服务时,不要直接kill进程,这可能导致数据丢失。正确的方式是通过redis-cli发送shutdown命令:
bash复制redis-cli -h 127.0.0.1 -p 6379 shutdown
如果Redis设置了密码,需要先认证:
bash复制redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth yourpassword
127.0.0.1:6379> shutdown
Redis提供两种持久化方式:RDB快照和AOF日志。合理配置持久化是防止数据丢失的关键。
RDB配置示例:
conf复制save 3600 1 # 1小时内至少有1个key被修改则触发保存
save 300 100 # 5分钟内至少有100个key被修改则触发保存
save 60 10000 # 1分钟内至少有10000个key被修改则触发保存
dbfilename dump.rdb # RDB文件名
dir /var/lib/redis # RDB文件保存路径
AOF配置示例:
conf复制appendonly yes # 启用AOF
appendfsync everysec # 每秒同步一次
appendfilename "appendonly.aof" # AOF文件名
经验之谈:生产环境建议同时开启RDB和AOF。RDB适合做灾难恢复,AOF能提供更好的持久性保证。我曾遇到过服务器突然断电的情况,因为同时配置了两种持久化方式,数据几乎没有任何损失。
密码认证配置:
conf复制requirepass yourstrongpassword
日志配置:
conf复制loglevel notice # 日志级别
logfile /var/log/redis/redis.log # 日志文件路径
守护进程模式:
conf复制daemonize yes # 以守护进程方式运行
pidfile /var/run/redis_6379.pid # pid文件路径
注意事项:修改配置后需要重启Redis才能生效。但某些配置(如密码)可以通过CONFIG SET命令动态修改,无需重启。
bash复制# 查看所有key(生产环境慎用)
keys *
# 查看key是否存在
exists keyname
# 设置key过期时间
expire keyname 60
# 查看剩余过期时间
ttl keyname
# 删除key
del keyname
# 清空当前数据库
flushdb
# 清空所有数据库
flushall
避坑指南:keys *命令会阻塞Redis,在生产环境可能导致服务不可用。应该使用SCAN命令替代,它通过游标分批获取key,不会阻塞服务。
bash复制# 设置值
set mykey "Hello Redis"
# 获取值
get mykey
# 数值递增
incr counter
# 数值增加指定值
incrby counter 5
# 设置带过期时间的key
setex session:user1 3600 "userdata"
Redis是内存数据库,合理配置内存至关重要:
conf复制maxmemory 2gb # 最大内存限制
maxmemory-policy allkeys-lru # 内存满时的淘汰策略
常见淘汰策略:
conf复制tcp-backlog 511 # TCP连接队列长度
timeout 300 # 客户端空闲超时时间(秒)
tcp-keepalive 300 # TCP keepalive时间
bash复制# 查看服务器信息
info server
# 查看内存信息
info memory
# 查看持久化信息
info persistence
# 查看所有信息
info all
问题1:Redis响应变慢
可能原因及解决方案:
问题2:连接数过高
bash复制# 查看连接数
info clients
# 客户端列表
client list
解决方案:
始终使用配置文件:即使是最简单的测试环境,也应该使用配置文件启动Redis,这能避免很多潜在问题。
定期备份:除了Redis自带的持久化,还应该定期备份RDB/AOF文件到其他服务器。
监控报警:对内存使用、连接数、命中率等关键指标设置监控和报警。
安全防护:
性能优化:
我在实际运维中总结出一个经验:Redis的稳定性90%取决于合理的配置和监控。曾经有一次线上事故,因为没设置内存限制,Redis不断增长直到耗尽服务器内存,导致整个服务崩溃。从那以后,我在所有环境都会严格配置maxmemory。
Redis虽然简单易用,但要真正用好它,需要深入理解其配置和命令。希望这份指南能帮助你避开我踩过的那些坑。记住,在修改生产环境配置前,一定要先在测试环境验证!