1.什么是redis?
redis 是键值对内存数据库;非关系型数据库(nosql相对mysql,Oracle关系型数据库来说)
2.什么时候用redis数据库
增删频繁并要求效率,高并发,数据量不太大
3.从redis到集群分析
单个redis数据库没啥实际应用,存储能力差,持久化会可能会丢失数据,也有并发问题;
所以有了主从结构,一个主节点多个从节点,可以实现数据共享,读写分离 ,解决并发问题实现负载均衡,高可用;但是一旦主节点挂掉,
从节点不能自动成为主节点;
针对上面问题可以利用 主从结构+sentinel解决,sentinel可以实现监控,提醒,自动故障转移;当主节点挂掉,可以监控(客观下线)到将从节点变为主节点(动态改变配置文件)
上面的形式redis存储能力没有改变,所以可以使用集群提高存储能力和扩容,只是三个主节点
4.redis集群搭建(在一台虚拟机上搭建集群)
4.1解压 redis-3.0.0.tar.gz
4.2修改 解压后的 redis-3.0.0 为redis(不改也可以)
4.3复制 cp redis /etc/
4.4编译 make
make install
4.5在 /usr/local下创建目录 cluster mkdir cluster
在cluster 创建目录 mkdir 7000(目录下放redis只需要改端口就可以当作一个reids数据库)
mkdir 7001 (这里创建三个主节点三个从节点所以创建6个节点)
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
4.6将redis.conf复制到 cluster
4.7修改cluster目录下的redis.conf文件
daemonize yes
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
4.8将修改后的文件复制到 7000 - 7005六个目录下,
4.9分别修改700?六个目录下的redis.conf文件只需改端口;(可以进入到不同目录下使用sed -i "45s/6379/7000/" redis.cof修改端口)
4.10进入700?六个目录下 启动redis 命令 :redis-server redis.conf
都启动后查看 ps -ef |grep redis这是会显示六个不同端口的redis启动了
4.11进入 cd /usr/local/redis/src 创建集群
创建集群命令 ./redis-trib.rb create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
执行时可能会出错因为需要环境 分别运行下面命令(需要外网)
yum install ruby
yum install rubygems
gem install redis
使用命令查看 redis-cli -c -p 7000 cluster nods
这时会显示集群的整个信息包括主节点从节点,哈希槽的分配情况
5. 集群扩容:
可以添加主节点和从节点
添加主节点:
创建空白节点就是创建个7006目录(同上面创建7000到7005一样注意端口号改为7006)
添加节点到集群:redis-trib.rb add-node 192.168.1.160:7006 192.168.1.160:7000
重新分片,重新分片操作基本上就是将某些节点上的哈希槽移动到另外一些节点上
使用命令./redis-trib.rb reshard 192.168.1.160:7000
第一步就是设定你打算移动的哈希槽的数量:例如1000
第二部是输入接收solts的节点ID :可以从上上面显示的集群信息中复制
接着 redis-trib 会向你询问重新分片的源节点(source node),也就是需要从哪个节点中转移哈希槽(可以使用all)
最后输入yes坐等分配好 查看redis-cli -c -p 7000 cluster nods
这时多了一个主节点端口为7006的redis
从节点:如果添加的是从节点,我们也需要创建一个空节点,然后把这个新节点设置成集群中某个主节点的复制品。
redis-cli -c -p 7007 cluster replicate 节点机器ID
删除节点
如果是主节点,先把主节点中的哈希槽转移到其他节点中,然后删除这个节点。
cd /usr/local/redis/src(集群的操作都是在这个路径下操作的)
./redis-trib.rb reshard 192.168.1.160:7006
系统会提示我们要移动多少哈希槽,这里移动1000个,因为192.168.1.160:7006节点有1000个哈希槽
然后系统提示我们输入要接收这些哈希槽的节点的ID,这里使用192.168.1.160:7001的节点ID
然后要我们选择从那些节点中转出哈希槽,这里一定要输入192.168.1.160:7006这个节点的ID,最后输入 done 表示输入完毕
最后一步,使用下面的命令把这个节点删除
cd /usr/local/redis/src
./redis-trib.rb del-node 192.168.1.160:7006 需要删除的节点ID
如果是从节点,直接删除即可。
redis-trib.rb del-node 192.168.1.160:7007 需要删除的节点ID
至此一个在一台linux上搭建的3主3从redis集群就搭建好了;自己倒着玩完全没问题,由于是手敲的没有检查可能会有错误,如有发现请改正。
如果在搭建中有什么不懂或者不会的欢迎留言。本人使用的是centos.
|
|