标签:val cluster 许可证 pop inf state file pad article
Redis是Salvatore Sanfilippo在2009年为其初创公司LLOOGG开发的。眼下仍是独立项目。但VMWare赞劣了项目(作者是其雇员)。它採用C语言实现,因此性能非常好。
採用BSD许可证。使用键值存储。和Amazon Dynamo,Cassandra,Riak。Voldemort,Memcache相似。
支持丰富的数据类型。比方数组,链表。集合等,非常适合须要表达时间线的web服务。比如微博。
Redis支持的数据类型有:
眼下为止,Redis官方还在开发redis-cluster,可參考http://redis.io/topics/cluster-spec,中译版http://www.cnblogs.com/chang290/archive/2012/09/05/2672506.html
但我们能够使用keepalived+redis的方法实现高可用,例如以下所看到的:
1. redis的配置
主机 ? ? port ? 角色
redis0 6379 ? master
redis1 6379 ? slave
2. keepalived的配置
redis0和redis1使用一个虚拟ip
并使用例如以下脚本监控redis服务是否存活:
#!/bin/bash /usr/local/bin/redis-cli -h 192.168.1.53 -p 6379 info > /dev/null if [ $? -eq 0 ]; then echo "redis OK" exit 0 else echo "no redis service found!" /usr/local/bin/redis-server /path/to/redis.conf # try to start it again /usr/local/bin/redis-cli -h 192.168.11.53 -p 6380 info > /dev/null if [ $? -eq 0 ]; then exit 0 else # restart failed killall keepalived echo "error" fi fi
! Configuration File for keepalived global_defs { router_id redis1 } vrrp_script Monitor_Redis { script "/opt/redis_keepalive.sh" interval 10 weight 2 } vrrp_instance 360 { state BUCKUP #(主机为MASTER,备用机为BACKUP) interface eth0 #(HA监測网络接口) virtual_router_id 110 #(主、备机的virtual_router_id必须同样) mcast_src_ip 192.168.11.53 #(多播的源IP,设置为本机外网IP,与VIP同一网卡)此项可不设置 priority 70 #(主、备机取不同的优先级。主机值较大。备份机值较小,值越大优先级越高) advert_int 1 #(VRRP Multicast广播周期秒数) authentication { ...... } notify_master /opt/redis_2master.sh notify_backup /opt/redis_2backup.sh track_script { Monitor_Redis #(调用nginx进程检測脚本) } virtual_ipaddress { 192.168.11.4 #(VRRP HA虚拟地址) } }
Redis快照原理例如以下:
在生成快照时。将当前迚程fork出一个子进程,然后在子迚程中循环全部的数据。将数据写成为RDB文件。
在某些业务下,这是能够忍受的,我们也推荐这些业务使用RDB的方式进行持久化。由于开启RDB的代价并不高。
其生成过程和RDB相似, 也是fork一个进程,直接遍历数据,写入新的AOF暂时文件。
在写入新文件的过程中,全部的写操作日志还是会写到原来老的 AOF文件里,同一时候还会记录在内存缓冲区中。
当重完操作完毕后,会将全部缓冲区中的日志一次性写入到暂时文件里。
然后调用原子性的rename命令用新的 AOF文件代替老的AOF文件。
标签:val cluster 许可证 pop inf state file pad article
原文地址:https://www.cnblogs.com/llguanli/p/8877719.html