(1)redis集群原理及搭建与使用(1)
一 redis的安装
二 redis集群的搭建(原理,投票)
搭建:建redis-cluster文件夹;复制redis实例,修改配置文件,继续复制5个redis实例,建一个执行脚本,将redis-trib.rb(管理工具)复制到redis-cluster目录下
三 redis单机版与集群版的测试使用
四 如何在JavaWeb项目中实现单机和集群无缝切换使用
一 redis的安装
Redis是c语言开发的。安装redis需要c语言的编译环境。如果没有gcc需要在线安装:yum install gcc-c++
第一步:获取源码包:wget http://download.redis.io/releases/redis-3.0.0.tar.gz
第二步:解压缩redis:tar zxvf redis-3.0.0.tar.gz
第三步:编译。进入redis源码目录(cd redis-3.0.0)。执行make
第四步:安装。make install PREFIX=/usr/local/redis
PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
这样Redis就成功装在了我们的usr/local/redis目录下。
第五步:设置后台启动:[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/(把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下)
修改配置文件:把daemonize后面的参数改为yes
文章图片
测试启动:[root@localhost bin]# ./redis-server redis.conf
查看redis进程: [root@localhost bin]# ps aux|grep redis
二 redis集群的搭建
2.1 redis集群(redis-cluster)原理
3.0版本之前的redis是不支持集群的,3.0版本之前想要搭建redis集群的话需要中间件来找到存值和取值的对应节点。
3.0版本以后的redis集群架构图:
文章图片
那么这是如何实现的呢???
1)Redis 集群中内置了16384个哈希槽,2)当需要在 Redis 集群中放置一个 key-value 时,3)redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在0-16383之间的哈希槽,4)redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
根据下图应该更容易理解了。(图片来源:http://www.cnblogs.com/liyasong/p/redis_jiqun.html)
文章图片
redis集群投票机制
redis集群中有多台redis服务器不可避免会有服务器挂掉。redis集群服务器之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了。
文章图片
2.2 redis集群(redis-cluster)的搭建
这里用一台虚拟机模拟,搭建6个redis服务器集群,上面已装好redis实例,把它复制6份并修改端口
第一步: 新建redis-cluster文件夹
文章图片
第二步:复制redis实例
[root@Snailclimb local]# cp redis/bin redis-cluster/redis1
如复制过去redis实例有dump.rdb文件,最好也要删除。
文章图片
第三步:修改配置文件:修改bin目录下的redis.conf配置文件
文章图片
第四步:继续复制5个redis实例
用上面的redis实例复制5个redis实例,端口号改为7002-7006
文章图片
第五步 :新建一个执行脚本: [root@Snailclimb redis-cluster]# vim start-all.sh 脚本内容如下:
文章图片
为脚本赋予执行权限:
[root@Snailclimb redis-cluster]#chmod u+x start-all.sh
同时启动6个redis实例:
[root@Snailclimb redis-cluster]# ./start-all.sh
第六步:将redis-trib.rb(管理工具)复制到redis-cluster目录下面:
文章图片
第七步:安装ruby和ruby运行环境
yum install ruby
yum install rubygems
gem install redis-3.0.0.gem
第八步:使用ruby脚本搭建集群:
[root@Snailclimb redis-cluster]#./redis-trib.rb create --replicas 1 192.168.25.155:7001 192.168.25.155:7002 192.168.25.155:7003 192.168.25.155:7004 192.168.25.155:7005 192.168.25.155:7006
查看集群:
文章图片
注意:端口修改错误或者没有将cluster-enabled yes前的注释去掉都会导致集群搭建失败。总的来说,redis集群搭建还是很简单的。
这样一个完整的redis集群就已经搭建完毕了。。。
三 redis单机版与集群版的测试使用
添加Maven依赖:
文章图片
单机版redis测试:
文章图片
使用连接池测试单机版redis:
文章图片
测试集群版redis:
文章图片
四 如何在JavaWeb项目中实现单机和集群无缝切换使用
不修改项目代码切换:改配置文件
文章图片
创建相应类和接口
文章图片
接口:
文章图片
集群版使用:
文章图片
单机版使用:
文章图片
applicationContext-redis.xml
文章图片
文章图片
【(1)redis集群原理及搭建与使用(1)】测试代码:
文章图片
文章图片
推荐阅读
- 做一件事情的基本原理是什么()
- 【读书笔记】贝叶斯原理
- SG平滑轨迹算法的原理和实现
- “写作宝典”《金字塔原理》之读书笔记
- federation--kubernetes集群联邦的实现
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- Vue源码分析—响应式原理(二)
- MYSQL主从同步的实现