1.Redis 简单介绍:
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器
2.Redis安装配置
- 解压:tar -zxvf redis-3.0.5.tar.gz
- make
- make PREFIX=/root/training/redis install
- cp ~/tools/redis-3.0.5/redis.conf /root/training/redis/conf (conf 自己事先创建的文件夹)
- 修改核心配置文件:vi redis.conf
daemonize no改为yes 允许后台进程方式运行程序 保存退出,简单安装配置完成;
启动程序:
[root@bigdata111 ~]# cd training/redis/
[root@bigdata111 redis]# bin/redis-server conf/redis.conf
[root@bigdata111 redis]# !ps
ps -ef|grep redis
root 37206 1 0 09:05 ? 00:00:00 bin/redis-server *:6379
root 37210 37155 0 09:05 pts/0 00:00:00 grep --color=auto redis
[root@bigdata111 redis]# bin/redis-cli
127.0.0.1:6379>
3.Redis的主从结构安装配置(集群):
1.主节点:关闭rdb和aof即可
(147-149)#号注释,关闭rdb,默认是开启的
509 appendonly no 关闭aof操作日志的记录
2.从节点:配置启动port,配置slaveof localhost 6379 开启rdb和aof
修改启动的端口号:
相反从节点将以上开关打开即可。
3.这样配置以后主节点,实现了读写分离,主节点执行写操作,从节点是只读的,这就实现Redis的集群操作;
4.Redis集群的HA实现
1.Redis 2.4+自带了一个HA实现Sentinel,Redis 2.4以前,使用ZooKeeper实现Redis HA
2.配置文件:sentinel.conf(默认是没有的需要从源码中拷贝一份)
[root@bigdata111 redis]# cp ~/tools/redis-3.0.5/sentinel.conf conf/
3.主要的配置参数如下:
port 26379 端口号
sentinel monitor <master-name> <ip> <redis-port> <quorum> ---> 配置哨兵监视对象,几个哨兵
主节点别名 主节点IP 主节点端口 几个哨兵
(*)sentinel monitor mymaster 192.168.128.111 6379 1 //最好写ip地址不要写localhost
sentinel auth-pass <master-name> <password> 如果主节点配置了密码,哨兵链接主节点的密码
sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000 如果30秒没有收到主节点的心跳,进行HA的切换
(*)sentinel parallel-syncs mymaster 1 这个参数一定不能太大
选举新的主节点后,允许同时接连的从节点的个数
# Default is 3 minutes. 如果3分钟内,HA的切换没有完成,就失败
sentinel failover-timeout mymaster 180000
备注:我们只需要修改:
备注:其他的是默认开启的;
4.启动哨兵:
日志显示:6380和6381是slaveof 6379是master
启动哨兵
bin/redis-sentinel conf/sentinel.conf
输出的日志:
117058:X 21 May 20:38:08.607 # +monitor master mymaster 192.168.128.111 6379 quorum 1
117058:X 21 May 20:38:08.608 * +slave slave 192.168.128.111:6380 192.168.128.111 6380 @ mymaster 192.168.128.111 6379 117058:X 21 May 20:38:08.640 * +slave slave 192.168.128.111:6381 192.168.128.111 6381 @ mymaster 192.168.128.111 6379
5.Redis集群的分片代理安装配置;
正常情况下,我们服务器是读取的压力比较大,写入的压力比较小,需要使用代理客户端,来分流读数据的压力,实现负载均衡,提高服务器的性能;
1.Redis的代理分片:针对是从节点(nutcracker-0.3.0.tar.gz,代理客户端软件)
Demo: 主节点: 6379
从节点: 6380 6381
2.安装
./configure --prefix=/root/training/proxy
make
make install
拷贝一个配置文件
cp ~/tools/nutcracker-0.3.0/conf/nutcracker.yml conf/
3.编辑配置文件
[root@bigdata111 training]# cd proxy/
[root@bigdata111 proxy]# ls
conf sbin share
[root@bigdata111 proxy]# cd conf/
[root@bigdata111 conf]# ls
nutcracker.yml
[root@bigdata111 conf]# vi nutcracker.yml
1 alpha:
2 listen: 127.0.0.1:22121
3 hash: fnv1a_64
4 distribution: ketama
5 auto_eject_hosts: true
6 redis: true
7 server_retry_timeout: 2000
8 server_failure_limit: 1
9 servers:
10 - 192.168.128.111:6380:1 //配置从节点信息 ip地址以及端口
11 - 192.168.128.111:6381:1 //最后一个1表示分摊客户端读入的压力权重,在此表示分摊1/2
4.检查配置文件是否正确
./nutcracker -t conf/nutcracker.yml
5.启动代理服务器
./nutcracker -d -c conf/nutcracker.yml