redis介绍和安装和主从介绍(二)

redis正式安装过程

安装依赖,下载解压,编译安装

yum install gcc-c++ tcl

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

tar -zxvf  redis-4.0.9.tar.gz

cd redis-4.0.9

make 

cd /usr/local/src/redis-4.0.9/src

cp redis-server redis-cli redis-check-aof redis-check-rdb redis-sentinel redis-trib.rb /usr/local/bin/

make PREFIX=/usr/local/redis install

如果此处不用make install请自己尝试创建。

 

配置环境变量
echo 'PATH=/usr/local/redis/bin/:$PATH' >>/etc/profile

source /etc/profile

 

查看redis的工具

ls /usr/local/bin

 

创建redis的配置文件目录:

mkdir /usr/local/redis/conf

cp /usr/local/src/redis-4.0.9/redis.conf /usr/local/redis/conf/

 

创建文档:

mkdir -p /var/redis/run

mkdir -p /var/redis/log

mkdir -p /data/redis/data

修改配置文件

vi /usr/local/redis/conf/redis.conf

port 6379      //默认是6379,做主从可以设置其他端口

daemonize yes

pidfile /var/redis/run/redis_6379.pid

logfile /var/redis/log/redis_6379.pid

dir /data/redis/data        //工作目录,dump文件所在的目录,也是数据库目录,该目录默认是根下

requirepass test123       //配置redis的登录密码

appendonly yes             //redis默认持久化方式是rdb,数据写到dump中

 

启动redis

redis-server /usr/local/redis/conf/redis.conf &

lsof -i :6739

 

redis关闭
redis-cli shutdown save

 

如果配置了密码和端口,则重启redis都要使用

redis-cli -p 6379 -a test123

 **************************************************************************************************************

redis默认的持久化方式是RDB,数据写入到dump文件中。如果要启用AOF持久化,就在redis.conf文件中配置如下:
appendonly yes         #启用AOF持久化方式
appendfilename "appendonly.aof"       #AOF文件的名称,默认为appendonly.aof
# appendfsync always        #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。
appendfsync everysec        #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。
# appendfsync no         #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。

**************************************************************************************************************

 ps -ef|grep redis
root 3795 1 0 15:33 ? 00:00:00 redis-server 127.0.0.1:6379
root 3799 31415 0 15:33 pts/1 00:00:00 grep --color redis

lsof -i:6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 3795 root 4u IPv4 58627495 0t0 TCP localhost:6379 (LISTEN)

 

设置开机启动

echo "/usr/local/bin/redis-server /usr/local/redis/conf/redis.conf" >> /etc/rc.local

 

关闭redis服务

端口如果变化需要更端口号

redis-cli  -p 6379 -a test123 shutdown

 

当开始写入数据后会在/data/redis/data 该目录下生成dump.rdb文件和持久化日志,生成的

appendonly.aof文档记录了数据库的修改

 ************************************************************************************

设置redis服务启动脚本以及开机启动

将redis解压包下utils下redis启动脚本redis_init_script拷贝至/etc/init.d/,并修改脚本名称(也可不修改)为redis

cp /usr/local/src/redis-4.0.9/utils/redis_init_script /etc/init.d/redis

chmod +x /etc/init.d/redis

修改脚本pid及conf路径为实际路径,红色字体部分如果没有,将不能自启动

在启动脚本/etc/init.d/redis里加入redis启动优先级信息

#!/bin/sh
#
# chkconfig: 2345 90 10                                                     //注意:后面的英文空格
# description: Redis is a persistent key-value database          //注意:后面的英文空格

# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/redis/run/redis_6379.pid
CONF="/usr/local/redis/conf/redis.conf"

开机自启动

chkconfig redis on

chkconfig --list | grep redis

redis 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

**********************************************************************************************************

初始化Redis的密码
有以下2个步骤:
1)在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数。
比如 requirepass test123
2)配置文件中参数生效需要重启重启redis 。
重启redis服务后,发现使用redis-cli -p 6379的无密码方式仍能登录redis,只是登录进去后不能做任何操作。
需要用密码登录redis-cli -p 6379 -a test123后,才能正常操作

