Redis--集群搭建
原创
©著作权归作者所有:来自51CTO博客作者wx63118e2bb7416的原创作品,请联系作者获取转载授权,否则将追究法律责任
NoSQL数据库概述
NoSQL =not only sql 意味着不仅仅是SQL,泛指非关系型数据库,nosql型数据库不依赖于业务逻辑方式存储,而是以简单的key-value方式存储,可以增加数据库的扩展能力
Redis简介
数据存储在内存中,支持持久化,主要用作备份恢复,除了支持key-value形式,还支持lsit set hash zset等, 一般作为缓存数据库辅助持久化的数据库
Redis安装
redis中文官网 :http://www.redis.net.cn/
方式一:可根据官方文档给出的方式进行安装
方式二:安装redis-3.2.5
下载获得下载获得redis-3.2.5.tar.gz后将它放入我们的Linux目录/opt
解压命令:tar -zxvf redis-3.2.5.tar.gz
解压完成后进入目录:cd redis-3.2.5
yum install gcc
yum install gcc-c++
在redis-3.2.5/ 目录下执行make distclean -->make
make install
启动redis
1. 备份redis.conf:拷贝一份redis.conf到其他目录
2. 修改redis.conf文件daemonize no 改为yes :让在后台启动
3. 启动命令:执行redis-server /myredis/redis.conf
4. redis-cli :启动客户端
5. ping :如果输出pong 则证明成功
关闭redis
Redis的主从复制
拷贝多个redis.conf 文件 include
指定pid文件名字pidfile
指定端口port
设置Dump.rdb名字dbfilename
include /home/wangyg/myredis/master_slave/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
主从信息打印
设置成为从服务器
哨兵模式
在自定义配置目录下新建sentinel.conf文件
在配置文件中填写内容:
sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称, 1 为 至少有多少个哨兵同意迁移的数量。
启动哨兵
执行redis-sentinel /myredis/sentinel.conf
redis集群
安装环境
yum install ruby
yum install rubygems
拷贝redis-3.2.0.gem到/opt目录下
执行在opt目录下执行 gem install --local redis-3.2.0.gem
6个实例:端口分别为6379,6380,6381,6389,6390,6391
拷贝多个redis.conf文件
开启daemonize yes
Pid文件名字
指定端口
Log文件名字
Dump.rdb名字
Appendonly 关掉或者换名字
安装redis cluster配置修改
cluster-enabled yes: 打开集群模式
cluster-config-file nodes-6379.conf 设定节点配置文件
cluster-node-timeout 15000 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
将6个节点全部启动
进入src目录: cd /opt/redis-3.2.5/src
./redis-trib.rb create --replicas 1 192.168.31.211:6379 192.168.31.211:6380 192.168.31.211:6381 192.168.31.211:6389 192.168.31.211:6390 192.168.31.211:6391 //需要根据本机ip进行修改
cluster nodes :redis-cli 中输入命令查看集群
//利用jedis测试集群
@Test
public void test1() {
//需要查看集群线程是否起来了
Set<HostAndPort> set = new HashSet<>();
set.add(new HostAndPort("192.168.1.101", 6379));
JedisCluster jedisCluster = new JedisCluster(set);
jedisCluster.set("k1", "v1");
System.out.println(jedisCluster.get("k1"));
}