zoukankan      html  css  js  c++  java
  • redis主从复制

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

    • 特性:
    • 运行在内存中的数据集工作方式
    • 支持多种数据结构
    • 提供不同级别的磁盘持久化功能
    • 可搭建高可用集群
    • 支持对数据进行原子操作
    • 支持主从复制
    • 支持事务
    • 内存回收
    • 过期自动删除key
    • 订阅分发
    • LUA脚本
    • 自动故障转移
    • 支持大多数编程语言

    使用Docker管理Redis服务,省去繁琐的安装配置,快速启动停止,快速部署Redis Cluster

    使用Redis官方镜像:

    拉取镜像:

    docker pull redis
    

    启动一个redis实例

    $ docker run --name some-redis -d redis
    

    启动实例开启持久性存储

    $ docker run --name some-redis -d redis redis-server --appendonly yes
    

    如果保存数据文件到宿主机,使用-v选项,数据卷挂载即可。

    从另外一个应用连接到此容器

    $ docker run --name some-app --link some-redis:redis -d application-that-uses-redis
    

    redis客户端连接到此服务

    $ docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379
    

    启动时使用自定义配置文件,配置文件放置在宿主机/myredis/conf/redis.conf

    $ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
    

    redis主从复制实现读写隔离

    原理:

    1)当一个从数据库启动时,会向主数据库发送sync命令,

    2)主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来

    3)当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。

    4)从数据库收到后,会载入快照文件并执行收到的缓存的命令。

     

    这里使用一主一从,也可以一主多从

    $ docker run --name master-redis -p 6379:6379 -d redis redis-server --appendonly yes
    
    $ docker run --name slave-redis --link master-redis:master-redis -p 6380:6379 -d redis redis-server --appendonly yes --slaveof master-redis 6379
    

    master-redis可以读写

    ./redis-cli -p 6379
    

    ./redis-cli -p 6380
    

    slave-redis只能读,不能写

     

  • 相关阅读:
    MyBatis中Like语句使用总结
    使用dom4j解析xml为json对象
    实体类里布尔类型在数据库里可以用整型映射
    Java枚举根据key获取value
    Oracle和Mysql中mybatis模糊匹配查询区别
    解决3 字节的 UTF-8 序列的字节 3 无效
    git上传代码到github
    OpenShift 3.11离线环境的jenkins演示
    OpenShift下的JVM监控
    OpenShift 4.1 演示
  • 原文地址:https://www.cnblogs.com/jjzd/p/7344379.html
Copyright © 2011-2022 走看看