Redis配置只读模式怎么弄,简单方法教你快速设置不复杂
- 问答
- 2026-01-17 19:19:10
- 3
要理解Redis的只读模式,其实就是限制某些客户端连接只能进行读取操作,GET、LRANGE 等,而不能执行 SET、DEL 等会修改数据的命令,这样做的好处是,当你的应用有像网站前台、查询服务这类只负责展示数据的部分时,可以让它们连接到只读的Redis,避免因为程序bug或误操作而意外修改或清空数据库,提高数据的安全性,实现这个目标有两个非常直接的方法,一个是通过修改配置文件,另一个是在运行时通过命令动态设置,我们一个一个来看。
第一个方法:修改Redis的配置文件,这是最常用也最彻底的方式。
Redis的所有配置都放在一个叫 redis.conf 的文件里,你需要找到这个文件,它通常位于Redis的安装目录下,如果你是用包管理器安装的,比如在Ubuntu上用apt安装,它可能在 /etc/redis/redis.conf。
找到文件后,用文本编辑器打开它,比如可以用 nano 或 vim,你需要寻找一个叫做 rename-command 的配置项,这个配置项的作用非常强大,它可以给任何命令换个名字,甚至直接禁用它,我们正是利用它来达到只读的目的。
思路是这样的:我们把所有危险的、会修改数据的命令,要么改成一个非常复杂、别人猜不到的名字(这样只有知道新名字的管理员才能用),要么直接把它重命名为一个空字符串,这样就彻底禁用这个命令了。
举个例子,我们想禁止 FLUSHALL 命令,因为它会清空整个Redis的所有数据,非常危险,我们就在 redis.conf 文件里加上这么一行:
rename-command FLUSHALL ""
这行代码的意思就是把 FLUSHALL 命令重命名为“空”,也就是禁用了,当客户端再尝试执行 FLUSHALL 时,Redis会报错,说这个命令不存在。
同样的道理,我们可以把其他关键的命令也禁掉,禁止修改数据的 SET 命令:
rename-command SET ""
禁止删除数据的 DEL 命令:
rename-command DEL ""
你还可以根据自己的需要,把 MSET、HSET、LPUSH 等一系列写操作命令都按这个方式处理,只留下 GET、HGET、LRANGE、SMEMBERS 这类只读命令不变。
全部设置好后,保存配置文件,然后最重要的一步是:重启Redis服务器,让新的配置生效,重启后,任何连接到这个Redis的客户端,都将无法执行被你禁用的命令,自然就实现了只读模式。
这个方法的好处是一劳永逸,配置一次之后就一直有效,安全性很高,但缺点是需要重启服务,并且在重启前一定要确认你的管理员账号有办法通过其他方式(比如知道新的命令名)来管理数据库,否则把自己也锁在外面就麻烦了。
第二个方法:使用 CONFIG SET 命令动态设置,这个方法更灵活,不需要重启。
如果你的Redis正在线上运行,不方便重启,或者你只是想临时设置一下只读模式,那么这个方法是更好的选择,你可以通过Redis的命令行工具 redis-cli 直接连接上服务器,然后输入命令来实时修改配置。
这个命令的写法和在配置文件里几乎一样,只是换了一种形式,我们还是想禁用 FLUSHALL 命令,可以这样输入:
CONFIG SET rename-command FLUSHALL ""
Redis会立刻回复一个 OK,表示设置成功,从这一刻起,FLUSHALL 命令就被禁用了,所有连接立即生效,你可以马上试试输入 FLUSHALL,会发现已经不能用了。
用同样的方式,你可以动态地禁用任何你想禁用的写命令:
CONFIG SET rename-command SET ""
CONFIG SET rename-command DEL ""
这种方法非常灵活,随用随设,用完还可以再改回来,它有一个重要的特点:这个设置是临时的,当Redis服务器重启后,所有这些通过 CONFIG SET 做的修改都会丢失,配置会变回 redis.conf 文件里的样子。
如果你希望这次动态设置也能永久生效,可以在用 CONFIG SET 命令修改完之后,再执行一个命令:
CONFIG REWRITE
这个命令会把当前内存中的配置立刻写回到 redis.conf 文件里,这样下次重启就会自动加载你刚才的修改了。
- 追求永久生效、不怕重启:就用第一种方法,直接修改
redis.conf文件,然后重启Redis。 - 需要临时调整、避免重启:就用第二种方法,通过
redis-cli连接后使用CONFIG SET命令,如果想变永久,记得再加一句CONFIG REWRITE。
最后提醒一点,无论用哪种方法,在操作前最好都先备份一下你的 redis.conf 文件,并且在一个不重要的测试环境里先试一试,确认效果符合你的预期,然后再到正式环境中去操作,这样最稳妥,希望这些简单直接的方法能帮到你。

本文由芮以莲于2026-01-17发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/82587.html
