首页 > 编程学习 > 阿里云Redis开发遇到的问题总结

阿里云Redis开发遇到的问题总结

发布时间:2022/11/9 22:35:08

一、常见的客户端程序

关于Redis支持的客户端列表,请参见Redis Clients。

  • Jedis客户端
  • TairJedis客户端(Redis企业版专用)
  • PhpRedis客户端
  • redis-py客户端
  • C或C++客户端
  • .NET客户端
  • node-redis客户端
  • Go-redis客户端
  • Lettuce客户端(不推荐)

Jedis客户端

说明 企业版(内存型)推荐使用TairJedis客户端。

  1. 下载并安装Jedis客户端。具体操作,请参见Jedis使用说明。
  2. 根据业务需求选择连接方式。
    1. 打开Eclipse客户端,创建一个Project并配置pom文件,具体内容如下:
      <dependency>
         <groupId>redis.clients</groupId>
         <artifactId>jedis</artifactId>
         <version>Latest non-RC version</version>
         <type>jar</type>
         <scope>compile</scope>
      </dependency>

      说明 最新版本,请参见Jedis。

    2. 根据Jedis客户端版本,在Project中输入下述代码,然后根据注释提示修改代码。

      说明 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。

       Jedis 最新版本 Jedis 2.4.0及以下Jedis单连接(不推荐,单次超时后无法自动恢复)
      JedisPoolConfig config = new JedisPoolConfig();
      // 最大空闲连接数,需自行评估,不超过Redis实例的最大连接数
      config.setMaxIdle(200);
      // 最大连接数,需自行评估,不超过Redis实例的最大连接数。
      config.setMaxTotal(300);
      config.setTestOnBorrow(false);
      config.setTestOnReturn(false);
      // 分别将host和password的值替换为实例的连接地址、密码。
      String host = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com";
      String passwor = "";
      JedisPool pool = new JedisPool(config, host, 6379, 3000, password);
      Jedis jedis = null;
      try {
          jedis = pool.getResource();
          /// ... do stuff here ... for example
          jedis.set("foo", "bar");
          System.out.println(jedis.get("foo"));
          jedis.zadd("sose", 0, "car");
          jedis.zadd("sose", 0, "bike");
          System.out.println(jedis.zrange("sose", 0, -1));
      } catch (Exception e) {
          // timeout and other error
          e.printStackTrace();
      } finally {
          if (jedis != null) {
              jedis.close();
          }
      }
      /// ... when closing your application:
      pool.destroy();
  3. 运行上述Project,在Eclipse的控制台输出如下运行结果则表示您已成功连接至云数据库Redis。
    bar
    [bike, car]

警告 在使用Jedis的过程中,如果设置了一些不合理的参数或错误使用某些功能可能会引起报错,关于如何排查,请参见Jedis常见异常汇总。

TairJedis客户端

TairJedis是阿里云基于Jedis开发的Redis企业版专用客户端,除了Jedis的原有功能,还支持Redis企业版数据结构模块包含的命令。

说明 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。

更多信息,请参见tairjedis-sdk。

PhpRedis客户端

  1. 下载并安装PhpRedis客户端。具体操作,请参见PhpRedis使用说明。
  2. 在PHP编辑器中输入下述代码,然后根据注释提示修改代码。

     通用示例企业版Tair示例

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。
  3. 执行上述代码。

    更多信息,请参见官方文档。

说明 常见报错与解决方法:

  • Cannot assign requested address,原因分析及排查方法,请参见使用短连接访问Redis出现“Cannot assign requested address”错误。
  • redis protocol error, got ' ' as reply type byte,请升级您的PhpRedis客户端版本,参见GitHub issue。

redis-py客户端

  1. 下载并安装redis-py客户端。具体操作,请参见redis-py使用说明。
  2. 在Python编辑器中输入下述代码(Python 2版本),然后根据注释提示修改代码。

     通用示例企业版Tair示例

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。
  3. 执行上述代码。

Spring Data Redis客户端

  1. 下载并安装Spring Data Redis客户端。
  2. 在Spring Data Redis编辑器中输入下述代码,然后根据注释提示修改代码。

     Spring Data Redis With Jedis(推荐)Spring Data Redis With Lettuce (不推荐)

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • Spring Data Redis 2.0版本后默认使用Lettuce作为驱动,如您希望切换至Jedis,需要排除Lettuce并主动引入Jedis依赖,示例如下:
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
          <exclusions>
              <exclusion>
                  <artifactId>lettuce-core</artifactId>
                  <groupId>io.lettuce</groupId>
              </exclusion>
          </exclusions>
      </dependency>
      
      <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>Latest non-RC version</version>
      </dependency>
  3. 执行上述代码。

    更多信息,请参见Spring Data Redis。

