redis详解及其 主从复制 和 memcached 主从复制

redis主从复制原理:   在Slave启动并连接到Master后,将主动发送SYNC命令。此后Master将启动后台存盘进程,将数据库快照保存到文件中,同时收集新的写命令(增、删、改)并缓存起来,在后台进程执行写文件。完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存恢复数据库快照到slave上。此后,
摘要由CSDN通过智能技术生成

redis 的安装步奏和用处:http://www.redis.cn/  转载

关闭redis服务:
$src/redis-cli shutdown
指定端口:
$src/redis-cli -p 6380 shutdown

配置redis:
daemonize yes    #作为守护进程(后台程序)执行,进程id写进/var/run/redis.pid中,默认为no。
pidfile /var/run/redis.pid    #指定pid文件。
port 6379    #指定端口。
bind 127.0.0.1    #绑定连接。
timeout 0    #超时断开连接,如果为0表示永不超时。
loglevel debug|verbose|notice|warning    #日志信息越来越少:debug>verbose>notice>warning。
logfile stdout    #指定日志文件,stdout表标准输出(如果daemonize,日志会被发送到/dev/null)。
databases 16    #设置数据库数量,默认数据库是DB 0,连接时可以使用SELECT <dbid>(dbid从0到databases-1)选择不同的数据库。

#### SNAPSHOTTING ####
save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
save 300 10  #必须是300秒之后至少10个关键字发生变化。
save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
stop-writes-on-bgsave-error yes    #后台存储错误停止写。
rdbcompression yes    #使用LZF压缩rdb文件。
rdbchecksum yes    #存储和加载rdb文件时校验。
dbfilename dump.rdb    #设置rdb文件名。
dir ./    #设置工作目录,rdb文件会写入该目录。

#### REPLICATION ####
slaveof <masterip> <masterport>    #创建slave,它是master的备份。
masterauth <master-password>    #如果master设置了密码,slave需要进行认证。
slave-serve-stale-data yes    #当slave失去与master的连接,或正在拷贝中,如果为yes,slave会响应客户端的请求,数据可能不同步甚至没有数据,如果为no,slave会返回 错误"SYNC with master in progress"。
slave-read-only yes    #如果为yes,slave实例只读,如果为no,slave实例可读可写。
repl-ping-slave-period 10    #slave发送ping给master的时间间隔,单位是秒。
repl-timeout 60    #Bulk transfer I/O超时,或ping响应超时,单位是秒,值必须要比repl-ping-slave-period大。
slave-priority 100    #如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,优先值为0表示不能提升为master。

#### SECURITY ####
requirepass <password>    #设置访问密码,密码要足够强。
rename-command <dangerous-command> <strange-command>    #给一些危险的指令进行重命名,如果重命名为“”,取消该命令。

#### LIMITS ####
maxclients 10000    #客户端并发连接数的上限是10000,到达上限,服务器会关闭所有新连接并返回错误"max number of clients reached"。
maxmemory <bytes>    #设置最大内存,到达上限,服务器会根据驱逐政策(eviction policy)删除某些键值,如果政策被设置为noeviction,那么redis只读,对于增加内存的操作请求返回错误。
maxmemory-policy volatile-lru|allkeys-lru|volatile-random|allkeys-random|volatile-ttl|noeviction    #设置驱逐政策(eviction policy)。
maxmemory-samples 3    #LRU和minimal TTL是近似算法(为了节省内存),它们会在一个有3个键值的样本中选择较没用的那个。

#### APPEND ONLY MODE ####
appendonly no    #redis默认采用快照(snapshotting)异步转存到硬盘中,它是根据save指令来触发持久化的,当Redis异常中断或停电时,可能会导致最后一些写操作丢失。 AOF( Append Only File,只追加文件)可以提供更好的持久性,结合apendfsync指令可以把几分钟的数据丢失降至一秒钟的数据丢失,它通过日志把所有的操作记录下来,AOF和RDB持久化可以同时启动。
appendfilename appendonly.aof    #指定aof的文件名。
apendfsync always|everysec|no    #调用fsync()写数据到硬盘中,always是每 一次写操作就马上同步到日志中,everysec是每隔一秒强制fsync,no是不调用fsync(),让操作系统自己决定何时同步。
no-appendfsync-on-rewrite no    #如果为yes,当BGSAVE或BGREWRITEAOF指令运行时,即把AOF文件转写到RDB文件中时,会阻止调用fsync()。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb    #Redis会将AOF文件最初的大小记录下来,如果当前的AOF文件的大小增加100%并且超过64mb时,就会自动触发Redis改写AOF文件到RDB文件中,如果auto-aof-rewrite-percentage为0表示取消自动rewrite功能。

#### LUA SCRIPTING ####
lua-time-limit 5000    #一个Lua脚本最长的执行时间为5000毫秒(5秒),如果为0或负数表示无限执行时间。

#### SLOW LOG ####
slowlog-log-slower-than 10000    #当某个请求执行时间(不包括IO时间)超过10000微妙(10毫秒),把请求记录在慢日志中 ,如果为负数不使用慢日志,如果为0强制记录每个指令。
slowlog-max-len 128    #慢日志的最大长度是128,当慢日志超过128时,最先进入队列的记录会被踢出来,慢日志会消耗内存,你可以使用SLOWLOG RESET清空队列回收这些内存。

#### ADVANCED CONFIG ####
hash-max-ziplist-entries 512
hash-max-ziplist-value 64    #较小的hash可以通过某种特殊的方式进行编码,以节省大量的内存空间,我们指定最大的条目数为512,每个条目的最大长度为64。
list-max-ziplist-entries 512
list-max-ziplist-value 64    #同上。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64    #同上。
activerehashing yes    #重新哈希the main Redis hash table(the one mapping top-level keys to values),这样会节省更多的空间。
client-output-buffer-limit normal 0 0 0    #对客户端输出缓冲进行限制可以强迫那些就不从服务器读取数据的客户端断开连接。对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal client默认取消限制,因为如果没有寻问,他们是不会接收数据的。
client-output-buffer-limit slave 256mb 64mb 60    #对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit pubsub 32mb 8mb 60    #对于pubsub client,如果client-output-buffer一旦超过32mb,又或者超过8mb持续60秒,那么服务器就会立即断开客户端连接。

#### INCLUDES ####
include /path/to/conf    #包含一些可以重用的配置文件。




redis主从复制原理:


    在Slave启动并连接到Master后,将主动发送SYNC命令。此后Master将启动后台存盘进程,将数据库快照保存到文件中,同时收集新的写命令(增、删、改)并缓存起来,在后台进程执行写文件。完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存恢复数据库快照到slave上。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。
    如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次 完全同步(第一次将所有的数据都同步过去,后期值同步命令)将被自动执行。



当然 从服务器也可以当下一个服务器的主服务器   (master->slave(master)->slave)   也可以一对多  (在要把服务器当做 slave服务器上的redis.conf  里 加上一行  slaveof   ip  port)  然后重启  主从服务器就行了 ,在主上面  set  一下   看看slave 上有没有
    如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。



memcached:
master ./memcached -d -c 265 -u root -l 127.0.0.1 -p 11211 -P /tmp/memcached.pid   (192.168.1.37)
slave /memcached -d -c 265 -u root -l 127.0.0.1 -p 11211   -x 192.168.1.37 -X 11212 -P /tmp/memcached.pid


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值