Redis 中是否有只读连接?

问题描述 投票:0回答:1

我在谷歌上搜索了这个但没有得到任何线索。

假设用户对 Redis 数据库具有完全的读/写访问权限。我想知道,有没有办法以只读模式连接数据库?

redis readonly jedis
1个回答
22
投票

Redis 7 之后更新

REDIS ACL。可用于在数据库上创建只读用户。

具体操作方法如下

首先创建一个具有只读权限的用户

ACL SETUSER readonlyuser on >password ~* +@read

然后连接到指定连接字符串的数据库,以确保您不会连接到具有所有权限的默认用户。

redis-cli -u redis://readonlyuser:password@localhost:6379

现在阅读这样的命令就可以了

GET testkey
KEYS *

但是写命令不会。

SET testkey "somevalue"

我得到的错误是

localhost:6379> SET testkey "somevalue"
(error) NOPERM User readonlyuser has no permissions to run the 'set' command

Redis 在 v5 之前(包括 v5)没有用户权限的概念,因为它不支持用户的概念。就数据库而言,只有一个用户,并且该用户是万能的。

也就是说,由于 v2.6 副本默认配置为拒绝写入,因此实际上使它们成为只读接口(

replica-read-only
配置指令)。

注意:预计在下一个主要版本中,Redis 将提供用户访问列表。

© www.soinside.com 2019 - 2024. All rights reserved.