C或C++客户端

  1. 执行下述命令,下载并编译安装C客户端。
    git clone https://github.com/redis/hiredis.git
    cd hiredis
    make
    sudo make install
  2. 在C或C++编辑器中输入下述代码,然后根据注释提示修改代码。

     通用示例企业版Tair示例

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。
  3. 编译上述代码。
    gcc -o example -g example.c -I /usr/local/include/hiredis -lhiredis
  4. 测试运行,完成连接。
     example r-bp10noxlhcoim2****.redis.rds.aliyuncs.com 6379 instance_id password

.NET客户端

警告 如果您的Redis实例为集群架构或读写分离架构,且需要执行切换或选择数据库的操作(即使用多数据库功能),您必须先将cluster_compat_enable参数设置为0(即关闭原生Redis Cluster语法兼容),然后重启客户端应用,否则将提示报错: Multiple databases are not supported on this server; cannot switch to database。具体操作,请参见设置实例参数。

  1. 下载并安装StackExchange.Redis。重要 不推荐使用ServiceStack.Redis或CSRedis客户端:
    • 若使用ServiceStack.Redis客户端时遇到客户端的相关问题,您需要向该公司购买相关技术支持服务。
    • CSRedis客户端的设计存在部分缺陷,且原开发者已停止维护,如有特别场景需求,可使用FreeRedis客户端。
  2. 根据提示修改下述示例代码。

     通用示例企业版Tair示例

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。
    • ConfigurationOptions是StackExchange.Redis的核心,它被整个应用程序共享和重用,应该设置为单例,相关参数设置说明,请参见ConfigurationOptions。
    • 由于GetDatabase()返回的对象是轻量级的,每次用的时候从ConnectionMultiplexer对象中获取即可。
       redisConn = getRedisConn();
       var db = redisConn.GetDatabase();
  3. 通过客户端程序操作常见的数据结构(和原生API略有不同)。

     String Hash List SetSorted Set

node-redis客户端

  1. 下载并安装node-redis。
    npm install hiredis redis
  2. 在node-redis客户端中输入下述代码,然后根据注释提示修改代码。

     通用示例企业版Tair示例

    说明
    • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
    • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。
  3. 执行上述代码。

Go-redis客户端

 通用示例企业版Tair示例

说明

  • 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。
  • 对于企业版(内存型)实例,您可以单击上方的企业版Tair示例页签,查看数据结构模块(如TairString)的使用示例。关于数据结构模块的相关介绍,请参见Tair扩展数据结构的命令。

Lettuce客户端

Lettuce支持完整Redis API的同步和异步通信使用。由于Lettuce客户端在请求多次请求超时后,不再自动重连,当云数据库Redis因故障等因素导致代理或者数据库节点发生切换时,可能出现连接超时导致无法重连。为避免此类风险,推荐您使用Jedis客户端。

说明 关于如何获取Redis实例的连接地址和密码,请参见如何获取连接信息。

二、阿里云 Redis参数支持

云数据库Redis版支持自定义部分参数的值,不同的引擎版本和架构支持的参数有所区别,本文为您介绍各参数的详细说明。

注意事项

  • 由于部分参数对实例的小版本有一定依赖,如果小版本过低,在设置时可能提示错误。升级方法,请参见升级小版本。
  • 部分参数在提交修改后会自动重启实例(重启过程中实例会发生秒级闪断)。在设置参数时,您需要关注目标参数的重启生效列,更多信息,请参见设置实例参数。

重要 本文仅包含Redis社区版实例的参数,关于Tair(Redis企业版)实例的参数(包含内存型、持久内存型和云盘(ESSD)型)请参见Tair参数支持。

支持的参数及说明

为便于阅读和内容表达,本文的表格约定使用下述注释:

  • ✔️表示在该大版本或架构下,支持该参数。
  • ❌表示在该大版本或架构下,不支持该参数。

说明

  • 为最大程度保障Redis实例的稳定运行,目前仅开放部分参数,如果某个参数未在本文中列出,即不支持设置该参数。
  • 关于架构的详细介绍,请参见标准架构、集群架构和读写分离架构。
