redis

redis.conf配置参数:

1)daemonize on|yes

redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes时,启用守护进程

2)pidfile /var/run/redis_6379.pid

redis以守护进程方式运行时,系统默认会把pid写入/var/run/redis.pid,可以通过pidfile指定pid文件

3)port 6379

redis默认监听6379端口,可以通过port指定redis要监听的端口

4)bind 127.0.0.1

绑定主机地址

5)unixsocket /tmp/redis.sock

指定redis监听的unix socket 路径

6)timeout 300

当客户端闲置多长时间,关闭连接,单位秒

7)loglevel verbose|debug|notice|warning

指定日志记录级别,默认是verbose

8)logfile /var/log/redis_6379.log

日志记录文件,默认是标准输出stdout,如果redis以守护进程方式运行,logfile 配置为stdout时,logs将要输出到/dev/null

9)syslog-enabled no|yes

当配置为yes时,日志输出到系统日志,默认是no

10)syslog-ident redis

指定syslog的标示符

11)syslog-facility local0

指定syslog设备(facility),必须是user或则local0到local7

12)databases 16

设置redis中数据库的个数,默认数据库是DB 0,可以通过select <dbid>,选择使用的数据库。dbis大于等于0,小于等于databases -1 【这里是16-1】

13)save <seconds> <changes>

指定多长时间内,有多少次更新操作时,将数据同步到数据库文件,可以多个条件配合,系统默认配置如下:

[plain] view plaincopy

  1. save 900 1 #900秒 1个修改  

  2. save 300 10 #300秒 10个更新  

  3. save 60 10000<span style="white-space:pre"> </span>#60秒 10000个更新  

注意,如果不持久化【不把数据写入磁盘】,注释掉save即可。 

14)rdbcompression yes|no

数据dump到数据文件时,系统是否压缩string对象数据,系统默认是yes。如果为了节省cpu,可以设置为no,此时数据文件比用LZF压缩时要大
15)dbfilename dump.rdb

指定数据库文件名,默认是dump.rdb

16)dir /var/lib/redis/6379

指定本地数据库存放目录

17)slaveof <masterip> <masterport>

当本机是slave服务时,设置master服务的ip和端口

18)masterauth <master-password>

当master服务设置了密码时,slave服务连接master的密码。如果配置不对,slave服务请求将被拒绝

19)slave-serve-stale-data yes|no

当slave和master之间的连接断开或slave正在于master同步时,如果有slave请求,当slave-serve-stale-data配置为yes时,slave可以相应客户端请求;当为no时,slave将要响应错误,默认是yes

20)requirepass foobared

设置redis连接密码

21)maxclients 128

设置同一时间客户端最大连接数,默认是无限制。如果设置maxclients 0 时,表示不限制

22)maxmemory <bytes>

指定redis最大内存限制,redis在启动时,会把数据加载到内存中,达到最大内存后,redis会先清除已到期或将过期的key,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读操作

23)maxmemory-policy volatile-lru|allkeys-lru|volatile-random|allkeys->random|volatile-ttl|noeviction

当redis使用内存达到最大时,使用哪种策略移除内存中数据

24)appendonly no|yes

指定是否在每次更新操作后进行日志记录,默认配置是no,即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失

25)appendfilename appendonly.aof

指定更新日志文件名【aof日志】,默认为appendonly.aof

26)appendfsync everysec|no|aways

指定更新日志条件,no表示等操作系统进行数据缓存同步到磁盘的aof文件(快)always表示每次更新操作后手动调用fsync将数据写到磁盘的aof文件(慢,安全)

everysec,表示每秒同步一次(拆中,默认值)

27)slowlog-log-slower-than 10000

配置记录慢日志的条件,单位是微妙,当是负值时,关闭慢日志记录,当是0时,记录所有操作

28)slowlog-max-len 1024

配置记录慢查询的最大条数

29)hash-max-zipmap-entries 512

配置最大元素数,当超过该配置数据时,redis采用特殊hash算法

30)hash-max-zipmap-value 64

配置最大元素值,当草果配置值时,采用特殊hash算法

31)activerehashing yes

指定是否激活充值hash,默认开启

可以通过下面命令使用配置文件redis.conf启动redis服务

redis 数据持久化

 

1、快照(snapshots)

  缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVEBGSAVE

redis_第1张图片

数据保存的目录:

redis_第2张图片

 

工作原理

  • Redis forks.

  • 子进程开始将数据写到临时RDB文件中。

  • 当子进程完成写RDB文件,用新文件替换老文件。

  • 这种方式可以使Redis使用copy-on-write技术。

 

2、APPEND ONLY MODE(AOF)

快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,Redis就不是一个合适的选择。
Append-only文件模式是另一种选择。
你可以在配置文件中打开AOF模式:

redis_第3张图片

 

选项:

  1、appendfsync no

  当设置appendfsync为no的时候,Redis不会主动调用fsync去将AOF日志内容同步到磁盘,所以这一切就完全依赖于操作系统的调试了。对大多数Linux操作系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上。

  2、appendfsync everysec

当设置appendfsync为everysec的时候,Redis会默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。但是当这一 次的fsync调用时长超过1秒时。Redis会采取延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就不管会执行多长时间都会进行。这时候由于在fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。

所以,结论就是:在绝大多数情况下,Redis会每隔一秒进行一次fsync。在最坏的情况下,两秒钟会进行一次fsync操作。

这一操作在大多数数据库系统中被称为group commit,就是组合多次写操作的数据,一次性将日志写到磁盘。

  3、appednfsync always

当设置appendfsync为always时,每一次写操作都会调用一次fsync,这时数据是最安全的,当然,由于每次都会执行fsync,所以其性能也会受到影响

   建议采用 appendfsync everysec(缺省方式)

  快照模式可以和AOF模式同时开启,互补影响

 

3、AOF重写

AOF文件是可识别的纯文本,它的内容就是一个个的Redis标准命令,
AOF日志也不是完全按客户端的请求来生成日志的,比如命令 INCRBYFLOAT 在记AOF日志时就被记成一条SET记录,因为浮点数操作可能在不同的系统上会不同,所以为了避免同一份日志在不同的系统上生成不同的数据集,所以这里只将操作后的结果通过SET来记录。

 

每一条写命令都生成一条日志,AOF文件会很大。

AOF重写是重新生成一份AOF文件,新的AOF文件中一条记录的操作只会有一次,而不像一份老文件那样,可能记录了对同一个值的多次操作。其生成过程和RDB类似,也是fork一个进程,直接遍历数据,写入新的AOF临时文件。在写入新文件的过程中,所有的写操作日志还是会写到原来老的 AOF文件中,同时还会记录在内存缓冲区中。当重完操作完成后,会将所有缓冲区中的日志一次性写入到临时文件中。然后调用原子性的rename命令用新的 AOF文件取代老的AOF文件

 

 命令:BGREWRITEAOF, 我们应该经常调用这个命令来来重写


你可能感兴趣的:(redis)