zoukankan      html  css  js  c++  java
  • 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,除非数据全部丢失对你来说不重要。

  • 相关阅读:
    leetcode 之 Palindrome Partitioning
    虚拟机共享文件夹下tar
    leetcode 之 Excel Sheet Column Number
    AndroidHttpClient & jsoup 解析 正方教务系统
    查看android下的分区表
    ubuntukylin 下编译 android4.4
    android:layout_weight 和 android: weightSum的使用
    Intent 与Bundle的传值关系
    使用自定义的Toast
    SlideMenu例子解析2
  • 原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/8807669.html
Copyright © 2011-2022 走看看