参数说明实例的大版本与架构
6.0版本5.0版本4.0版本2.8版本
#no_loose_audit-read-enabled开启或关闭读请求审计,开启后审计日志中显示读请求。可选值:
  • yes:开启。
  • no:默认值,关闭。

说明 Redis云盘版实例不支持设置该参数。

标准 ❌

集群 ✔️

读写分离 ✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

#no_loose_check-whitelist-always开启专有网络免密后默认不检查客户端的IP是否在Redis白名单中,此时如果将该参数的值设置为yes,则白名单依然生效。可选值:
  • yes:开启。
  • no:默认值,关闭。

说明 Redis云盘版实例不支持设置该参数。

标准️️✔️

集群✔️

读写分离✔️

标准️️✔️

集群✔️

读写分离✔️

#no_loose_disabled-commands设置禁用命令,可根据业务需求禁用某些高危命令或高时间复杂度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。说明
  • 命令以小写字母的形式填写,多个命令间使用英文逗号(,)分隔。
  • 禁用FLUSHALL命令不会影响控制台中清除数据功能。

标准️️✔️

集群✔️

标准️️✔️

集群✔️

读写分离✔️

标准️️✔️

集群✔️

读写分离✔️

标准️️✔️

集群✔️

读写分离✔️

#no_loose_sentinel-enabled开启或关闭哨兵(Sentinel)兼容模式,可选值:
  • yes:开启。
  • no:默认值,关闭。

标准️️✔️

集群✔️

标准️️✔️

集群✔️

读写分离✔️

标准️️✔️

集群✔️

读写分离✔️

#no_loose_ssl-enabled开启或关闭SSL加密连接,可选值:
  • yes:开启。
  • no:默认值,关闭。

说明 Redis云盘版实例不支持设置该参数。

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

#no_loose_statistics-cmds本组参数为云数据库Redis可观测性能力的一部分,设置后还需要配合审计日志才会生效,统计周期为5秒/次。
  • #no_loose_statistics-cmds:设置要统计的命令,统计这些命令的来源IP地址和频率,默认为空,即不统计。多个命令以英文逗号(,)分隔。
  • #no_loose_statistics-ip-enable:设置是否开启IP地址统计,即记录建连的IP地址,可选值为yes(开启),no(默认值,关闭)。
  • #no_loose_statistics-keys:设置要统计的Key,统计这些Key的来源IP地址和频率,默认为空,即不统计。多个Key以英文逗号(,)分隔。
说明
  • 为避免影响性能,#no_loose_statistics-cmds和#no_loose_statistics-keys参数中设置的值不宜设置过多,并确保仅在故障排查或运维需要时开启。
  • 从您可以通过日志服务控制台下载审计日志(下载方法参见开通新版审计日志),然后通过关键字过滤所需信息:
    • type值为7:表示IP地址的QPS统计信息。
    • type值为8:表示IP地址建连统计信息。
    • type值为9:表示Key统计信息。
    • type值为10:表示命令统计信息。

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

#no_loose_statistics-ip-enable

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

#no_loose_statistics-keys

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

#no_loose_tls-min-version设置实例支持的TLS最低版本,可选值:
  • TLSv1,默认值。
  • TLSv1.1。
  • TLSv1.2。

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

cluster_compat_enable开启或关闭原生Redis cluster语法兼容,可选值:
  • 0:关闭。
  • 1:默认值,开启。

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

max_session_processing

单个连接允许堆积的最大请求数。代理节点转发客户端的请求给数据节点,但是未收到数据节点的回复,此时该请求即处于堆积状态。该参数主要用于限制代理节点前后端处理能力差异导致的请求堆积,避免内存上涨的问题。

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

ptod_enabled是否将客户端的IP地址通过代理节点透传到数据节点,可选值:
  • 0:默认值,不透传客户端的IP地址。
  • 1:透传客户端IP地址。

说明 标准架构或集群架构直连模式均不涉及该参数。

标准❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

标准️️❌

集群✔️

读写分离✔️

readonly_lua_route_ronode_enable开启或关闭只读副本的Lua执行模式,可选值:
  • 0:默认值,关闭Lua执行模式,只读副本不支持Lua,Lua命令会由主节点处理。
  • 1:开启Lua执行模式,仅包含读操作的Lua会被转发到只读副本处理。

标准️️❌

集群❌️

读写分离✔️

标准️️❌

集群❌️

读写分离✔️

