Redis认证及Redis持久化实现

Redis认证及Redis持久化

1、Redis认证实现方法:

         (1)redis.conf

                   requirepass      PASSWORD

         (2)redis-cli

                   AUTHPASSWORD

                   redis-cli-h HOST -a PASSWORD

[root@test ~]# vim /etc/redis.conf

requirepass field

[root@test ~]# service redis restart

停止 redis-server:[确定]

启动:[确定]

[root@test ~]# redis-cli -h 192.168.88.130

192.168.88.130:6379> select 0

(error) NOAUTH Authentication required.

192.168.88.130:6379> auth field

OK

192.168.88.130:6379> EXIT

[root@test ~]#

[root@test ~]# redis-cli -h 192.168.88.130-a field

192.168.88.130:6379> select 1

OK

192.168.88.130:6379[1]>

[root@test etc]# ps -ef | grep redis

redis   42400     1  0 21:30 ?        00:00:01 /usr/bin/redis-server127.0.0.1:6379                                                   

root    43343 42249  0 22:01 pts/0    00:00:00 grep redis

[root@test etc]# kill -9 42400

[root@test etc]# ss -tnl |grep 6379

[root@test etc]# service redis restart

停止 redis-server:Could not connect to Redis at 127.0.0.1:6379: Connection refused

[确定]

启动:[确定]

[root@test etc]# redis-cli -h192.168.88.130

192.168.88.130:6379> select 1

OK

192.168.88.130:6379[1]>

2、Redis持久化:默认情况下Redis在工作中用到的所有数据集都是工作在内存中。

RDB和AOF:

RDB:snapshop(快照),二进制格式,按事先定制的策略,周期性的将数据保存至磁盘,数据文件默认为dump.rdb;

客户端也可以显示使用SAVE或BGSAVE命令启动快照保存机制;

         SAVE:同步,在主线程中保存快照,此时会阻塞所有客户端请求;

         BGSAVE:异步,不会阻塞所有客户端请求;

RDB工作模式:创建一个子进程,父进程继续处理客户端请求,子进程负责将内存中的内容快照到磁盘中去

AOF:AppendOnly File(Redis所有操作以附加的方式附加一个文件)

         记录每一次写操作至指定文件的尾部实现持久化;当Redis重启时,可通过重新执行文件中的命令在内存重建数据库;

         BGREWRITEAOF:AOF文件重写;

         不会读取正在使用AOF文件,而通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;

RDB相关配置

################################SNAPSHOTTING ################################

save 900 1

#900秒有一个键发生改变就做一次快照,进行一次持久化。

save 300 10

save 60 10000

stop-writes-on-bgsave-erroryes

#异步快照是一旦错误是否停止写操作

rdbcompression yes

#rdb文件是否执行压缩来节省空间

rdbchecksum yes

#rdb文件是否做校验码检查

#rdb快照文件名

dir /var/lib/redis

#rdb快照文件保存路径

################################SNAPSHOTTING ################################

[root@test etc]# redis-cli -h192.168.88.130

192.168.88.130:6379> config get dir

1) "dir"

2) "/var/lib/redis"

192.168.88.130:6379>

AOF:

         重写过程:

                   (1)Redis主进程通过fork创建子进程

                   (2)子进程根据Redis内存中的数据创建数据库重建命令序列于临时文件中;

                   (3)父进程继承client的请求,并会把这些请求中的写操作继续追加至原来的AOF文件;额外的,这些新的写请求还会被放置于于一个缓冲队列中

                   (4)子进程重写完成,会通知父进程,父进程把缓冲中的命令写到临时文件中;

                   (5)父进程用临时文件替换老的AOF文件;

Redis触发AOF rewrite机制有三种:

(1)Redis Server接收到客户端发送的BGREWRITEAOF指令请求,如果当前AOF/RDB数据持久化没有在执行,那么执行,反之,等当前AOF/RDB数据持久化结束后执行AOF rewrite

(2)在Redis配置文件redis.conf中,用户设置了auto-aof-rewrite-percentage和auto-aof-rewrite-min-size参数,并且当前AOF文件大小server.aof_current_size大于auto-aof-rewrite-min-size(server.aof_rewrite_min_size),同时AOF文件大小的增长率大于auto-aof-rewrite-percentage(server.aof_rewrite_perc)时,会自动触发AOF rewrite

(3)用户设置“config setappendonly yes”开启AOF的时,调用startAppendOnly函数会触发rewrite

192.168.88.130:6379> config set  appendonly yes

OK

AOF相关参数:

############################## APPEND ONLYMODE ###############################

appendonly no

#是否开启AOF持久化

appendfilename"appendonly.aof"

#AOF持久化文件名

# appendfsync always

#每一次写操作都会调用一次fsync,这时数据是最安全的,由于每次都会执行fsync,会影响性能。

appendfsync everysec

#Redis每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。

# appendfsync no

#Redis不主动调用fsync去将AOF日志内容同步到磁盘,由操作系统决定。

no-appendfsync-on-rewriteno

#做重写的时候对新写操作不做appendfsync

auto-aof-rewrite-percentage100

#AOF文件大小的增长率为多大时,会自动触发AOF rewrite

auto-aof-rewrite-min-size64mb

#当前AOF文件大小为多大时,会自动触发AOF rewrite

############################## APPEND ONLYMODE ###############################

注意:持久化本身不能取代备份,还应该指定备份策略,对Redis数据库定期进行备份;

RDB和AOF同时启用:

         (1)BGSAVE和BGREWRITEAOF不能同时执行;

         (2)在Redis服务器启动用于恢复数据时,会优先使用AOF;

        

测试

[root@test redis]# vi /etc/redis.conf

################################SNAPSHOTTING ################################

rdbcompression no

#rdb文件是否执行压缩来节省空间,此处关闭便于查看

############################## APPEND ONLYMODE ###############################

appendonly yes

#开启AOF持久化

[root@test redis]# service redis restart

[root@test redis]# redis-cli -h192.168.88.130 -p 6379

192.168.88.130:6379> set server redis

OK

192.168.88.130:6379> set databaseredisdatabase

OK

192.168.88.130:6379> set versionredis-3.2.11-1.el6.x86_64

OK

192.168.88.130:6379> exit

[root@test redis]# ll

总用量 8

-rw-r--r-- 1 redis redis 543 4月  26 15:21 appendonly.aof

-rw-r--r-- 1 redis redis 130 4月  26 15:19 dump.rdb

[root@test redis]# tail appendonly.aof

database

$13

redisdatabase

*3

$3

set

$7

version

$25

redis-3.2.11-1.el6.x86_64

[root@test redis]# cat dump.rdb

REDIS0007s-ver3.2.11is-bits


mon04portlday0426yearbip0.0.0.0
x[root@test redis]#

[root@test redis]#

猜你喜欢

转载自blog.csdn.net/field_yang/article/details/80141803