zoukankan      html  css  js  c++  java
  • redis 集群,分布式

    其他方案:
     
     
     
    主从复制,读写分离
    从库作为读库,主库作为写库(默认),实现自动同步,实现冗余备份,读写分离
    redis-server --port 6380 --slaveof 127.0.0.1 6379
    或者运行时使用命令:slaveof ip  port
    停止作为从库  slaveof no one
    查看主从信息:info replication
    登录从库查看:redis-server —port port        redis-cli -p port
    从数据登录有密码的主库:从库配置文件设置masterauth  
     
    过程:
    从数据库启动时,发送SYNC给主库,主库收到命令会保存快照,在保存快照期间的命令缓存,完成后,主库把欢唱和快照发给从库(从网络直接发送,不经过硬盘,需要手动开启),从库载入快照和缓冲,执行。这种复制初始化完成后,主库每当收到写命令就把命令同步给从库。
     
    断线重连后,主库把短线期间命令发给从库。
     
    Redis使用TCP协议,可以使用telnet工具连接。需要密码时,还要发送AUTH命令进行验证
     
    主库执行命令与将命令传给从库是异步进行的。可以使用命令限制至少同步给指定数量的从数据库时,主数据库才可以写
    min-slaves-to-write 3
    min-slaves-max-lag 10  数据库最长失去连接的时间,由此判断正在连接的数量
     
    从数据库也可又有从数据库,形成图结构。
     
    手动解决主数据库崩溃:
    1.从数据库使用slaves no one 将从数据库升级成主数据库
    2.设置崩溃数据库使其成为新的从数据库,自动同步
    3.避免盲目重启主库,应先设置新主库
     
    哨兵
    作为独立进程,监控主从数据库是否正常运行
    主库故障时,转移主库角色
     
    启动哨兵:
    1.建立配置文件,sentinel.conf, 内容:
    sentinel monitor mymaster 127.0.0.1 6379 1  最后的参数表示需要几个哨兵节点同意
    2.启动进程:
    $ redis-sentinel /path/to/sentinel.conf
    配置哨兵配置主库,哨兵会自动发现从库
     
    哨兵默认端口 26379
    使用redis-cli连接
     
    哨兵每隔几秒产生一些info命令和ping命令,确保数据库正常和判断有无新的哨兵和数据库加入进来。
     
    config set 键 值
     
    集群:
    拥有和单机一样的性能,支持单机命令,多建命令只有位于同一个节点才可以。
    1.cluster-enabled 配置属性打开yes   至少三个主数据库,集群会将当前节点记录的集群状态持久化的存储在指定文件中,默认为当前目录的nodes.conf文件
     
     
    故障恢复
    每个节点定期向其他节点发送ping命令来判断是否下线。
    所有节点投票决定某一节点是否下线。
    选择新主库采用raft算法。
     
    键与插槽的对应关系:
    Redis将键名使用CRC16算法计算出散列值,然后取16384的余数(这一过程类似于hashmap取bucket位置的操作),这样使得每个键都可以分配到16384个插槽中。
     
     
     
     
  • 相关阅读:
    项目模版(C#),已配置好 Log4net 、AjaxPro 和 AjaxToolKit
    ActionScript 3.0 学习笔记二
    vs 2003项目的打开
    HttpFileCollection 多文件上传的实现以及需要注意的事项
    ActionScript 3.0 学习笔记一
    使用 iframe 实现 web 的推送技术
    媒体集有2个媒体簇,但是只提供了1个
    AjaxPro 的配置和使用
    xp 下安装 spl server express 没有sql server服务
    类中的 static 字段
  • 原文地址:https://www.cnblogs.com/wanglao/p/11162892.html
Copyright © 2011-2022 走看看