那么不重启redis的情况下如何配置密码?
1)在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。
# requirepass foobared
比如修改成:
requirepass test123
2)进入redis重定义参数
查看当前的密码:
[root@slaver251 redis-2.4.16]# redis-cli -p 6379
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379>
显示密码是空的,
然后设置密码:
redis 127.0.0.1:6379> config set requirepass test123
OK
再次查询密码:
redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted
此时报错了!
现在只需要密码认证就可以了。
redis 127.0.0.1:6379> auth test123
OK
再次查询密码:
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
密码已经得到修改。
当到了可以重启redis的时候,由于配置参数已经修改,所以密码会自动生效。
要是配置参数没添加密码,那么redis重启,密码将相当于没有设置。

*************************************************************************************************

masterauth是当master节点设置了密码保护时,slav服务连接master的密码,这个是在slave节点配置的。
1)如果master节点不设置密码(即不设置requirepass密码),那么slave节点在配置同步的时候,只需配置:
#slaveof master的ip 端口
slaveof 192.168.1.150 6379 
2)如果master节点配置了requirepass密码,那么slave就需要配置masterauth密码来连接master。
比如:
master :

 

     port 6379
     requirepass redis
slave1 :
    port 6479
    slaveof 192.168.1.150 6379   //此处的ip和端口是主的ip和端口
    masterauth redis        //注意,这个是连接master节点,同步数据用的密码
    requirepass redis      //这个是slave节点上登录自己的redis用的密码

****************************************************************************************************

slave端的相关配置
slave-read-only yes     #从2.6版本开始支持只读的slave,默认是yes的
masterauth <master-password> #如果master配置了requirepass设置密码,slave需要配置连接master的密码
slave-serve-stale-data yes    #当slave与master断开或者复制正在进行的时候是否继续提供服务,默认是yes继续服务,可以配置为no返回错误提示“SYNC with master in progress”(除了INFO和SLAVEOF命令)
repl-ping-slave-period 10 #slave发送心跳的间隔时间,默认是10秒,可以做测试,在从上写入数据,输入monitor命令,在主上就能看到每隔十秒就ping下。

master端的相关配置
repl-diskless-sync no     #是否使用无盘复制 Diskless replication,默认是no
repl-diskless-sync-delay 5   #无盘复制延时开始秒数,默认是5秒,意思是当PSYNC触发的时候,master延时多少秒开始向master传送数据流,以便等待更多的slave连接可以同时传送数据流,因为一旦PSYNC开始后,如果有新的slave连接master,只能等待下次PSYNC。可以配置为0取消等待,立即开始
repl-backlog-size 1mb   #复制流的内存缓冲区大小,用于增量同步,当master-slave断开的时候,master保存在复制流内存缓冲区的数据大小限制,默认是1mb。如果至少有1个slave连接的话,就会释放
repl-backlog-ttl 3600   #复制流的内存缓冲区过时时间,默认3600秒,就是说无论保存在复制流内存缓冲区的数据大小是否超过限制,当master-slave断开超过上述时间就会释放
min-slaves-to-write 3    #从2.8版本开始,可以配置与master连接的slave的最少数量,默认是0没有限制,如果配置>0,需要结合下面的选项一起使用,只有同时满足这2个选项,master才能接收写操作
min-slaves-max-lag 10 #允许master-slave的心跳最大间隔,默认是10秒,需要结合min-slaves-to-write选项一起使用

复制+持久化的数据完整性考虑
如果master配置了slave,那么强烈建议master启用持久化。因为当master重启的时候,如果没有启用持久化,数据会全部丢失,而且当slave重新连接master的时候,slave原有的数据也会被清空。如果真的要配置不启用持久化,最好不要设置自动启动master,除非数据全部丢失对你来说不重要。

posted @ 2018-04-12 14:44  风中驻足  阅读(127)  评论(0编辑  收藏  举报