【Azure Redis 缓存】Azure Redis 服务不支持指令CONFIG
问题描述
在Azure Redis的门户页面中,通过Redis Console连接到Redis后,想通过CONFIG命令来配置Redis,但是系统提示CONFIG命令不能用。 错误消息为:(error) ERR unknown command `config`。

根本原因
因为 Azure Redis 缓存实例的配置和管理由 微软进行管理,所以禁用了以下命令。 如果尝试调用它们,将收到一条类似于 "(error) ERR unknown command" 的错误消息。
- BGREWRITEAOF
- BGSAVE
- CONFIG
- DEBUG
- MIGRATE
- SAVE
- SHUTDOWN
- SLAVEOF
- CLUSTER - 群集写命令已禁用,但允许使用只读群集命令。
更详细的说明见官方文档说明:Azure Redis 缓存中不支持 Redis 命令
解决方案
方式一:在门户上配置Redis的参数。如SSL, Maxmemory-Policy, Maxmemory-reserved, Maxfragmentationmemory-reserved.
- SSL:默认情况下,Azure为新缓存禁用非 TLS/SSL 访问。 要启用非 TLS 端口,需在如下截图页面中修改。
- Maxmemory policy 缓存逐出策略, 默认值为volatile-lru, 即在配置过过期时间的Key中移除最近不使用的Key以腾出空间存储新值。其他的逐出策略见本文附录一
- Maxmemory-reserved:设置用于配置群集中保留给非缓存操作(例如故障转移期间的复制)的每个实例的内存量(以 MB 为单位)
- Maxfragmentationmemory-reserved:设置用于配置群集中保留以容纳内存碎片的每个实例的内存量(以 MB 为单位)
而如果需要设置其他的配置,则只能通过 方式二PowerShell命令 来设置。

