redis集群的搭建
一.为什么使用redis?
redis是一种典型的no-sql,工作在内存中,这就意味着它的读写效率是非常高的。所以大数据量的访问导致db的压力增大,所以为了业务的稳定,需要在db层上使用多级的redis提供缓冲区
二.为什么使用redis-cluster?
redis是一个内存数据库,这就意味着单个redis数据库的容量不能超过服务器的内存。所以对于大数据量的应用,就需要将数据分散到多台机器上,redis3.0版本以上开始支持cluster 。
三.redis-cluster实现原理?
redis-cluster采用的是hash slot(hash槽)[0-16383]slot,把多个redis实例整合到一起,形成一个集群。redis-cluster是一个无中心的结构,每个节点都保存其它节点的状态和它负责的槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
四.redis的投票和容错
1.投票:
当一个节点发现某个节点ping-pong不通,就会向其它节点广播该节点可能发生的错误,所有节点对该节点进行检测,超过半数,则认为该节点挂掉
2.容错
容错采用主备策略,master挂掉,slave立即接替工作
3.什么时候整个集群不可用?
a.集群中任意master挂掉,且没有slave。集群进入fail状态
b.集群超过半数以上的master挂掉,无论是否有slave都进入fail状态
五.redis-cluster的搭建
集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。
搭建一个伪分布式的集群,使用6个redis实例来模拟。
1.安装ruby环境
yum install ruby //ruby运行环境 yum install rubygems //ruby包管理器 将redis-3.0.0.gem上传到服务器(redis-trib.rb运行需要依赖的包) gem installe redis-3.0.0.gem (安装该依赖包)
2.搭建集群
(1)拷贝bin
mkdir redis-cluster cd redis cp -r bin ../redis-cluster/redis01 //拷贝
(2)配置文件修改
cd ../redis-cluster/redis01/ rm -f dump.rdb (删除快照文件) vim redis.conf 修改: port 7001 cluster-enabled yes
(3)创建六个节点
cp -r redis01/ redis02 (一直改到6) vim redis02/redis.conf (分别改端口号)
(4)拷贝集群脚本到集群目录下
cd redis-3.0.0/src cp *.rb /usr/local/redis-cluster/
(5)运行6个redis实例
vim startall.sh cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd .. ./startall.sh
(6)创建集群
./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
六.测试集群
redis01/redis-cli -h 47.94.148.93 -p 7002 -c

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
linux中如何通过php.ini添加扩展?
linux中如何通过php.ini添加扩展? 在编译安装的时候,我只通过了以下命令来安装,然后我想像windows中那样修改 php.ini 就开启了扩展 ./configure \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-soap \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd $ make && make install 拷贝下载的php-7.2.6文件中的扩展文件 cp -r /opt/downloads/php-7.2.6/ext /usr/local/lib/ 然后去修改完 php.ini 文件,开启了以下扩展 extension_dir = "/usr/local/lib/etc" extension=bz2 extension=curl ;extension=fileinfo extension=gd2 extension=gettext ;exte...
- 下一篇
WPF关闭应用汇总
原文: WPF关闭应用汇总 就本人而言,C#中关闭应用主要有以下途径: 1.Close():关闭当前窗口,可以在OnClosing和 OnClosed中捕获消息,在OnClosing的时候,可以取消关闭窗口 2.Application.Current.Shutdown()/App.Current.Shutdown(): 关闭当前程序,如果有其他线程没有结束,不会关闭 3.Environment.Exit(0):强制退出,即使有其他的线程没有结束 4.Process类的CloseMainWindow, Kill:Process.CloseMainWindow是GUI程序的最友好结束方式,从名字上就可以看出来它是通过结束主窗体,相当于用户点击窗体的关闭按钮或者按Alt + F4 5.Environment类的FailFast:这是最暴力最彻底最直接的方法,一般不建议使用 现对各方式做简单的介绍: Close():如过调用了Close,而在Closing中没有显示的取消退出,则系统可以退出,这种情况仅仅是在没有多余线程,没有其他窗口启动的时候,如果有其他窗口同时启动,则要考虑App.Curr...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范