一、redis.conf 配置文件

1.daemonize no

默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes;

2. pidfile /var/run/redis.pid

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

3. port 6379

指定redis运行的端口

4. timeout 0

设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么server端关闭该连接。0为关闭该设置。

5. loglevel notice

server日志级别,合法值:debug,verbose,notice,warning 默认为notice

debug适合开发环境,客户端操作信息都会输出日志

verbose输出一些相对有用的信息,目前效果不明

notice适合生产环境

warning异常信息

6.logfile

指定Redis日志记录方式,默认值为stdout,表示打印在命令行终端的窗口上,也可设为/dev/null屏蔽日志

7. maxclients 128

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

8. maxmemory <bytes>

设置redis能够使用的最大内存。达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key(设置过expire信息的key)在删除时,按照过期时间进行删除,最早将要被过期的key将最先被删除如果已到期或即将到期的key删光,仍进行set操作,那么将返回错误此时redis将不再接收写请求,只接收get请求。maxmemory的设置比较适合于把redis当作于类似memcached 的缓存来使用

9. maxmemory-policy

当内存达到最大值的时候Redis会选择删除哪些数据?有五种方式可供选择

volatile-lru -> 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )

# allkeys-lru -> 利用LRU算法移除任何key

# volatile-random -> 移除设置过过期时间的随机key

# allkeys->random -> remove a random key, any key

# volatile-ttl -> 移除即将过期的key(minor TTL)

# noeviction -> 不移除任何可以,只是返回一个写错误

注意:对于上面的策略,如果没有合适的key可以移除,当写的时候Redis会返回一个错误

写命令包括: set setnx setex append

# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd

# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby

# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby

# getset mset msetnx exec sort

默认是:

# maxmemory-policy volatile-lru


10. syslog-enabled no

'syslog-enabled'设置为yes会把日志输出到系统日志,默认是no

11. syslog-facility local0

指定syslog 设备(facility), 必须是USER或者LOCAL0到LOCAL7


二、SLOWLOG (日志)

1. slowlog-log-slower-than 10000

Redis slow log用来记录超过指定执行时间的查询。执行时间不包括I/O计算比如连接客户端,返回结果等,只是命令执时间可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(毫秒),另一个是slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除负数则关闭slow log,0则会导致每个命令都被记录

2. slowlog-max-len

对日志长度没有限制,只是要注意它会消耗内存可以通过 SLOWLOG RESET 回收被慢日志消耗的内存


三、高级配置

1. hash-max-zipmap-entries 512

hash-max-zipmap-value 64

redis 2.0后引入了 hash 数据结构。

当hash中包含超过指定元素个数并且最大的元素没有超过临界时,

# hash将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值

# Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,

# 这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结,对应的value redisObject的encoding为zipmap,

# 当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

2. activerehashing yes

是否重置Hash表设置成yes后redis将每100毫秒使用1毫秒CPU时间来对redis的hash表重新hash,可降低内存的使用,当使用场景有较为严格的实时性需求,不能接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为 yes,以便能够尽可能快的释放内存

3. list-max-ziplist-entries 512

list-max-ziplist-value 64

list 数据类型多少节点以下会采用去指针的紧凑存储格式。

list 数据类型节点值大小小于多少字节会采用紧凑存储格式。

4. set-max-intset-entries 512

set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。

5. zset-max-ziplist-entries 128

zset-max-ziplist-value 64

zsort 数据类型多少节点以下会采用去指针的紧凑存储格式。

zsort 数据类型节点值大小小于多少字节会采用紧凑存储格式。


四、Replication(复制)

1. slaveof

将当前server做为slave,并为其指定master信息.

slaveof <masterip> <masterport> 当本机为从服务时,设置主服务的IP及端口

# slaveof <masterip> <masterport>

slaveof 192.168.210.85  6379

2. masterauth

以认证的方式连接到master。如果master中使用了”密码保护”,slave必须交付正确的授权密码,才能连接成功。

“requirepass”配置项指定了当前server的密码。

此配置项中值需要和master机器的”requirepass”保持一致

 masterauth tinywanredis

redis在真实环境中不可以谁想访问就访问,所以,必须要设置密码,修改redis.conf文件配置 

# requirepass foobared去掉注释,foobared改为自己的密码。

3. slave-serve-stale-data yes

如果当前server是slave,那么当slave与master失去通讯时,是否继续为客户端提供服务,”yes”表示继续,”no”表示终止.

在”yes”情况下,slave继续向客户端提供只读服务,有可能此时的数据已经过期.

在”no”情况下,任何向此server发送的数据请求服务(包括客户端和此server的slave)都将被告知”error”,但 INFO 和SLAVEOF

命令除外。

# When a slave loses its connection with the master, or when the replication

# is still in progress, the slave can act in two different ways:slave-serve-stale-data yes


五、redis数据存储

redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

save seconds updates,save配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。可多个条件配合,默认配置了三个条件。

appendonly yes/no ,appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

appendfsync no/always/everysec ,appendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。


©著作权归作者所有:来自51CTO博客作者mob604756e834f7的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 11:VMware Horizon View 8.0-部署配置UAG网关
  2. Linux系统安装
  3. Spring Boot利用Logback输出日志到指定位置的简单配置及使用方式
  4. Centos7 下安装NFS+Heartbeat+DRBD
  5. 掌握这8个Java实战小技巧,再也不用为了内存泄漏而烦恼了!
  6. Tomcat性能调优及JVM内存工作原理
  7. Java堆内存又溢出了!教你一招必杀技
  8. Linux运维教程-Linux系统远程配置
  9. linux 安装node 环境并配置http-server

随机推荐

  1. 如果db query A没有返回足够的结果,请运行
  2. PHP基础之脚本传参
  3. 如何解决一段时间真正的循环,因为它昂贵且
  4. PHP强大包括处理错误?
  5. Laravel将动态输入数据数组保存到数据库
  6. 在rhel5版本下安装mysql+apache+php实战
  7. 在单个测试中断言多个条件,还是分成多个测
  8. 在PHP中如何取得两个日期时间相减的结果,
  9. 函数不返回“functions.php”中的值
  10. 教你如何利用php.exe运行php文件