1.在哪里:在我们的myredis文件夹下的myredis.conf文件夹下,注意,这是拷贝出来单独执行的,为了养成良好的编码习惯。
2.Units单位
当你需要为某个配置项指定内存大小的时候,必须要带上单位,
通常的格式就是 1k 5gb 4m 等:
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
单位是不区分大小写的,你写 1K 5GB 4M 也行
3.includes包含
和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他。
假如说你有一个可用于所有的 redis server 的标准配置模板,
但针对某些 server 又需要一些个性化的设置,
你可以使用 include 来包含一些其他的配置文件,这对你来说是非常有用的。
但是要注意,include 是不能被 config rewrite 命令改写的,
由于 redis 总是以最后的加工线作为一个配置指令值,所以你最好是把 include 放在这个文件的最前面,
以避免在运行时覆盖配置的改变,相反,你就把它放在后面。
include /path/to/local.conf
include /path/to/other.conf
4.
常用
配置:
(1) Daemonize:
默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes,当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面(37行)。
(2) Pidfile:
当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,
但是你可以在这里自己制定它的文件位置
(41行)。
(3) Port :
监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接(45行):
(4) Tcp-backlog :
在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题,Linux 内核会一声不响的把这个值缩小成/proc/sys/net/core/somaxconn 对应的值,所以你要修改这两个值才能达到你的预期(54行)。
(5) Timeout:
客户机空闲多少秒就关闭了
,0代表一直不关
(74行)。
(6) Bind
默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接,
你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。
示例,多个IP用空格隔开:
bind 192.168.1.100 10.0.0.1(64行)。
(7) Tcp-keepalive:
是在TCP中一个可以检测死连接的机制。
单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60
(90行)
。
(8) Loglevel:redies的日志级别
,默认有四个级别,分别是:debug,verbose,notice<默认>,warning
(90行)。
debug (适用于开发或测试阶段)
verbose (many rarely useful info, but not a mess like the debug level)
notice (适用于生产环境)
warning (仅仅一些重要的消息被记录)
(9) Logfile:指定日志文件的位置(103行)
(10) Syslog-enabled:是否把日志输出到syslog中(107)
要想把日志记录到系统日志,就把它改成 yes,
也可以可选择性的更新其他的syslog 参数以达到你的要求。
(11) Syslog-ident:
指定syslog里的日志标志
(110)
(12) Syslog-facility:
设置 syslog 的 facility,必须是 USER 或者是 LOCAL0-LOCAL7 之间的值。(113)
(13) Databases:16个库(118)
设置数据库的数目。
默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库,
但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值
(14) 默认值为dump.rdb:指定本地数据库文件名,我们可以设置,例如:dbfilename dump6379.rdb(177行)
5.snapshotting 快照(Redis持久化之RDB )
该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多(10-20G)就不适合频繁进行该持久化操作。
(1) Save:根据给定的时间间隔和写入次数将数据保存到磁盘
save 900 1 #900 秒内如果超过 1 个 key 被修改,则发起快照保存
save 300 10 #300秒超过10个key被修改,发起快照
save 60 10000 #60秒超过10000个key被修改,发起快
注意:你可以注释掉所有的 save 行来停用保存功能。也可以直接一个空字符串来实现停用: save ""
(2) Stop-writes-on-bgsave-error:
默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,
这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,
否则就会没人注意到灾难的发生。
如果后台保存进程重新启动工作了,redis 也将自动的允许写操作,
然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
(3) rdbcompression:
是否在 dump .rdb 数据库的时候使用 LZF 压缩字符串,
默认都设为 yes,
如果你希望保存子进程节省点 cpu ,你就设置它为 no ,关闭此功能,
不过这个数据集可能就会比较大。
(4) rdbchecksum:是否校验rdb文件
在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
(5) dbfilename:名字一般不需要修改。
(6) dir:工作目录
例如上面的 dbfilename 只指定了文件名,
但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。
6.Redis 主从复制
详见:
7.
Redis
安全:
访问密码的查看、设置和取消
查看:config get requirepass
设置:config set requirepass "123456"
取消:auth 123456
8.
Redis
限制:
(1) Maxclients:
设置redis同时可以与多少个客户端进行连接,默认情况下为10000个客户端,当你
无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32。
(2) Maxmemory:
设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,
那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
(3) Maxmemory-policy:最大内存策略,你有 5 个选择。
① volatile-lru:使用LRU算法移除key,只对设置了过期时间的键。
② allkeys-lru:使用LRU算法移除key。
③ volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键。
④ allkeys-random:移除随机的key。
⑤ volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key。
⑥ noeviction:不让任何 key 过期,只是给写入操作返回一个错误。
(4) Maxmemory-samples:
设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小, redis默认会检查这么多个key并选择其中LRU的那个
9.Redis 追加(Redis持久化之AOF)
(1) appendonly:默认为no,yes就是打开aof持久化。
(2) appendfilename:
(3) Appendfsync:
每秒同步:appendfsync always 同步持久化每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好.
每修改同步:appendfsync everysec 异步操作,每秒记录 如果一秒内宕机,有数据丢失.
不同步:appendfsync no 从不同步.
(4) No-appendfsync-on-rewrite:重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。
(5) Auto-aof-rewrite-min-size:设置重写的基准值。
(6) Auto-aof-rewrite-percentage:
设置重写的基准值。
10.Redis 集群
cluster-enabled yes:启用或停用集群