-
当数据量太大的时候,应该考虑分布式,加机器,把数据分到不同的位置,分摊集中的压力
-
数据如何分配?
Redis Cluster
采用哈希分区规则,因此接下来会讨论哈希分区规则。即取余Redis Cluster
采用虚拟槽分区,Redis Cluster
槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,每个节点负责一定数量的槽。
-
搭建redis cluster
-
环境准备
#通过配置,开启redis-cluster port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes #开启集群模式 cluster-config-file nodes-7000.conf #集群内部的配置文件 cluster-require-full-coverage no #redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常,那么整个cluster不对外提供服务。 因此生产环境一般为no #6个配置文件 仅仅是端口的区别 redis-7001.conf redis-7002.conf redis-7003.conf redis-7004.conf redis-7005.conf
-
分配槽位
-
配置ruby脚本环境
#yum安装 会自动给配置PATH环境变量 yum install ruby #编译安装 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz #安装ruby tar -xvf ruby-2.3.1.tar.gz ./configure --prefix=/opt/ruby/ make && make install #准备一个ruby命令 #准备一个gem软件包管理命令 #拷贝ruby命令到path下/usr/local/ruby cp /opt/ruby/bin/ruby /usr/local/ cp bin/gem /usr/local/bin
-
下载ruby操作redis的模块
wget http://rubygems.org/downloads/redis-3.3.0.gem
-
用ruby的包管理工具 gem 安装这个模块
gem install -l redis-3.3.0.gem
-
通过ruby一键分配redis-cluster集群的槽位
#找到机器上的redis-trib.rb命令,用绝对命令创建 find / -name redis-trib.rb #开启集群 分配槽位 /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
-
- 六个节点 三个主节点被分配槽位,另外三个是从节点 ,负责从主节点复制数据
- 成功
- 分配好集群后,可以向集群内写入数据了
redis-cle -c #指定集群模式,登录数据库
- 登录redis写入数据,发现槽位分配,且重定向之后,集群搭建成功