• redis的发布订阅、持久化存储、redis的主从复制


    redis的发布订阅

    1. 创建redis配置文件

    vim /opt/redis_conf/reids-6379.conf

    mkdir /data/6379   

    redis-server  redis-6379.conf     # 开启redis 6379 服务端

    resdis-cli -p 6379   # 进入redis 6379 的客户端  (需要开启6379 下的3个redis客户端)

     发布者:

    接收者:

    持久化存储

    1.RDB持久化配置

    redis是一个内存型的数据库

    断电数据会消失

    重启服务数据会消失

    重启服务器数据会消失

     

    1. 创建redis配置文件

    vim /opt/redis_conf/reids-6380.conf

    写入以下配置

    port 6379
    daemonize yes
    dir /data/6379
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    protected-mode yes
    dbfilename  dbmp.rdb
    save 900 1
    save 300 10
    save 60 10000

    参数说明:

    mkdir /data/6380 

    redis-server  redis-6380.conf     # 开启redis 6380 服务端

    resdis-cli -p 6380   # 进入redis 6380 的客户端 

    创建几条数据,并使用save命令开启rdb持久化

    # 实现持久化和检查持久化生效的过程:
    查看redis8380是否启动
    
    netstat -tunlp |grep 6380
    
    set name deng
    
    save   # 持久化保存
    
    netstat -tunlp |grep 6380
    
    kill 9 88669  # 将该进程杀死,停用redis 6380 服务
    
    查看 redis 数据是否已经保存
    
    redis-server  redis-6380.conf   # 开启redis6380
    
    redis-cli -p 6380    # 进入6380 客户端
    
    keys *

    2.redis AOF持久化

    1 修改reids配置文件

    vim /opt/redis_conf/redis-6380.con
    

    加入以下两行配置

    appendonly yes
    appendfsync everysec

     保存退出

    2 重启redis服务

    pkill reids
    redis-server /opt/redis_conf/redis-6380.conf
    

    3 验证appendonly.aof文件里面的数据和redis里面的数据是否健在

    客户端添加数据:

    3 redis不重启,从RDB切换到AOF

    1 配置RDB持久化,确保没有AOF的配置

    daemonize yes
    port 6380
    logfile /data/6380/redis.log
    dir /data/6380
    dbfilename  dbmp.rdb
    save 900 1                    #rdb机制 每900秒 有1个修改记录
    save 300 10                    #每300秒        10个修改记录
    save 60  10000                #每60秒内        10000修改记录

    2. 删除上面演示已经持久化储存的文件

    3.启动redis服务端

     4.检查RDB文件

     5 备份RDB文件

    6 执行命令,开启AOF持久化

    CONFIG set appendonly yes   # 开启AOF功能
    
    CONFIG SET save ""          # 关闭RDB功能

    7 验证旧的RDB数据库数据是否转入AOF, 以及AOF持久化文件是否正常写入

    redis的主从复制

    应用:负载均衡,故障切换,读写分离

    1 准备三个redis配置文件

    cd /opt/redis_conf
    
    redis-6380.conf   # 主数据库master
    redis-6381.conf   # 从库slave
    redis-6382.conf   # 从库slave

    2. 配置文件:

    vim /opt/redis_conf/redis-6380.conf

    写入以下配置:

    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    dbfilename dump.rdb
    dir /data/6380
    protected-mode no

    3 目前这三个配置文件配置一样,只是端口的不同

    #可以使用这一条命令通过redis-6380.conf生成6381和6382的配置文件
    sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf
    sed "s/6380/6382/g" redis-6380.conf > redis-6382.conf
    #
    mkdir /data/{6381,8382}

    4. 在redis-6381.conf和redis-6382.conf下添加以下配置,使之成为从数据库:

    # 添加下面这句到redis-6381.conf和redis-6382.conf配置下
    slaveof 127.0.0.1 6380

     

    5.  确认三个配置文件无误

    cat redis-6380.conf
    cat redis-6381.conf
    cat redis-6382.conf

    6 开启这三个redis服务,确保三个服务启动正常

    redis-server redis-6380.conf
    redis-server redis-6381.conf
    redis-server redis-6382.conf

    7 查看redis主从数据库的状态

    redis-cli -p 6380 info replication
    redis-cli -p 6381 info replication
    redis-cli -p 6382 info replication

    8 验证redis主从复制情况

     (1)先验证三个数据库是否能正常连接

    主库 6380 :

    从库 6381:

    从库6382:

     9 手动进行主从复制故障切换

    (1) 杀掉6380的进程,模拟主库故障

      kill -9 进程ID

    (2)在6381和6382上手动指定一个主库(我现在指定6382为主库)

      (3) 在6382的redis上执行这一行命令

    slaveof no one
    

     

    (4) 在6381上执行以下命令,将原来的指向6380改为指向6382

    slaveof no one
    slaveof 127.0.0.1 6382

    (5) 验证新的主从架构状态

    (6) 验证新的主从架构是否可以正常写入数据,同步数据

    主库6382 中写入数据:

    从库6381 中查看数据:

     
  • 相关阅读:
    Java数组和方法
    Java数组
    Java方法升级
    Java流程控制
    Java编译器的常量优化
    chrome使用技巧(看了定不让你失望)
    C 排序法
    mysql 线程池 数据库连接池
    php mysql
    深入剖析PHP输入流 php://input (转载 http://www.nowamagic.net/academy/detail/12220520)
  • 原文地址:https://www.cnblogs.com/knighterrant/p/10740738.html
Copyright © 2020-2023  润新知