问题描述
在自建的Redis服务中,可以通过 config set requirepass <Password> 设置Redis的登录密码,然后使用auth 命令输入密码。操作命令如下:
##设置密码
C:\LBWorkSpace\tool\redis>redis-cli
127.0.0.1:6379> config set requirepass Password@123
OK
127.0.0.1:6379> quit
##重新连接到Redis服务器
C:\LBWorkSpace\tool\redis>redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth Password@123
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
那么在Azure 的Redis服务中,是否也可以用户自定义密码呢?
问题分析
在Redis中,设置密码使用的指令为CONFIG SET requirepass, 根据Azure 官方文档,CONFIG命令被禁止。所以无法实现自定义密码。只能根据Redis门户的Access Key中生成随机的一串密钥,由Azure平台提供。
**在Azure Redis中执行CONFIG SET REQUIREPASS 会得到ERR unknown command **
在Azure门户中生成密钥
重要
因为 Azure Redis 缓存实例的配置和管理由 Microsoft 进行管理,所以禁用了以下命令。 如果尝试调用它们,将收到一条类似于 "(error) ERR unknown command" 的错误消息。
- BGREWRITEAOF
- BGSAVE
- CONFIG
- DEBUG
- MIGRATE
- SAVE
- SHUTDOWN
- SLAVEOF
- CLUSTER - 群集写命令已禁用,但允许使用只读群集命令。
引申问题
因为Azure Redis不能让用户自定义密码,所以当两个Redis作为灾备时候,需要手动的在程序中修改密钥。那么,两个Linked(在高级版的Redis中启用异地灾备)的Redis是否可以设置为相同的密钥呢?因自建的Redis服务器可以设置密钥,那么是否可以把Azure PaaS Redis和自建的Redis服务进行主从配置呢?
答案是:统统不可以。
参考资料
Azure Redis 缓存中不支持 Redis 命令:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-configure#redis-commands-not-supported-in-azure-cache-for-redis
为高级 Azure Cache for Redis 实例配置异地复制:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-geo-replication
[完]