方式二:通过PowerShell命令(Set-AzRedisCache)来修改Redis的配置。Set-AzRedisCache命令中,最主要的配置包含在RedisConfiguration参数中。
Set-AzRedisCache:
PS C:\> Get-Help Set-AzRedisCache -detailed
NAME
Set-AzRedisCache
SYNOPSIS
Set Azure Cache for Redis updatable parameters.
SYNTAX
Set-AzRedisCache -Name <String> -ResourceGroupName <String> [-Size <String>] [-Sku <String>]
[-MaxMemoryPolicy <String>] [-RedisConfiguration <Hashtable>] [-EnableNonSslPort <Boolean>] [-ShardCount
<Integer>] [<CommonParameters>]
DESCRIPTION
The Set-AzRedisCache cmdlet sets Azure Cache for Redis parameters.
PARAMETERS
-Name <String>
Name of the Azure Cache for Redis to update.
-ResourceGroupName <String>
Name of the resource group for the cache.
-Size <String>
Size of the Azure Cache for Redis. The default value is 1GB or C1. Possible values are P1, P2, P3, P4, C0, C1, C2, C3,
C4, C5, C6, 250MB, 1GB, 2.5GB, 6GB, 13GB, 26GB, 53GB.
-Sku <String>
Sku of Azure Cache for Redis. The default value is Standard. Possible values are Basic, Standard and Premium.
-MaxMemoryPolicy <String>
The 'MaxMemoryPolicy' setting has been deprecated. Please use 'RedisConfiguration' setting to set
MaxMemoryPolicy. e.g. -RedisConfiguration @{"maxmemory-policy" = "allkeys-lru"}
-RedisConfiguration <Hashtable>
All Redis Configuration Settings. Few possible keys: rdb-backup-enabled, rdb-storage-connection-string,
rdb-backup-frequency, maxmemory-reserved, maxmemory-policy, notify-keyspace-events, hash-max-ziplist-entries,
hash-max-ziplist-value, set-max-intset-entries, zset-max-ziplist-entries, zset-max-ziplist-value.
-EnableNonSslPort <Boolean>
EnableNonSslPort is used by Azure Cache for Redis. The default value is null and no change will be made to the
currently configured value. Possible values are true and false.
-ShardCount <Integer>
The number of shards to create on a Premium Cluster Cache.
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).
Set-AzRedisCache 示例:(示例引用来自:如何设置让Azure Redis中的RDB文件暂留更久(如7天))
$RedisConfiguration = @{"rdb-backup-enabled"="true"; "rdb-backup-frequency"="60"; "rdb-storage-connection-string"="$StorageConnectionString"; "rdb-backup-max-days"="7"}
Set-AzRedisCache -ResourceGroupName $ResourceGroupName -Name $CacheName -RedisConfiguration $RedisConfiguration
注:配置完成后,可以使用 Get-AzRedisCache cmdlet 检索有关缓存的信息。
附录一:Redis逐出策略 [less recently used (LRU),Least Frequently Used(LFU) ]
volatile-lru :通过尝试先删除最近不使用的(LRU)密钥来移出密钥,但只有在已设置过期的密钥中才能移出这些密钥,以便为添加的新数据腾出空间。
allkeys-lru:通过尝试先删除最近不使用的(LRU)键来移出键,以便为添加的新数据腾出空间。
volatile-random:为添加新的键腾出空间,随机逐出其他键,但是仅逐出设置了过期时间的键。
allkeys-random:随机逐出其他键,以便为添加新的键腾出空间。
volatile-ttl:逐出设置过期的密钥,并尝试首先逐出具有较短生存时间(TTL)的密钥,以便为添加新的键腾出空间。
noeviction:当达到内存限制并且客户端尝试执行可能导致使用更多内存的命令时,将返回错误(大多数写入命令,但DEL和一些其他例外)。
volatile-lfu:使用设置过期并且使用频率最少的键(LFU)中进行驱逐。
allkeys-lfu:使用频率最少的键(LFU)逐出任何密钥。
参考资料
如何设置让Azure Redis中的RDB文件暂留更久(如7天): https://www.cnblogs.com/lulight/p/13842979.html
Azure Redis 缓存中不支持 Redis 命令: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-configure#redis-commands-not-supported-in-azure-cache-for-redis
Redis Eviction policies: https://redis.io/topics/lru-cache#eviction-policies
更新 Azure Redis 缓存: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-manage-redis-cache-powershell#to-update-an-azure-cache-for-redis
【Azure Redis 缓存】Azure Redis 服务不支持指令CONFIG的更多相关文章
- 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...
- 【Azure Redis 缓存】云服务Worker Role中调用StackExchange.Redis,遇见莫名异常(RedisConnectionException: UnableToConnect on xxx 或 No connection is available to service this operation: xxx)
问题描述 在Visual Studio 2019中,通过Cloud Service模板创建了一个Worker Role的角色,在角色中使用StackExchange.Redis来连接Redis.遇见了 ...
- 【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
问题描述 Azure Redis和所有的Redis服务一样,可以让你保留存储在Redis中的数据.以防万一在Redis服务器出现故障的时候能尽可能小的减少数据的损失.在Azure Redis服务中,默 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis性能问题,发现Server Load非常的高,导致正常连接/操作不成功
问题描述 在正常使用Azure Redis的服务中,突然发现Redis 的CPU达到了100%, 正常的使用中发现性能问题严重.从Redis的门户图表中,观察到CPU, Connection,Lent ...
- 【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的.但是 ...
- 【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
问题描述 关于Azure Redis的性能问题,在官方文档中,可以查看到不同层级Redis的最大连接数,每秒处理请求的性能. 基本缓存和标准缓存 C0 (250 MB) 缓存 - 最多支持 256 个 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
问题描述 在使用Azure Redis时,遇见Read Timed out异常, Redis的客户端使用的时jedis.问题发生时,执行redis部分指令出错,大部分get指令,set指令能正常执行. ...
- 【Azure Redis 缓存 Azure Cache For Redis】当使用Jedis客户端连接Redis时候,遇见JedisConnectionException: Could not get a resource from the pool / Redis connection lost
问题情形 当在执行Redis一直指令时,有可能会遇见如下几种错误: 1) redis.clients.jedis.exceptions.JedisConnectionException: Could ...
随机推荐
- ESP定律脱壳——NsPack3.x脱壳
首先进行查壳,NsPack 将程序拖入x64dbg 程序入口处标志性的push F8单步,发现仅有esp寄存器有变化 在esp上右键,在内存窗口查看,下硬件断点 F9运行程序,程序断在pop之后. 使 ...
- 如何基于App SDK快速地开发一个IoT App?
一.背景及大纲介绍 在如今物联网DCM(Device.Connect.Manage)的大框架下,有一个应用层来分析和处理数据,是必备技能.但是,对于一个公司来说,因为研发能力或者研发时间的原因,可能很 ...
- ceph 集群快速部署
1.三台Centos7的主机 [root@ceph-1 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 2.主机 ...
- 接上一篇:(二) IOC的概念和作用
IOC的概念和作用 控制反转(IoC:Inversion of Control)把创建对象的权利转交给框架(框架的重要特征),并非面向对象的专用术语. 它包含依赖注入(DI:Dependency In ...
- web自动化-绕过登录
两个方法: 1.常用的方法: 第一种方法是登录后查看网站的 cookie,请求 url 的时候把 cookie 带上(缺点是:cookie有时间限制.优点:简单,方便) 2.添加cookies的方式: ...
- 以前一个个文件删数据的我,今天终于找到了释放C盘空间的办法
这是我刚刚清理的C盘,亲测有效!无需安装清理空间的软件,我的电脑品牌是华硕. win10的电脑应该都有搜索功能,如果没有开启,可以鼠标右键点击任务栏. 弹出菜单找到[搜索]-[显示搜索图标],勾选即可 ...
- Docker 跨平台在 netCore 中的从入门到部署
前言 从题目我们可以看的出,今天是五部曲的第三部,你可能会好奇,为啥没有见到前两部呢?这里我简单说下: 1.跨平台第一部曲:MySql 如果你看我的所有开源项目,应该能发现我已经全部迁移到了Mysql ...
- Django使用联合主键
今天闲着没事,突然想起一个以前遇到的一个小问题.一直忘了来验证自己的解决方案,所以今天特意来查询了些资料来验证下自己的想法.整理如下: 单张表内建立联合主键: class IotTemp(models ...
- 一千行MySQL命令
基本操作 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_p ...
- Sql注入--数字型手工测试
Sql注入--数字型手工测试 漏洞原因:是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作SQL语句的一部分执行. 从而 ...