从配置文件谈Redis以及redis的优化(一)

本次redis版本 4.0

redis的优化

通常对一个中间件优化的策略是对中间件外部环境和内部参数进行优化。外部环境优化一般为服务器优化涉及IO,内存等系统级的参数。内部参数一般用于定义一些算法的阈值。相对于外部参数而言。内部参数是考虑优化的第一步。

redis的参数

参数来自于aliyun 4.0版本配置文件配置

参数名称 参数解释 默认值
appendonly 开启 aof 持久化模式 yes
zset-max-ziplist-value 类似于哈希(Hash)和列表(List)类型的数据,有序集合(Sorted Sets)也采用特殊的编码,以优化内存空间。 128
zset-max-ziplist-entries 类似于哈希(Hash)和列表(List)类型的数据,有序集合(Sorted Sets)也采用特殊的编码,以优化内存空间。 64
client-output-buffer-limit 发布订阅客户端写缓冲区,如果实例大版本是4.0及以上的用户可以指定单位设置,例如,32mb 8mb 60;实例大版本是2.8的,则无法指定单位,必须用全数字进行设置,单位为字节,例如33554432 8388608 60。 33554432 8388608 60
hash-max-ziplist-entries 如果哈希(Hash)字段数量少于该参数值,Hash 字段长度小于 hash-max-ziplist-value 参数的值,则采用压缩列表(ziplist)数据结构。 512
hash-max-ziplist-value 如果哈希(Hash)字段数量少于 hash-max-ziplist-entries 参数的值,Hash 字段长度小于该参数值,则采用压缩列表(ziplist)数据结构。 64
hz 设置 Redis 后台任务执行频率,比如清除过期键任务,设置范围为1到500,默认为10。数值越大 CPU 消耗越大,延迟越小,建议不要超过100。 10
lazyfree-lazy-eviction 驱逐数据时,是否启用 Lazyfree。 no
lazyfree-lazy-expire 淘汰数据时,是否启用 Lazyfree。 yes
lazyfree-lazy-server-del 隐式删除服务器数据时,是否启用 Lazyfree。 yes
list-compress-depth 列表两端未压缩的数据条数 0
timeout 客户端空闲时间达到该设置值后,关闭客户端的连接。参数值 0 表示关闭该功能。 0
list-max-ziplist-value 快速列表(quicklist)中压缩列表(ziplist)的最大长度。 -2
maxmemory-policy 设置当占用内存达到最大内存大小(maxmemory)参数设置值时采用的数据驱逐策略。下列策略可供选择:volatile-lru、allkeys-lru、volatile-lfu、allkeys-lfu、volatile-random、allkeys-random、volatile-ttl、noeviction。 volatile-lru
notify-keyspace-events 键空间通知功能
set-max-intset-entries 设置适合采用 intset 编码时最大数据条数。当集合仅包含64位带符号整数或以10为基数的整数,且数据条数不大于该参数值时,则采用 intset 编码,以优化内存存储。 512
slowlog-log-slower-than 单位:微秒。参数值1000000表示1秒。注意,只有超过参数值的命令操作会被记录慢日志。 20000 (20ms)
slowlog-max-len 最大慢查询日志的条数。 1024

当然更多参数参考源码:src/config.c

appendonly

Redis 持久化方式分为两种,Rdb和aof持久化,这是大多数中间件内存持久化或者备份间同步的主要方式。

aof 即 记录增删改的log,来保留日志的持久化。

相关源代码:src/aof.c

相关大致调用路径: processCommand(server.c) -> call(server.c)-> propagate(server.c)->

feedAppendOnlyFile(aof.c)

serverCron(server.c)

appendonly

是否打开,为true代表开启aof

  config_set_special_field("appendonly") {
   
        int enable = yesnotoi(o->ptr);

        if (enable == -1) goto badfmt;
        if (enable == 0 && server.aof_state != AOF_OFF) {
   
            stopAppendOnly();
        } else if (enable && server.aof_state == AOF_OFF) {
   
            if (startAppendOnly() == C_ERR) {
   
                addReplyError(c,
                    "Unable to turn on AOF. Check server logs.");
                return;
            }
        }
    }


/* Called when the user switches from "appendonly no" to "appendonly yes"
 * at runtime using the CONFIG command. */
int startAppendOnly(void) {
   
    char cwd[MAXPATHLEN]; /* Current working dir path for error messages. */
    int newfd;

    newfd = open(server.aof_filename,O_WRONLY|O_APPEND|O_CREAT,0644);
    serverAssert(server.aof_state == AOF_OFF);
    if (newfd == -1) {
   
        char *cwdp = getcwd(cwd,MAXPATHLEN);

        serverLog(LL_WARNING,
            "Redis needs to enable the AOF but can't open the "
            "append only file %s (in server root dir %s): %s",
            server.aof_filename,
            cwdp ? cwdp : "unknown",
            strerror(errno));
        return C_ERR;
    }
    if 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值