分布式缓存Redis版兼容哪些Redis命令和操作?
分布式缓存服务Redis版兼容支持绝大部分开源Redis的命令和操作,仅禁用了个别命令。具体请参考开源命令兼容性。
如何查询Redis实例的原生版本
进入实例管理控制台的命令窗口页面你,执行INFO命令即可查询原生版本号。 查看输出结果中的“redis_version”。
注意仅Redis 6.0/7.0 支持查看原生版本
Redis实例能否修改VPC和子网?
不允许修改,若需要修改请重新创建实例。
如何连接实例使用?
任何兼容Redis协议的客户端都可以连接访问。
连接密码是什么?
默认连接必须设置密码。开通时若未创建实例密码默认会随机初始化密码,使用时需要在实例详情进行密码重置。标准版和集群版auth参数不一致,集群版为:实例名称#实例密码;标准版为:实例密码。
Jedis连接池报错如何处理?
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
测试网络、检查连接数是否超限制、检查JedisPool连接池代码、检查客户端TIME_WAIT是否过多。
为什么可用内存小于申请规格?
由于系统开销会占用部分资源,持久化也需要一部分资源,所以实例创建后,缓存实例实际可用内存小于申请规格。
目前支持的引擎版本有哪些?
目前提供redis 2.8/4.0/5.0的优化版本,建议选择5.0。
客户端最大连接数最大多少?
单机主备或者每个代理层接入机默认最大连接数是10000;连接数不是越多越好,建议控制连接数不超过3000。
备份策略有哪些?
支持手动和周期自动备份;最大提供3份备份副本,超出可选择删除再次进行备份。
过期逐出策略是怎样的?
主动过期,系统周期性的检测,发现已过期的key时,会将其删除。惰性删除,当个key被访问时,如果已经过期,则将其删除。
Redis实例支持的单个Key和Value数据大小是否有限制?
数据大小:单条记录(key+value)建议大小不超过32K;
内存使用率多少比较合适?
内存使用: redis实例内存使用率最好不要超过80%,建议为60-70%;预留20%应对突发流量和实例运维。
redis实例使用慢日志查询?
进入redis集群管理,点开慢日志菜单,选择对应redis节点查询是否有慢查询,redis默认服务侧耗时超过10ms为慢日志。具体操作请参考慢日志查询
如何在控制台页面操作redis实例?
点击“命令窗口”标签页,可进入命令窗口页面。选择DB,可以在命令行窗口执行redis命令,操作对应DB中的数据。
通过命令设置redis密码,为何重启后失效?
使用命令设置的密码只临时生效,重启后失效。
需要将修改配置文件才能永久生效,可以修改密码后再执行config rewrite 将当前所使用的配置记录到 redis配置文件中。
redis的db数量有多少?
每个实例支持256个DB,范围[0,256]
如何进行服务质量检查?
通过监控平台对接入机节点和redis节点的可用性进行检查,通过返回码判断服务的可用性。接入机可用性检查则需要选择客户端监控,监控类型为接入机,通过查询统计值分析其可用性。redis健康检查要选择接入机监控,查询统计值,分析redis可用性。
如何进行性能状态检查?
通过查询接入机、redis、客户端各节点的指标进行性能分析,根据请求数量、平均耗时、最大耗时、报文大小的分布情况检查
Redis实例能否修改VPC和子网?
实例的VPC和子网,创建后不允许修改。
如何确认实例是单DB还是多DB?
单机、主备、集群单机、集群主备实例类型都为多DB(256个,DB编号为0-255)。
Redis Cluster集群实例不支持多DB,只有一个DB。
按需实例转包周期需要停服么?
按需实例转包周期不中断业务,仅计费方案变更,不会涉及实例资源的重启操作。
按需实例转包周期失败是什么原因?
只有运行中的实例才可以执行按需转包周期的操作,请检查实例状态
为什么实例实际可用内存比申请规格小而且已使用内存不为0?
由于系统开销会占用部分资源,实例的持久化也需要一部分资源,所以实例创建后缓存实例实际可用内存小于申请规格。除了用户存储数据外,Redis-server内部的buffer以及内部数据结构会占用一部分内存。所以缓存实例创建后,实例已使用内存量不为0。
重启实例后缓存数据会保留吗?
实例默认支持AOF持久化,并且AOF持久化功能不支持关闭,因此实例重启后原有的数据会保留。
Redis中有哪些可以替代KEYS命令这样的慢操作,实现对键值对的模糊查询呢?
当我们利用KEYS命令查询时,如果数据过大,KEYS操作会阻塞后续的读写请求。Redis提供了SCAN,以及针对集合类型的SSCAN、HSCAN等可以根据设定的数量参数,返回固定指定的数量,可以避免像KEYS命令一样同时返回所有匹配的数据,不会导致Redis变慢。
如何查找Redis的bigkey?
在应用中,我们需要尽量避免使用bigkey,因为Redis主线程在操作bigkey时,会被阻塞,但是如果业务中我们使用了bigkey,那么应该如何排查呢?Redis可以执行redis-cli命令时带上--bigkeys选项(redis-cli -h -p -a --bigkeys。),执行该命令后,它会对整个数据库中的键值大小进行统计分析,会输出每种数据类型中最大的bigkey信息,比如String类型,会输出最大的字节长度的bigKey,而对于集合类型来说,会输出最多元素个数的bigkey。但需要注意的是:对于集合类型的bigkey来说,元素最多的集合,不一定是占用内存最大的集合。
此外也可以通过redis-rdb-tools(Redis RDB快照文件分析的开源工具)来分析实例中所有key的内存占用情况。
如何查找Redis的hotkey?
Redis 4.0版本起,redis-cli客户端提供了--hotkeys参数(redis-cli -h -p -a --hotkeys)来查询分析当前运行期间的热key。注:使用--hotkeys参数的前提是需要redis实例使用LFU内存淘汰策略。
如何判断是否存在内存碎片?
Redis是内存数据库,内存利用率的高低关系到redis运行效率,为了能监控到实时的内存使用情况,redis提供了info memory命令,可以查询内存的使用情况,其中mem_fragmentation_ratio指标展示的就是内存碎片率,这个内存碎片率是used_memory_rss和used_memory相除的结果,其中一个用户实际使用的内存大小,另一个是已经分配的内存大小,例如一个key实际使用了6个字节的内存空间,但是redis内存机制是分配了8字节的大小。控制台在指标监控中有展示内存碎片率指标,可以支持查询历史内存碎片率。
Redis实例每个DB空间大小和选择DB?
每个分布式缓存Redis版有256个DB,从DB0到DB255。每个DB没有单独的内存占用量限制,DB可以使用的内存容量受Redis实例的总内存限制。
您可以使用SELECT命令在不同DB之间切换。例如,要切换到DB108,可以使用如下命令
select 108
为什么实例实际可用内存比申请规格小而且已使用内存不为0?
系统开销会占用部分资源,主备实例的持久化也需要一部分资源,因此实际可使用内存会比申请规格略小。
实例无法删除是什么原因?
当实例处于运行中时才能执行删除操作。
是否支持跨可用区部署?
标准版主备与集群版主备支持多可用区部署,在创建实例时可选择跨可用区部署。
实例是否支持变更可用区?
不支持变更可用区,如需要变更,请重新创建实例
Redis实例是否支持读写分离?
目前暂不支持读写分离
Redis的安全加固方面有哪些建议?
访问控制:在 Redis 配置中启用密码认证,设置一个强密码来限制对 Redis 实例的访问。可以在 Redis 配置文件的 requirepass 参数中设置密码,并使用 AUTH 命令在客户端进行身份验证。此外,确保只允许受信任的客户端访问 Redis,通过配置 bind 参数限制可连接的 IP 地址。
此外将 Redis 实例放置在安全的网络环境中,例如通过防火墙或安全组设置适当的网络策略,限制对 Redis 端口的访问。只允许需要访问 Redis 的受信任主机或网络访问 Redis 实例。
如何估算Redis内存占用量?
Redis内存占用量可参考Redis官方网站进行估算
实例状态显示"已冻结”是什么原因?
若包周期实例到期后未进行续费,则实例会转为“已冻结”状态,并限制使用。请及时续费以免数据丢失。
实例的连接地址是什么?
实例的连接地址为统一 的虚拟vip+固定端口,实例经过扩容等变更后,虚IP会自动漂移到新的虚机上,对应用保持地址不变,无需修改应用代码配置。可通过控制台查看链接地址,具体请参考查看连接地址
实例的到期时间怎么理解?
包周期的实例到期时间为自然月的整数,按需的实例无具体到期时间。
实例类型有哪些?
目前实例类型有单机、主备、集群单机、集群主备四种类型
实例的维护时间是什么?
实例的维护时间,您可以根据业务规律,将可维护时间段设置在业务低峰期,以免维护过程中可能对业务造成的影响
实例的应用数据管理介绍?
实例的应用数据管理菜单进入后,可针对不同分组db的数据进行分页展示,页面可查询该分组总的key数量,而且支持单个key的页面增删改查
实例的可使用内存有多少?
由于系统资源占用部分开销,redis实例可使用的内存会比规格内存小一点,建议redis内存使用到80%左右开始考虑扩容,且应用建议对key设置失效时间,避免无效内存占用。
实例管理中实例的状态有哪些?
实例的状态包含开通中、运行中、即将过期、已过期等
为什么有的实例列表中接入机集群为空?
单机、主备类型实例,应用通过vip直连redis节点,无中间代理层,所以实例列表中接入机集群为空
实例名称和实例ID的关系?
实例ID为redis实例的唯一标识,实例名称为实例的别名,在新的版本里可以修改实例名,但不能修改实例ID
不同计费类型的实例操作退订后效果一样吗?
包周期的实例退订时,实例会被冻结访问,默认超过15天后才会自动释放实例数据。如果实例为按需计费类型,用户操作退订后则立马释放实例数据。
单机和集群的槽段如何分布?
单机主备的槽段范围为0~16383 集群的槽段为1638平均分布在各个redis分片
使用redis_exporter出错如何处理?
您可执行redis_exporter命令,根据返回的错误提示进行问题排查。
Redis有没有后台管理软件?
目前暂不支持。您可通过控制台的监控能力查看相关性能数据,具体请参考产品监控
访问Redis报OOM错误提示如何处理?
若访问Redis时提示Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: OOM command not allowed when used memory > 'maxmemory',即说明目前Redis实例内存已使用满了,请在资源监控中查看内存使用率。
读取redis数据报超时错误如何处理?
- 检查客户端超时时间是否设置得过小
- 检查执行操作的key值大小,若key值太大也会造成超时报错,建议key值不要超过10KB。
- 根据报错提示调整PingConnectionInterval参数
是否支持外部扩展模块、插件或者Module?
暂不支持。
hashtag是什么?有什么作用?
Redis 的 HashTag 是一种在 Redis 键中使用的特殊标记机制,用于控制相同部分哈希槽(slot)的键被存储在同一个 Redis 节点上。HashTag 可以确保相关联的键被映射到相同的哈希槽上,这在某些情况下可以提高 Redis 集群的性能和可用性。在 Redis 集群中进行哈希槽分配时,带有相同 HashTag 的键将被分配到相同的槽上,从而确保它们被存储在同一个 Redis 节点上。这有助于保持相关联的数据在物理上的近距离存储,提高了数据访问的效率。
实例是否支持自定义或修改端口?
暂不支持,您可在控制台实例信息中查看端口,具体请参考查看实例信息
实例是否支持修改访问地址?
暂不支持,您可以在控制台查看访问地址,具体请参考查看连接地址
集群实例启动时间过长是什么原因?
可能是由于在启动过程中就进行大量数据的持续写入,这会影响到启动过程中的状态、数据同步进程,因此建议您在集群实例完成启动后再进行业务数据写入。
如何查看Redis集群每个节点的IP地址?
您可使用CLUSTER NODES 命令,这个命令会返回 Redis 集群中所有节点的信息,包括节点的 ID、IP 地址、端口号等。