Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都 支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排 序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文 件,并且在此基础上实现了master-slave(主从)同步。
一、redis的安装
tar zxf redis-4.0.8.tar.gz ##解压安装包
cd redis-4.0.8
yum install gcc -y
make && make install ###安装
cd redis-4.0.8/utils/
./install_server.sh 执行这个脚本
vim /ect/redis/6379.conf 将70行改为0.0.0.0
/etc/init.d/redis restart
netstat -antlp
二、redis的主从复制
server5:master
server6:slave
server7:slave
在server6中:
tar zxf redis-4.0.8.tar.gz
cd redis-4.0.8
yum install gcc -y
make && make install
cd redis-4.0.8/utils/
./install_server.sh 执行这个脚本
vim /etc/redis/6379.conf
在server7中做同样的操作
测试:在master端(servre5)
slave端:可直接查看数据,主从复制完成
三、redis高可用
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
- 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 –sentinel 选项来启动 Redis Sentinel 。
首先配置好一主两从
1)
sentinel monitor mymaster 172.25.66.5 6379 2 配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的IP 地址为 172.25.70.1,端口号为 6379 ,而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)
down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
scp sentinel.conf server6:/etc/redis/
scp sentinel.conf server7:/etc/redis/
2)三台 redis 启动 Sentinel 服务
在master端查看:
将server5shutdown
redis-cli -p 26379 发现master已经由server5变为servre6了
在server6中查看info
恢复servre5
server5:
vim /etc/redis/6379.conf
/etc/init.d/redis_6379 restart
在server6中查看:
cd /var/lib/redis/