精华内容
下载资源
问答
  • Redis学习——redis.conf 配置文件介绍

    千次阅读 多人点赞 2017-06-18 12:32:09
    学以致用 学在用前 ...在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要额就是对redis.conf进行配置了,下面整理出redis.conf中常见的一些配置介绍。 参数说明 redis.conf 配置项说...

    学以致用 学在用前


    参看文章:
    redis.conf配置详细解析
    redis.conf 配置详解
    Redis配置文件详解(redis.conf)-云栖社区


    在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要额就是对redis.conf进行配置了,下面整理出redis.conf中常见的一些配置介绍。
    参数说明
    redis.conf 配置项说明如下:

    1: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
        daemonize no
    
    2: 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
        pidfile /var/run/redis.pid
    
    3: 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,
    因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字
      port 6379
    
    4: 绑定的主机地址
      bind 127.0.0.1
    
    5: 当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
      timeout 300
    
    6: 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,
    默认为verbose
      loglevel verbose
    
    7: 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志
    记录方式为标准输出,则日志将会发送给/dev/null
      logfile stdout
    
    8: 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
      databases 16
    
    9: 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
      save <seconds> <changes>
      Redis默认配置文件中提供了三个条件:
      save 900 1
      save 300 10
      save 60 10000
      分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
    
    10: 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
    可以关闭该选项,但会导致数据库文件变的巨大
      rdbcompression yes
    
    11: 指定本地数据库文件名,默认值为dump.rdb
      dbfilename dump.rdb
    
    12: 指定本地数据库存放目录
      dir ./
    
    13: 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
      slaveof <masterip> <masterport>
    
    14: 当master服务设置了密码保护时,slav服务连接master的密码
      masterauth <master-password>
    
    15: 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
      requirepass foobared
    
    16: 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,
    如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端
    返回max number of clients reached错误信息
      maxclients 128
    
    17: 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,
    当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,
    Value会存放在swap区
      maxmemory <bytes>
    
    18: 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。
    因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
      appendonly no
    
    19: 指定更新日志文件名,默认为appendonly.aof
       appendfilename appendonly.aof
    
    20: 指定更新日志条件,共有3个可选值: 
      no:表示等操作系统进行数据缓存同步到磁盘(快) 
      always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) 
      everysec:表示每秒同步一次(折衷,默认值)
      appendfsync everysec
    
    21: 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,
    访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)
       vm-enabled no
    
    22: 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
       vm-swap-file /tmp/redis.swap
    
    23: 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),
    也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
       vm-max-memory 0
    
    24: Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,
    vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;
    如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值
       vm-page-size 32
    
    25: 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。
       vm-pages 134217728
    
    26: 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,
    可能会造成比较长时间的延迟。默认值为4
       vm-max-threads 4
    
    27: 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
      glueoutputbuf yes
    
    28: 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
      hash-max-zipmap-entries 64
      hash-max-zipmap-value 512
    
    29: 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)
      activerehashing yes
    
    30: 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
      include /path/to/local.conf
    

    #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes
    
    daemonize yes
    
    #  当 redis 在后台运行的时候, Redis 默认会把 pid 文件放在 /var/run/redis.pid ,你可以配置到其他地址。
    
    #  当运行多个 redis 服务时,需要指定不同的 pid 文件和端口
    
    pidfile /var/run/redis_6379.pid
    
    #  指定 redis 运行的端口,默认是 6379
    
    port 6379
    
    #  在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志
    
    tcp-backlog 511
    
    #  指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
    
    # bind 192.168.1.100 10.0.0.1
    
    # bind 127.0.0.1
    
    #  设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
    
    # 0 是关闭此设置
    
    timeout 0
    
    # TCP keepalive
    
    #  在 Linux 上,指定值(秒)用于发送 ACKs 的时间。注意关闭连接需要双倍的时间。默认为 0 。
    
    tcp-keepalive 0
    
    #  指定日志记录级别,生产环境推荐 notice
    
    # Redis 总共支持四个级别: debug 、 verbose 、 notice 、 warning ,默认为 verbose
    
    # debug     记录很多信息,用于开发和测试
    
    # varbose   有用的信息,不像 debug 会记录那么多
    
    # notice    普通的 verbose ,常用于生产环境
    
    # warning   只有非常重要或者严重的信息会记录到日志
    
    loglevel notice
    
    #  配置 log 文件地址
    
    #  默认值为 stdout ,标准输出,若后台模式会输出到 /dev/null 。
    
    logfile /var/log/redis/redis.log
    
    #  可用数据库数
    
    #  默认值为 16 ,默认数据库为 0 ,数据库范围在 0- ( database-1 )之间
    
    databases 16
    
    ################################ 快照#################################
    
    #  保存数据到磁盘,格式如下 :
    
    #   save  
    
    #    指出在多长时间内,有多少次更新操作,就将数据同步到数据文件 rdb 。
    
    #    相当于条件触发抓取快照,这个可以多个条件配合
    
    #    比如默认配置文件中的设置,就设置了三个条件
    
    #   save 900 1  900 秒内至少有 1 个 key 被改变
    
    #   save 300 10  300 秒内至少有 300 个 key 被改变
    
    #   save 60 10000  60 秒内至少有 10000 个 key 被改变
    
    # save 900 1
    
    # save 300 10
    
    # save 60 10000
    
    #  后台存储错误停止写。
    
    stop-writes-on-bgsave-error yes
    
    #  存储至本地数据库时(持久化到 rdb 文件)是否压缩数据,默认为 yes
    
    rdbcompression yes
    
    # 对rdb数据进行校验,耗费CPU资源,默认为yes
    
    rdbchecksum yes
    
    #  本地持久化数据库文件名,默认值为 dump.rdb
    
    dbfilename dump.rdb
    
    #  工作目录
    
    #  数据库镜像备份的文件放置的路径。
    
    #  这里的路径跟文件名要分开配置是因为 redis 在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成,
    
    #  再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
    
    # AOF 文件也会存放在这个目录下面
    
    #  注意这里必须制定一个目录而不是文件
    
    dir /var/lib/redis-server/
    
    ################################# 复制 #################################
    
    #  主从复制 . 设置该数据库为其他数据库的从数据库 .
    
    #  设置当本机为 slav 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动从 master 进行数据同步
    
    # slaveof 
    
    #  当 master 服务设置了密码保护时 ( 用 requirepass 制定的密码 )
    
    # slave 服务连接 master 的密码
    
    # masterauth 
    
    #  当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
    
    # 1)  如果 slave-serve-stale-data 设置为 yes( 默认设置 ) ,从库会继续响应客户端的请求
    
    # 2)  如果 slave-serve-stale-data 是指为 no ,出去 INFO 和 SLAVOF 命令之外的任何请求都会返回一个
    
    #     错误 "SYNC with master in progress"
    
    slave-serve-stale-data yes
    
    #  配置 slave 实例是否接受写。写 slave 对存储短暂数据(在同 master 数据同步后可以很容易地被删除)是有用的,但未配置的情况下,客户端写可能会发送问题。
    
    #  从 Redis2.6 后,默认 slave 为 read-only
    
    slaveread-only yes
    
    #  从库会按照一个时间间隔向主库发送 PINGs. 可以通过 repl-ping-slave-period 设置这个时间间隔,默认是 10 秒
    
    # repl-ping-slave-period 10
    
    # repl-timeout  设置主库批量数据传输时间或者 ping 回复时间间隔,默认值是 60 秒
    
    #  一定要确保 repl-timeout 大于 repl-ping-slave-period
    
    # repl-timeout 60
    
    #  在 slave socket 的 SYNC 后禁用 TCP_NODELAY
    
    #  如果选择“ yes ” ,Redis 将使用一个较小的数字 TCP 数据包和更少的带宽将数据发送到 slave , 但是这可能导致数据发送到 slave 端会有延迟 , 如果是 Linux kernel 的默认配置,会达到 40 毫秒 .
    
    #  如果选择 "no" ,则发送数据到 slave 端的延迟会降低,但将使用更多的带宽用于复制 .
    
    repl-disable-tcp-nodelay no
    
    #  设置复制的后台日志大小。
    
    #  复制的后台日志越大, slave 断开连接及后来可能执行部分复制花的时间就越长。
    
    #  后台日志在至少有一个 slave 连接时,仅仅分配一次。
    
    # repl-backlog-size 1mb
    
    #  在 master 不再连接 slave 后,后台日志将被释放。下面的配置定义从最后一个 slave 断开连接后需要释放的时间(秒)。
    
    # 0 意味着从不释放后台日志
    
    # repl-backlog-ttl 3600
    
    #  如果 master 不能再正常工作,那么会在多个 slave 中,选择优先值最小的一个 slave 提升为 master ,优先值为 0 表示不能提升为 master 。
    
    slave-priority 100
    
    #  如果少于 N 个 slave 连接,且延迟时间 <=M 秒,则 master 可配置停止接受写操作。
    
    #  例如需要至少 3 个 slave 连接,且延迟 <=10 秒的配置:
    
    # min-slaves-to-write 3
    
    # min-slaves-max-lag 10
    
    #  设置 0 为禁用
    
    #   默认 min-slaves-to-write 为 0 (禁用), min-slaves-max-lag 为 10
    
    ################################## 安全 ###################################
    
    #  设置客户端连接后进行任何其他指定前需要使用的密码。
    
    #  警告:因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行 150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
    
    # requirepass foobared
    
    #  命令重命名 .
    
    #  在一个共享环境下可以重命名相对危险的命令。比如把 CONFIG 重名为一个不容易猜测的字符。
    
    #  举例 :
    
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    
    #  如果想删除一个命令,直接把它重命名为一个空字符 "" 即可,如下:
    
    # rename-command CONFIG ""
    
    ################################### 约束###################################
    
    #设置同一时间最大客户端连接数,默认无限制, 
    
    #Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,
    
    #如果设置  maxclients 0 ,表示不作限制。
    
    #当客户端连接数到达限制时, Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
    
    # maxclients 10000
    
    #  指定 Redis 最大内存限制, Redis 在启动时会把数据加载到内存中,达到最大内存后, Redis 会按照清除策略尝试清除已到期的 Key
    
    #  如果 Redis 依照策略清除后无法提供足够空间,或者策略设置为 ”noeviction” ,则使用更多空间的命令将会报错,例如 SET, LPUSH 等。但仍然可以进行读取操作
    
    #  注意: Redis 新的 vm 机制,会把 Key 存放内存, Value 会存放在 swap 区
    
    #  该选项对 LRU 策略很有用。
    
    # maxmemory 的设置比较适合于把 redis 当作于类似 memcached 的缓存来使用,而不适合当做一个真实的 DB 。
    
    #  当把 Redis 当做一个真实的数据库使用的时候,内存使用将是一个很大的开销
    
    # maxmemory 
    
    #  当内存达到最大值的时候 Redis 会选择删除哪些数据?有五种方式可供选择
    
    # volatile-lru ->  利用 LRU 算法移除设置过过期时间的 key (LRU: 最近使用  Least RecentlyUsed )
    
    # allkeys-lru ->  利用 LRU 算法移除任何 key
    
    # volatile-random ->  移除设置过过期时间的随机 key
    
    # allkeys->random -> remove a randomkey, any key
    
    # volatile-ttl ->  移除即将过期的 key(minor TTL)
    
    # noeviction ->  不移除任何可以,只是返回一个写错误
    
    #  注意:对于上面的策略,如果没有合适的 key 可以移除,当写的时候 Redis 会返回一个错误
    
    #  默认是 :  volatile-lru
    
    # maxmemory-policy volatile-lru  
    
    # LRU  和  minimal TTL 算法都不是精准的算法,但是相对精确的算法 ( 为了节省内存 ) ,随意你可以选择样本大小进行检测。
    
    # Redis 默认的灰选择 3 个样本进行检测,你可以通过 maxmemory-samples 进行设置
    
    # maxmemory-samples 3
    
    ############################## AOF###############################
    
    #  默认情况下, redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
    
    #  所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。
    
    #  开启 append only 模式之后, redis 会把所接收到的每一次写操作请求都追加到 appendonly.aof 文件中,当 redis 重新启动时,会从该文件恢复出之前的状态。
    
    #  但是这样会造成 appendonly.aof 文件过大,所以 redis 还支持了 BGREWRITEAOF 指令,对 appendonly.aof 进行重新整理。
    
    #  你可以同时开启 asynchronous dumps 和  AOF
    
    appendonly no
    
    # AOF 文件名称  ( 默认 : "appendonly.aof")
    
    # appendfilename appendonly.aof
    
    # Redis 支持三种同步 AOF 文件的策略 :
    
    # no:  不进行同步,系统去操作  . Faster.
    
    # always: always 表示每次有写操作都进行同步 . Slow, Safest.
    
    # everysec:  表示对写操作进行累积,每秒同步一次 . Compromise.
    
    #  默认是 "everysec" ,按照速度和安全折中这是最好的。
    
    #  如果想让 Redis 能更高效的运行,你也可以设置为 "no" ,让操作系统决定什么时候去执行
    
    #  或者相反想让数据更安全你也可以设置为 "always"
    
    #  如果不确定就用  "everysec".
    
    # appendfsync always
    
    appendfsync everysec
    
    # appendfsync no
    
    # AOF 策略设置为 always 或者 everysec 时,后台处理进程 ( 后台保存或者 AOF 日志重写 ) 会执行大量的 I/O 操作
    
    #  在某些 Linux 配置中会阻止过长的 fsync() 请求。注意现在没有任何修复,即使 fsync 在另外一个线程进行处理
    
    #  为了减缓这个问题,可以设置下面这个参数 no-appendfsync-on-rewrite
    
    no-appendfsync-on-rewrite no
    
    # AOF  自动重写
    
    #  当 AOF 文件增长到一定大小的时候 Redis 能够调用  BGREWRITEAOF  对日志文件进行重写
    
    #  它是这样工作的: Redis 会记住上次进行些日志后文件的大小 ( 如果从开机以来还没进行过重写,那日子大小在开机的时候确定 )
    
    #  基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动
    
    #  同时需要指定一个最小大小用于 AOF 重写,这个用于阻止即使文件很小但是增长幅度很大也去重写 AOF 文件的情况
    
    #  设置  percentage 为 0 就关闭这个特性
    
    auto-aof-rewrite-percentage 100
    
    auto-aof-rewrite-min-size 64mb
    
    ################################ LUASCRIPTING #############################
    
    # 一个 Lua 脚本最长的执行时间为 5000 毫秒( 5 秒),如果为 0 或负数表示无限执行时间。
    
    lua-time-limit 5000
    
    ################################LOW LOG################################
    
    # Redis Slow Log  记录超过特定执行时间的命令。执行时间不包括 I/O 计算比如连接客户端,返回结果等,只是命令执行时间
    
    #  可以通过两个参数设置 slow log :一个是告诉 Redis 执行超过多少时间被记录的参数 slowlog-log-slower-than( 微妙 ) ,
    
    #  另一个是 slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除
    
    #  下面的时间以微妙为单位,因此 1000000 代表一秒。
    
    #  注意指定一个负数将关闭慢日志,而设置为 0 将强制每个命令都会记录
    
    slowlog-log-slower-than 10000
    
    #  对日志长度没有限制,只是要注意它会消耗内存
    
    #  可以通过  SLOWLOG RESET 回收被慢日志消耗的内存
    
    #  推荐使用默认值 128 ,当慢日志超过 128 时,最先进入队列的记录会被踢出
    
    slowlog-max-len 128
    
    ################################  事件通知  #############################
    
    #  当事件发生时, Redis 可以通知 Pub/Sub 客户端。
    
    #  可以在下表中选择 Redis 要通知的事件类型。事件类型由单个字符来标识:
    
    # K     Keyspace 事件,以 _keyspace@_ 的前缀方式发布
    
    # E     Keyevent 事件,以 _keysevent@_ 的前缀方式发布
    
    # g     通用事件(不指定类型),像 DEL, EXPIRE, RENAME, …
    
    # $     String 命令
    
    # s     Set 命令
    
    # h     Hash 命令
    
    # z     有序集合命令
    
    # x     过期事件(每次 key 过期时生成)
    
    # e     清除事件(当 key 在内存被清除时生成)
    
    # A     g$lshzxe 的别称,因此 ”AKE” 意味着所有的事件
    
    # notify-keyspace-events 带一个由 0 到多个字符组成的字符串参数。空字符串意思是通知被禁用。
    
    #  例子:启用 list 和通用事件:
    
    # notify-keyspace-events Elg
    
    #  默认所用的通知被禁用,因为用户通常不需要改特性,并且该特性会有性能损耗。
    
    #  注意如果你不指定至少 K 或 E 之一,不会发送任何事件。
    
    notify-keyspace-events “”
    
    ##############################  高级配置  ###############################
    
    #  当 hash 中包含超过指定元素个数并且最大的元素没有超过临界时,
    
    # hash 将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值
    
    # Redis Hash 对应 Value 内部实际就是一个 HashMap ,实际这里会有 2 种不同实现,
    
    #  这个 Hash 的成员比较少时 Redis 为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的 HashMap 结构,对应的 valueredisObject 的 encoding 为 zipmap,
    
    #  当成员数量增大时会自动转成真正的 HashMap, 此时 encoding 为 ht 。
    
    hash-max-zipmap-entries 512
    
    hash-max-zipmap-value 64  
    
    #  和 Hash 一样,多个小的 list 以特定的方式编码来节省空间。
    
    # list 数据类型节点值大小小于多少字节会采用紧凑存储格式。
    
    list-max-ziplist-entries 512
    
    list-max-ziplist-value 64
    
    # set 数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。
    
    set-max-intset-entries 512
    
    #  和 hashe 和 list 一样 , 排序的 set 在指定的长度内以指定编码方式存储以节省空间
    
    # zsort 数据类型节点值大小小于多少字节会采用紧凑存储格式。
    
    zset-max-ziplist-entries 128
    
    zset-max-ziplist-value 64
    
    # Redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash ,可以降低内存的使用
    
    #  当你的使用场景中,有非常严格的实时性需要,不能够接受 Redis 时不时的对请求有 2 毫秒的延迟的话,把这项配置为 no 。
    
    #  如果没有这么严格的实时性要求,可以设置为 yes ,以便能够尽可能快的释放内存
    
    activerehashing yes
    
    # 客户端的输出缓冲区的限制,因为某种原因客户端从服务器读取数据的速度不够快,
    
    # 可用于强制断开连接(一个常见的原因是一个发布 / 订阅客户端消费消息的速度无法赶上生产它们的速度)。
    
    #  可以三种不同客户端的方式进行设置:
    
    # normal ->  正常客户端
    
    # slave  -> slave 和 MONITOR 客户端
    
    # pubsub ->  至少订阅了一个 pubsub channel 或 pattern 的客户端
    
    #  每个 client-output-buffer-limit 语法 :
    
    # client-output-buffer-limit   
    
    #  一旦达到硬限制客户端会立即断开,或者达到软限制并保持达成的指定秒数(连续)。
    
    #  例如,如果硬限制为 32 兆字节和软限制为 16 兆字节 /10 秒,客户端将会立即断开
    
    #  如果输出缓冲区的大小达到 32 兆字节,客户端达到 16 兆字节和连续超过了限制 10 秒,也将断开连接。
    
    #  默认 normal 客户端不做限制,因为他们在一个请求后未要求时(以推的方式)不接收数据,
    
    #  只有异步客户端可能会出现请求数据的速度比它可以读取的速度快的场景。
    
    #  把硬限制和软限制都设置为 0 来禁用该特性
    
    client-output-buffer-limit normal 0 0 0
    
    client-output-buffer-limit slave 256mb 64mb60
    
    client-output-buffer-limit pubsub 32mb 8mb60
    
    # Redis 调用内部函数来执行许多后台任务,如关闭客户端超时的连接,清除过期的 Key ,等等。
    
    #  不是所有的任务都以相同的频率执行,但 Redis 依照指定的“ Hz ”值来执行检查任务。
    
    #  默认情况下,“ Hz ”的被设定为 10 。
    
    #  提高该值将在 Redis 空闲时使用更多的 CPU 时,但同时当有多个 key 同时到期会使 Redis 的反应更灵敏,以及超时可以更精确地处理。
    
    #  范围是 1 到 500 之间,但是值超过 100 通常不是一个好主意。
    
    #  大多数用户应该使用 10 这个预设值,只有在非常低的延迟的情况下有必要提高最大到 100 。
    
    hz 10  
    
    #  当一个子节点重写 AOF 文件时,如果启用下面的选项,则文件每生成 32M 数据进行同步。
    
    aof-rewrite-incremental-fsync yes
    
    

    redis常用命令.常见错误.配置技巧等分享


    欢迎访问我的csdn博客,我们一同成长!

    不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

    博客首页:http://blog.csdn.net/u010648555

    展开全文
  • Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid expire time in SETEX   解决方法: http://www.yayihouse.com/yayishuwu/chapter/1466  

    Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR invalid expire time in SETEX

     

    解决方法:

    http://www.yayihouse.com/yayishuwu/chapter/1466

     

    展开全文
  • 关于redis.Hash如何设置过期时间,时间不过期

    万次阅读 热门讨论 2018-11-02 17:37:22
    我们平时设置过期时间用的expire方法设置的是hashkey的过期时间,为什么要用redis,因为数据读取快,试想一下如果就只是单纯的几百条数据,几条查询的话就不会用到redis了,要做大数量的数据存储读取,...

    关于redis.opsForHash结构时间不过期,如何设置过期时间
    首先看opsForHash中的put方法
    Redis.opsForHash.put(key,hashkey,value);
    我们平时设置过期时间用的expire方法设置的是hashkey的过期时间,为什么要用redis,因为数据读取快,试想一下如果就只是单纯的几百条数据,几条查询的话就不会用到redis了,要做大数量的数据存储读取,每操作一条hashkey就会刷新key的过期时间,所以key相当于不会过期。
    下面来说下我是怎么解决的
    补充:hash不可以设置hashkey的过期时间,会被覆盖,装redis的时候使用key value ,value是map(key,map)格式即可。
    Redis.opsForValue.set方法就可以完美替代opsForHash.put了。过期时间设置opsForHash.set(key,value,时间,TimeUnit.SECONDS)就可以了,取的方法跟不变
    废话不多说上代码看效果:
    public void test(String str) {
    String key = “Redis16_test”;
    String hashkey = “” + str;
    Map<String,String> map = new HashMap<String,String>();
    map.put(“nihao”, “nihao”);
    map.put(“wohao”, “wohao”);
    map.put(“dajiahao”, “dajiahao”);
    map.put(“caishi”, “caishi”);
    map.put(“zhengdehao”, “zhengdehao”);
    map.put(“formwozuiyangqi”, “formwozuiyangqi”);
    System.out.println(map);
    redis16.opsForHash().put(key, hashkey, map);
    redis16.expire(key, 100000, TimeUnit.SECONDS);
    }
    public void testNew(String str) {
    String key = “Redis16_test”;
    Map<String,String> map = new HashMap<String,String>();
    map.put(“nihao”, “nihao”);
    map.put(“wohao”, “wohao”);
    map.put(“dajiahao”, “dajiahao”);
    map.put(“caishi”, “caishi”);
    map.put(“zhengdehao”, “zhengdehao”);
    map.put(“formwozuiyangqi”, “formwozuiyangqi”);
    redis16.opsForValue().set(key, map.toString());
    redis16.opsForValue().set(key,map.toString(),10l,TimeUnit.SECONDS);
    }
    public static void main(String[] args) {
    Test test = new Test();
    test.test(“wozuiyangqi”);
    test.testNew(“wozuiyangqi”);
    }
    运行结果相同

    展开全文
  • redis之详解redis.conf配置文件

    千次阅读 2019-05-19 20:37:40
    最近在实践redis集群与redis数据备份的操作,下面来分享下redis.conf配置文件内各个项 1)daemonize:默认情况下,redis不是在后台运行的,若需在后台运行,则需把该项值改为yes。 2)pidfile:当redis在后台运行的...

    最近在实践redis集群与redis数据备份的操作,下面来分享下redis.conf配置文件内各个项

    1)daemonize:默认情况下,redis不是在后台运行的,若需在后台运行,则需把该项值改为yes。

    2)pidfile:当redis在后台运行的时候,redis会默认把pid文件放在/var/run/redis.pid下,也可以配置到其它地址。当运行多个redis服务器时,需要指定不同的pid文件和端口。

    3)bind:指定redis只能接收来自于该IP地址的请求,如果不进行设置,那么将处理所有的请求。

    4)port:监听端口,默认为6379。

    5)timeout:设置客户端连接时的超时时间,单位为秒。当客户端在某段时间内没有发出任何指令,则关闭该连接。

    6)loglevel:log等级分为4级,debug,verbose,notice和warning。

    7)logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的窗口上。

    8)databases:设置数据库个数,可以SELECT命令切换数据库。默认使用的数据库是0。

    9)save:设置redis进行数据库镜像的频率。

    10)rdbcompression:在进行镜像备份时,是否进行压缩。

    11)dbfilename:镜像备份文件的文件名。

    12)dir:数据库镜像备份的文件放置的路径。这里的路径跟文件名分开配置时因为redis在进行备份时,会先将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该临时文件替换为上面指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。

    13)slaveof:设置该数据库为其它数据库的从数据库。

    14)masterauth:当主数据库连接需要密码验证时,在这里配置。

    15)requirepass:设置客户端连接后进行任何操作其他指定指令前需要使用的密码。

    16)maxclients:限制同时连接的客户端数量。当连接数超过这个值时,redis将不会再接收其他连接请求,客户端尝试连接时将接收到error信息。

    17)maxmemory:设置redis能够使用的最大内存。当内存满了的时候,如果还接收到set命令,redis将先尝试剔除设置过expire信息的key,而不管该key的过期时间是否已到达。在删除时,将按照过期时间进行删除,最早将要过期的key将最先被删除。如果带有expire信息的key都删光了,那么将返回错误。这样redis将不再接收写请求,只接收get请求。maxmemory的设置比较适合于把redis当作类似mmemcached的缓存来使用。

    18)appendonly:默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份时非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电/断电等情况,那么将造成比较大范围的数据丢失。所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复之前的状态。但是这样会造成appendonly.aof文件过大,所以redis还支持BGREWRITEAOF指令,对appendonly.aof进行重写整理。

    19)appendfsync:设置对appendonly.aof文件进行同步的频率。always标识每次有写操作都进行同步。everysec表示对写操作进行积累,每秒同步一次。

    20)vm-enabled:是否开启虚拟内存支持。因为redis时一个内存数据库,而且当内存满的时候,无法接收新的写请求,所以在redis中,提供了虚拟内存的支持,但是需要注意的是,redis中,所有的key都会放在内存中,在内存不够时,只会把value值放入交换区。这样保证了虽然使用虚拟内存,但性能基本不受影响,同时,你需要注意的是要把vm-max-memory设置到足够方下所有的key。

    21)vm-max-memory:这里设置开启虚拟内存之后,redis将使用最大的物理内存的大小。默认为0,redis将把他所有的能放到交换文件的都放到交互文件中,以尽量少的使用物理内存。

    22)vm-swap-file:设置虚拟内存的交互文件路径。

    23)vm-page-size:设置虚拟内存页的大小。

    24)vm-pages:设置交换文件的总的page数量。需要注意的是,page table信息会放在物理内存中,每8个page就会占据RAM中的1个byte。总的虚拟内存大小=vm-page-size * vm-pages。

    25)vm-max-threads:设置VM IO同时使用的线程数量。因为在进行内存交互时,对数据有编码和解码的过程,所以尽管IO设备在硬件上不能支持很多并发读写,但如果保存的value值比较大时,将该值设置的大一些,还是能够提升性能的。

    26)glueoutputbug:把小的输出缓存放在一起,以便能够在一个TCP packet中为客户端发送多个响应。

    27)hash-max-zipmap-entries:在redis中引入了hash数据结构。当hash中包含超过指定元素个数并且最大的元素没有超过临界值时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值。

    28)activerehashing:在开启之后redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重写hash,可以降低内存的使用。若无法接受redis时不时的对请求有2毫秒的延迟,则这项可设置为no,否则,则可设置为yes。

    展开全文
  • 分布式缓存Redis之配置文件redis.config

    千次阅读 2018-05-01 19:20:33
    使用配置文件启动服务器:src/redis-server redis.conf主要配置项:Redis支持很多的参数,但都有默认值General1:daemonize 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes。...
  • redis.conf:配置详细说明

    千次阅读 2018-12-13 10:39:04
    ​​​​​​redis.conf Redis 支持很多的参数,但都有默认值。 daemonize: 默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为yes pidfile 当Redis 在后台运行的时候,Redis...
  • Redis启动的时候,可以指定配置文件,如下: /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf & Redis.conf文件内容详细说明: # 默认redis不是以后台进...
  • # this limit is set to 10000 clients, however if the Redis server is not # able to configure the process file limit to allow for the specified limit # the max number of allowed clients is set to the ...
  • org.springframework.web.util.NestedServletException:Handler processing ... nested exception is java.lang.NoSuchMethodError: redis.clients.jedis.Jedis.lpush(Ljava/lang/String;Ljava/lang/String;)Lja...
  • Redis3.2.1配置文件redis.conf详解

    千次阅读 2016-07-29 16:39:14
    以目前redis的最新版本为例,具体的安装过程见: http://blog.csdn.net/zhangjin530/article/details/52062394 Redis在服务启动的时候选择加载配置文件,例如: ./redis-server /path/redis.conf 1、...
  • # redis启动命令 # ./redis-server /path/to/redis.conf # redis的单位对应的字节数,单位不区分大小写 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => ...
  • redis配置文件redis.conf

    千次阅读 2012-03-27 16:15:08
    # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. #Redis默认不是以守护进程的方式运行,可以通过该...
  • nested exception is redis.clients.jedis.exceptions.JedisConnectionException:
  • 最近在研发一款O2O产品,考虑到分布式架构的需要,以前那一套.NET的Session管理方式...遂研究了一下Redis,发现基于这种Key-Value的内存数据库很适合来做分布式Session。本示例将基于StackExchange.Redis.dll进行实现。
  • Redis配置文件redis.conf 详解--aof&rdb

    千次阅读 2016-06-08 09:48:59
    Redis配置文件redis.conf 详解 1.基本配置 内存单位的表示 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*...
  • Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'redis.maxIdle' in string value "${redis.maxIdle}" 解决办法: 知道了怎么配置,就知道自己有没有配置错误,如果配置没有问题,...
  • redis配置文件redis.conf的详细说明

    万次阅读 2012-06-19 14:00:03
    # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. #Redis默认不是以守护进程的方式运行,可以通过...
  • 1.Redis备份(持久化)  在 Redis 中存在两种方式的备份: 一种是快照(snapshotting),它是备份当前瞬间 Redis 在内存中的数据记录;另一种是只追加文件(Append-OnlyFile, AOF), 其作用就是当 Redis 执行写命令后,在...
  • Redis:默认配置文件redis.conf详解

    万次阅读 2019-05-18 10:07:54
    # Redis配置文件样例 # Note on units: when memory size is needed, it is possible to specifiy # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m =>...
  • shiro和redis集成的shiro-redis是单个的redis,根据项目需要,把shiro-redis单个的redis改为集群模式,首先自己新建一个项目:或者打开shiro-redis项目的源码:原作者下载链接:...此处是自己当时派生过来的仓库地址:...
  • &lt;?php namespace Cache; /** * Redis 缓存类 * @package Cache */ class Redis { private $expire; private $cache; // 构造方法 public function __construct($expire) { ...expire = $...
  • Redis默认配置文件redis.conf详解

    万次阅读 2016-05-10 12:21:18
    # Redis配置文件样例 # Note on units: when memory size is needed, it is possible to specifiy # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 ...
  • 用了很久redis了,觉得自己对redis应该算是比较了解了吧。谁知前段时间遇到redis的一个问题,困扰了我几个月一直没有解决: 奇怪的是这个错误并不是一开始就出现的,而是运行上一段时间后才会出现。重启Tomcat后...
  • redis配置文件redis.conf详细说明

    万次阅读 2016-08-03 11:29:33
    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 ...
  • 应用对比,MySQL与Redismysql适用于高度事务性的系统。例如银行或者会计系统,传统的关系型数据库目前还是更实用于需要大量原子性复杂事务的应用程序传统的商业智能应用,针对特定问题的BI数据库会对产生高度优化的...
  • redis存储tomcat session异常, NOAUTH Authentication required
  • 第一次访问接口时通过void setEntryInHash(String key,String field,String vlaue)方法在redis中存放用户访问当前接口的次数为1,此时不会抛出异常,通过redis命令查看存放的数据为 field为:...
  • Redis的配置项看起来比较复杂,分析之下,其实可以分为几大类(以redis v2.6.14版本的redis.conf为例):  1) 基本配置项  2) 持久化(Persistence)相关配置  3) Replication配置  4) Security配置  5) ...
  • redis.conf 配置详解

    万次阅读 2013-07-03 23:15:24
    # Redis 配置文件# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => ...
  • Redis.conf配置详解【超详细】

    千次阅读 2017-11-29 11:08:11
    [root@web01 blog]# egrep -v"#|^$" /application/redis/conf/6379.conf bind127.0.0.1 #绑定的主机地址,不设置默认将处理所有请求 protected-modeyes # 3.2里的参数,是否开启保护模式,默认开启。要是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,299
精华内容 24,919
关键字:

redis.expire

redis 订阅