Redis配置只读账号实现方式方式实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Redis配置只读账号实现方法方式”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
目录
- 一、需求说明
- 二、Redis账号介绍:ACL系统
- 1、命令举例
- 2、上述命令解析
- 三、设置方式及设置示例
- 1、借助Redis CLI设置(临时)
- 2、借助设置文件(永久生效)
- 3、借助ACL文件管理
- 四、管理命令参考
- 五、常用命令类别包含的命令
- 1、@read 类别(部分)
- 2、@write 类别(部分)
- 3、其他实用类别
- 总结
一、需求说明
实际处理时,作为一名运维工程师,经常安装和设置redis,前阵子有测试同事申请开一个redis的只读账户,以往都是设置一个读写用户,同时没有对redis的权限进行细化管理,实际上这种场景是存在的。
实际处理时,Redis作为高性能的内存数据库,承载着缓存、会话存储、消息队列等关键功能。
在这个场景下,随着团队规模的扩大和微服务架构的普及,不同服务或团队对Redis的访问权限需求各不相同。典型场景包括:
- 监控系统需读取性能指标,但不应修改数据
- 数据分析团队需查询数据,但不应影响生产环境
- 开发人员在调试时需查看数据,但不应意外修改
- 第三方服务需访问特定数据,但权限应受限制
落到代码里,设置只读账号正是为了解决这类权限分离需求,借助最小权限原则降低数据意外修改或删除的风险。
二、Redis账号介绍:ACL系统
理解这一步时,自Redis 6.0起,建议采用Redis 6.2或更高版本,引入了更完善的ACL(Access Control List)系统,取代了之前的轻松密码认证。Redis ACL兼容:
- 用户管理:新建多个用户账号
- 命令控制:精确控制每个用户可执行的命令
- 键空间控制:限制可访问的键模式
- 权限类别:读、写、管理等多种权限类型
1、命令举例
user admin on >admin_password ~* &* +@all
user readonly on >readonly_password ~* -@all +@read +ping +info
2、上述命令解析
命令类别:
+@read:允许所有读命令-@all:禁止所有命令(作为起点)+get:允许get命令+info:允许info命令
键模式
~*:允许访问所有键~cache:*:仅允许访问以cache:开头的键~user:*~session:*:允许访问多种模式
结合项目来看,博主这里的示例实验环境是redis7.2.11,版本。如果是只授权某个命令权限或者某类命令权限,记得-@all命令要先写,后面跟上需设置的命令授权。
[root@ywserver ~]# redis-cli --version
redis-cli 7.2.11
三、设置方式及设置示例
1、借助Redis CLI设置(临时)
实际处理时,先设置一个只读用户,用只读账户连接测试,我们就能够发现这个用户能够执行get,exists等只读命令,但是不能执行set等写入命令。
127.0.0.1:6379>ACL SETUSER readonly on >readonly_password ~* -@all +@read
2、借助设置文件(永久生效)
在这个场景下,借助Redis CLI设置账户及授权在当前服务进程生效,redis重启后账户设置及授权就丢失了。
结合项目来看,如果需永久生效我们需在/etc/redis.conf设置文件中进行设置,添加如下所示一行设置之后重启redis。
若用户需远程连接,记得加上+@connection权限。
user readuser on >user123 ~* &* -@all +@read +@connection
3、借助ACL文件管理
理解这一步时,为便于便于管理用户,我们能够指定users.acl作为用户权限设置管理文件,这样的好处是修改了users.acl之后我们能够借助ACL LOAD热加载设置文件,不需重启redis。
[root@ywserver ~]# mkdir -p /etc/redis
[root@ywserver ~]# vim /etc/redis/users.acl
[root@ywserver ~]# systemctl restart redis
[root@ywserver ~]# cat /etc/redis.conf |grep users.acl
aclfile /etc/redis/users.acl
[root@ywserver ~]# cat /etc/redis/users.acl
user default off
user admin on >admin123 ~* &* +@all
user readuser on >user123 ~* -@all +@read +ping +info
四、管理命令参考
- 查看所有用户
ACL LIST
- 查看特定用户规则
ACL GETUSER readuser
- 删除用户
ACL DELUSER readuser
- 保存ACL设置到文件
ACL SAVE
- 加载ACL设置
ACL LOAD
- 查看命令类别
ACL CAT
- 查看所有读命令
ACL CAT read
五、常用命令类别包含的命令
1、@read 类别(部分)
- get, mget, hget, hmget
- exists, type, ttl, pttl
- llen, lrange, scard, smembers
- zcard, zrange, zscore
- keys, scan, hscan, sscan, zscan
2、@write 类别(部分)
- set, mset, hset, hmset
- del, hdel, srem, zrem
- incr, decr, hincrby
- lpush, rpush, lpop, rpop
3、其他实用类别
@connection:连接相关(AUTH, HELLO, QUIT等)@pubsub:发布订阅相关@fast:更快命令(PING, ECHO等)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多兼容脚本之家。
您可能感兴趣的文章:
- Redis中big keys发现与解决过程
- Redis缓存预热的概念及方法详解
- Redis 持久化机制的采用小结
- Redis之大key热点key的问题及处理
- 解读Redis的持久化方式(RDB、AOF)
- Redis Caffeine多级缓存框架的实现
- Redis bgsave的采用小结
-
08.27
为什么大多数人不愿意接受AI?
-
08.27
SCAIL-2 - 智谱联合清华开源的角色动画模型
-
08.27
上纬新材彭文正:行业已不在「能不能造机器人」时代,而在「敢不敢进消费级」时代
-
08.27
梦境护卫队蜘蛛女王角色说明
-
08.27
AI成了职场“催命符”?大厂员工吐心声:工作没变少,任务反而更饱和
-
08.27
AI 测试工具 2026 选型对比:自动生成、回归对比与视觉回归,测试左移的智能化路线
-
-
- PostgreSQL清空数据库的常用做法实用指南
- 08.27
-
- Redis配置只读账号实现方式方式实用指南
- 08.27
-
-
-
- 怒火一刀兑换码汇总2026
- 08.27
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