注:单位不区分大小写,所以1GB 1Gb 1gB都是一样的。
bind 127.0.0.1 # 绑定的ip
protected-mode yes # 保护模式
port 6379 # 端口设置
daemonize yes # 以守护进程的方式运行,默认是 no,我们需要自己开启为yes
pidfile /var/run/redis_6379.pid # 如果以后台的方式运行,我们就需要指定一个 pid 文件!
# 日志 # Specify the server verbosity level. # This can be one of:debug,verbose,notice
loglevel notice #指定日志的等级,warning
logfile "" # 日志的文件位置名
databases 16 # 数据库的数量,默认是 16 个数据库
always-show-logo yes # 是否总是显示LOGO
持久化, 在规定的时间内,执行了多少次操作,则会持久化到文件 .rdb. aof
redis 是内存数据库,如果没有持久化,那么数据断电即失!
# 如果900s内,如果至少有一个key进行了修改,我们即进行持久化操作
save 900 1
# 如果300s内,如果至少10 key进行了修改,我们即进行持久化操作
save 300 10
# 如果60s内,如果至少10000 key进行了修改,我们即进行持久化操作
save 60 10000
stop-writes-on-bgsave-error yes # 持久化如果出错,是否还需要继续工作!
rdbcompression yes # 是否压缩 rdb 文件,需要消耗一些cpu资源!
rdbchecksum yes # 保存rdb文件的时候,进行错误的检查校验!
dir ./ # rdb 文件保存的目录!
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程 都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。 这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。我们默认的就是 RDB,一般情况下不需要修改这个配置!
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
127.0.0.1:6379> exit
[root@localhost bin]# ll
总用量 38104
-rw-r--r--. 1 root root 104 6月 9 17:36 dump.rdb
drwxr-xr-x. 2 root root 24 6月 9 17:34 myconf
-rwxr-xr-x. 1 root root 2363 4月 10 13:55 pcre-config
-rwxr-xr-x. 1 root root 100048 4月 10 13:55 pcregrep
-rwxr-xr-x. 1 root root 197512 4月 10 13:55 pcretest
-rwxr-xr-x. 1 root root 4739936 6月 4 09:25 redis-benchmark
-rwxr-xr-x. 1 root root 9634576 6月 4 09:25 redis-check-aof
-rwxr-xr-x. 1 root root 9634576 6月 4 09:25 redis-check-rdb
-rwxr-xr-x. 1 root root 5050352 6月 4 09:25 redis-cli
lrwxrwxrwx. 1 root root 12 6月 4 09:25 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 9634576 6月 4 09:25 redis-server
[root@localhost bin]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> keys *
1) "k4"
2) "k2"
3) "k3"
4) "k1"
5) "k5"
1、save的规则满足的情况下,会自动触发rdb规则
2、执行 flushall 命令,也会触发rdb规则
3、退出redis(shutdown命令),也会产生 rdb 文件!
优点
1、适合大规模的数据恢复
2、对数据的完整性要求不高
缺点:
1、需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有的了
2、fork进程的时候,会占用一定的内存空间
以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
默认appendonly的值为no,需要修改为yes。
重新启动Redis就会生效,生成appendonly.aof
我们故意破坏appendonly.aof文件后,重新启动Redis将会报错。
使用redis-check-aof进行修复。
再次重启Redis成功!
优点:
1、每一次修改都同步,文件的完整会更加好
2、每秒同步一次,可能会丢失一秒的数据
3、从不同步,效率最高的
缺点:
1、相对于数据文件来说,aof远远大于 rdb,修复的速度也比 rdb慢
2、aof 运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化
我们既可以在配置文件中通过requirepass指令来设置密码,比如requirepass 123456,同时也可以使用命令行操作来设置密码。
如果有如下提示,则需要使用命令auth 密码来进行授权。
maxclients 10000 # 设置能连接上redis的最大客户端的数量
maxmemory # redis 配置最大的内存容量
maxmemory-policy noeviction # 内存到达上限之后的处理策略
1、volatile-lru: 只对设置了过期时间的key进行LRU(默认值)
2、allkeys-lru : 删除lru算法的key
3、volatile-random: 随机删除即将过期key
4、allkeys-random: 随机删除
5、volatile-ttl : 删除即将过期的
6、noeviction : 永不过期,返回错误
appendonly no # 默认是不开启aof模式的,默认是使用rdb方式持久化的,在大部分所有的情况下, rdb完全够用!
appendfilename "appendonly.aof" # 持久化的文件的名字
# appendfsync always # 每次修改都会 sync。消耗性能
appendfsync everysec # 每秒执行一次 sync,可能会丢失这1s的数据!
# appendfsync no # 不执行 sync,这个时候操作系统自己同步数据,速度最快!