read_request_only_ronode_whenrwsplit_enable开启或关闭只读账号请求定向转发,可选值:
  • 0:默认值,关闭定向转发,只读账号的请求将按照权重分配到各节点,包括主节点。
  • 1:开启定向转发,只读账号的请求将定向转发到只读副本,不会转发到主节点。

标准️️❌

集群❌️

读写分离✔️

标准️️❌

集群❌️

读写分离✔️

标准️️❌

集群❌️

读写分离✔️

rt_threshold_ms代理服务器中的慢日志阈值,单位为毫秒(ms)。如果代理服务器处理一个请求的时间超过该阈值,则会生成一条慢日志。

说明 计时方式:从代理服务器向数据节点发出请求开始,到代理服务器收到响应结束。

标准️️❌

集群✔️️️️️

读写分离✔️

标准️️❌

集群✔️️️️️

读写分离✔️

标准️️❌

集群✔️️️️️

读写分离✔️

script_check_enable检查Lua脚本涉及的Key是否在相同slot(槽),可选值:
  • 0:不检查。
  • 1:默认值,检查。

标准️️❌

集群✔️️️️️

读写分离✔️

标准️️❌

集群✔️️️️️

读写分离✔️

标准️️❌

集群✔️️️️️

读写分离✔️

transfer_subscrible_to_psubscrible_enable开启或关闭SUBSCRIBE转PSUBSCRIBE功能,可选值:
  • 0:默认值,表示关闭该功能,二者不转换。
  • 1:开启该功能,代理节点会将SUBSCRIBE转换成PSUBSCRIBE处理。

    说明 当在Lua中使用了PUB或SUB类命令,导致在订阅的通道无法收到通知时,可以开启该功能。

标准️️❌

集群✔️️️️️

读写分离✔️

标准️️❌

集群✔️️️️️

读写分离✔️

appendonly开启或关闭主节点的AOF持久化功能,可选值:
  • yes:默认值,开启AOF持久化。
  • no:关闭AOF持久化。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

client-output-buffer-limit pubsub限制对发布订阅客户端的输出缓冲,参数值格式为<hard limit> <soft limit> <soft seconds>,默认值为33554432 8388608 60。
  • <hard limit>:当某客户端的输出缓冲区占用内存达到或超过hard limit的限制时,断开该客户端的连接。hard limit值的单位为Byte。
  • <soft limit><soft seconds>:当某客户端的输出缓冲区占用内存达到或超过soft limit的限制,且该状态持续时间大于等于soft seconds限定的秒数,断开该客户端的连接。soft limit值的单位为Byte,soft seconds值的单位为秒。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

dynamic-hz开启或关闭动态hz,可选值:
  • yes:默认值,开启。
  • no:关闭。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群❌️️️️

读写分离❌

hash-max-ziplist-entries哈希对象同时满足以下两个条件时, 使用ziplist编码。
  • 哈希对象保存的所有键值对的键和值的字符串长度的字节数都小于hash-max-ziplist-value的值。
  • 哈希对象保存的键值对数量小于hash-max-ziplist-entries的值。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

hash-max-ziplist-value哈希对象同时满足以下两个条件时, 使用ziplist编码。
  • 哈希对象保存的所有键值对的键和值的字符串长度的字节数都小于hash-max-ziplist-value的值。
  • 哈希对象保存的键值对数量小于hash-max-ziplist-entries的值。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

hz设置Redis后台任务执行频率,例如清除过期键任务。取值范围为1~500,默认值为10,即每秒执行10次。

说明 该值越大,CPU资源消耗越多,但在过期键较多的情况下清理频率也更高,同时Redis能够更精确地处理超时。建议取值不要超过100。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

lazyfree-lazy-eviction是否开启基于lazyfree的驱逐功能,可选值:
  • yes:开启。
  • no:默认值,不开启。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

lazyfree-lazy-expire是否开启基于lazyfree的过期Key删除功能,可选值:
  • yes:默认值,开启。
  • no:不开启。

标准️️✔️

集群❌

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

lazyfree-lazy-server-delDEL命令是否基于lazyfree异步删除数据,可选值:
  • yes:默认值,开启。
  • no:不开启。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

lazyfree-lazy-user-del执行DEL命令时是否基于lazyfree异步删除数据,可选值:
  • yes:默认值,开启。
  • no:不开启。

标准️️✔️

集群✔️️️️️

list-compress-depth列表中两端不被压缩的节点个数,取值范围0~65535。
  • 0:默认值,表示都不压缩。
  • 1~65535:表示list两端各有1~65535个节点不压缩,中间的节点压缩。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

