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的配置
主机 端口 角色
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快照原理如下:
[NOSQL] Redis介绍,布布扣,bubuko.com
原文地址:http://blog.csdn.net/dbanote/article/details/30777561