Redis 是一个极其灵活且高性能的内存数据结构存储,广泛用于作为数据库、缓存和消息中间件。Redis 6.0 的发布带来了一项重要的新特性:访问控制列表(ACL),这极大地改善了 Redis 在用户管理方面的能力。
在 Redis 6.0 之前,Redis 的身份验证只有一种简单的密码机制,所有的客户端共享一个密码,只要拥有这个密码,就能执行所有的命令。然而,这种方式对于权限分级和审计等需求来说明显不够。
为了改善这个情况,Redis 6.0 引入了访问控制列表(ACL)。现在,我们可以创建多个用户,并为每个用户设置不同的密码和权限。每个用户都可以拥有以下三种类型的权限:
我们可以通过 ACL SETUSER
命令创建或修改用户。下面是一个创建名为 "myuser",密码为 "mypass",并且拥有所有键和所有命令的访问权限的用户的例子:
ACL SETUSER myuser on mypass allkeys allcommands
其中,on
表示启用密码,mypass
是密码,allkeys
和 allcommands
分别表示用户可以访问所有键和执行所有命令。
要查看所有用户和他们的权限,你可以使用 ACL LIST
命令:
ACL LIST
你可能注意到,我们是在命令行中修改了用户。然而,这种更改在 Redis 重启后会消失。那么,如何让这些更改持久化呢?
答案就是使用 ACL SAVE
命令。这个命令会将所有当前的 ACL 规则保存到 Redis 配置文件(通常是 redis.conf
)中,替换掉所有先前的规则:
ACL SAVE
这意味着你不需要手动编辑配置文件就可以实现密码的修改并让其在重启后仍然生效。这无疑大大提高了 Redis 在用户管理方面的便利性。
然而,要注意的是,ACL SAVE
命令需要 Redis 有足够的权限去写入配置文件。如果因为任何原因(例如没有写入权限,磁盘空间不足等)导致 ACL SAVE
命令不能成功执行,那么 ACL 规则将不会被保存。
总的来说,Redis 6.0 的 ACL 功能带来了更强大、更灵活的用户管理能力。无论是权限管理,还是命令行修改用户的持久化,都让 Redis 在实际应用中变得更加便捷和强大。