list-max-ziplist-entries

链表对象同时满足以下两个条件时, 使用ziplist编码。

  • 链表对象保存的所有元素的字符串长度的字节数都小于list-max-ziplist-value的值。
  • 链表集合对象保存的元素数量小于list-max-ziplist-entries的值。

标准️️✔️

集群✔️️️️️

读写分离✔️

list-max-ziplist-value

链表对象同时满足以下两个条件时, 使用ziplist编码。

  • 链表对象保存的所有元素的字符串长度的字节数都小于list-max-ziplist-value的值。
  • 链表集合对象保存的元素数量小于list-max-ziplist-entries的值。

标准️️✔️

集群✔️️️️️

读写分离✔️

list-max-ziplist-size
  • 取正值表示按照数据项个数来限定每个quicklist节点上的ziplist长度。例如,当该参数配置为5时,每个quicklist节点的ziplist最多包含5个数据项。
  • 取负值表示按照占用字节数来限定每个quicklist节点上的ziplist长度,可选值:
    • -5:每个quicklist节点上的ziplist大小不能超过64 Kb。
    • -4:每个quicklist节点上的ziplist大小不能超过32 Kb。
    • -3:每个quicklist节点上的ziplist大小不能超过16 Kb。
    • -2:默认值,每个quicklist节点上的ziplist大小不能超过8 Kb。
    • -1:每个quicklist节点上的ziplist大小不能超过4 Kb。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

maxmemory-policy设置缓存满后Redis删除内容的策略,您可以在如下八种策略中进行选择。LRU表示最近最少使用的。LFU表示最不常用的。LRU,LFU和volatile-ttl都是使用近似随机算法实现的。
  • volatile-lru(默认):只从设置失效(expire set)的Key中选择最近最少使用的Key进行删除。
  • allkeys-lru:优先删除掉最近最少使用的Key。
  • volatile-lfu:只从设置失效(expire set)的Key中选择最不常用的Key进行删除。
  • allkeys-lfu:优先删除掉最不常用的Key。
  • volatile-random:只从设置失效(expire set)的Key中,随机选择一些Key进行删除。
  • allkeys-random:随机选择一些Key进行删除。
  • volatile-ttl:只从设置失效(expire set)的Key中,选出存活时间(TTL)最短的Key进行删除。
  • noeviction:不删除任何Key,只是在写操作时返回错误。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

notify-keyspace-eventsnotify-keyspace-events的参数值可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知。
  • K:键空间通知,所有通知以__keyspace@<db>__为前缀。
  • E:键事件通知,所有通知以__keyevent@<db>__为前缀。
  • g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。
  • $:字符串命令的通知。
  • l:列表命令的通知。
  • s:集合命令的通知。
  • h:哈希命令的通知。
  • z:有序集合命令的通知。
  • x:过期事件。每当有过期键被删除时发送。
  • e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。
  • A:参数g$lshzxe的别名。

说明 输入的参数中至少包含K或E, 否则不会有任何通知被分发。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

set-max-intset-entries当Set集合内的数据符合以下条件时,会使用intset编码。
  • 当集合内所有数据都是字符对象。
  • 都是基数为10的整数,范围为64位有符号整数。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

slowlog-log-slower-than

设置慢日志的记录阈值,即设置对执行时间大于多少微秒的操作进行记录。取值范围10000~10000000,默认值为20000。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

slowlog-max-len

慢日志最多保存记录条数,取值范围100~10000,默认值为1024。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

stream-node-max-bytesStream中每个宏节点(Macro Node)能够占用的最大内存,取值范围:0~999,999,999,999,999。

说明 0表示无限制。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群❌️️️️

读写分离❌

stream-node-max-entriesStream中每个宏节点中可存储条目的最大数量,取值范围:0~999,999,999,999,999。

说明 0表示无限制。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群❌️️️️

读写分离❌

timeout在客户端连接空闲时长达到指定值时关闭连接,取值范围:0~100,000,单位为秒。

说明 0表示不开启。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

zset-max-ziplist-entries排序集合对象同时满足以下两个条件时, 使用ziplist编码。
  • 排序集合对象保存的所有键值对的键和值的字符串长度的字节数都小于zset-max-ziplist-value的值。
  • 排序集合对象保存的键值对数量小于zset-max-ziplist-entries的值。

标准️️✔️

集群✔️️️️️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

标准️️✔️

集群✔️️️️️

读写分离✔️

Redis cluster specification | Redis 

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式