Redis原理主从配置解析
一 安装略过二 redis特点
[*]1). 同一个Master可以同步多个Slaves。
[*]2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为图结构。
[*]3). Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
[*]4). Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
[*]5). 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
[*]6). Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。
三 工作原理
[*]在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。
[*] 如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。
四 主从配置 只需要在slave redis.conf配置文件中写上master的ip和redis端口即可
[*] # slaveof
[*]改为
[*]slaveof 127.0.0.1 6379
五 启动redis
[*]/usr/local/redis/redis.server /usr/local/redis/etc/redis.conf
[*]进入master进行操作
[*]redis-cli -p 6379###进入master进行操作
六 redis命令解析
[*]redis-server:Redis服务器的daemon启动程序
[*]redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
[*]redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
[*]redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况
七 优化阶段:
[*]/etc/sysctl.conf 添加
[*]vm.overcommit_memory=1
[*]刷新配置使之生效sysctl vm.overcommit_memory=1
[*]补充介绍: **如果内存情况比较紧张的话,需要设定内核参数:echo 1 > /proc/sys/vm/overcommit_memory
[*]内核参数说明如下:overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。
[*]0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申
[*]请失败,并把错误返回给应用进程。
[*]1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
[*]2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
八redis配置文件解析: vim redis.conf
[*]daemonize yes
[*]pidfile /usr/local/redis/var/redis.pid
[*]port 6379
[*]timeout 300
[*]loglevel debug
[*]logfile /usr/local/redis/var/redis.log
[*]databases 16
[*]save 900 1
[*]save 300 10
[*]save 60 10000
[*]rdbcompression yes
[*]dbfilename dump.rdb
[*]dir /usr/local/redis/var/
[*]appendonly no
[*]appendfsync always
[*]glueoutputbuf yes
[*]shareobjects no
[*]shareobjectspoolsize 1024
[*]
[*]说明:
[*]daemonize:是否以后台daemon方式运行
[*]pidfile:pid文件位置
[*]port:监听的端口号
[*]timeout:请求超时时间
[*]loglevel:log信息级别
[*]logfile:log文件位置
[*]databases:开启数据库的数量
[*]save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
[*]rdbcompression:是否使用压缩
[*]dbfilename:数据快照文件名(只是文件名,不包括目录)
[*]dir:数据快照的保存目录(这个是目录)
[*]appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
[*]appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
页:
[1]