Redis简介:
(1)REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
(2)Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。BSD:多用户、透明的。
(3)它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
(4)Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。(master节点写,slave节点读)
(5)Redis优势:
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
下面介绍Redis群集安装步骤:
环境:用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。
redis 采用 redis-3.2.11 版本。
两台虚拟机都是 CentOS ,一台 CentOS7(IP:192.168.188.132),一台 CentOS7(IP:192.168.188.133) 。
1.下载并解压:两台centos7都在/usr/local/目录下执行命令下载:
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
然后解压
tar -zxvf redis-3.2.11.tar.gz
2.编译安装:
cd redis-3.2.11
make
make install
3.将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src
cp redis-trib.rb /usr/local/bin/
4.创建 Redis 节点
A.首先在 192.168.188.132 机器上 /usr/local/redis-3.2.11 目录下创建 redis_cluster 目录;
mkdir redis_cluster
B.在 redis_cluster 目录下,创建名为7000、7001、7002的目录,并将 redis.conf 拷贝到这三个目录中:
cd redis_cluster
mkdir 7000 7001 7002
cp ../redis.conf 7000
cp ../redis.conf 7001
cp ../redis.conf 7002
C.分别修改这三个配置文件,修改如下内容:
port 7000 //端口7000,7001,7002
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
D.然后在另外一台机器上(192.168.188.133),的操作重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可
5.启动各个节点
在ip为192.168.188.132机器上执行,可以用ps –ef |grep redis验证是否启动成功。
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
运行界面如下:
在ip为192.168.188.133机器上执行,可以用ps –ef |grep redis验证是否启动成功。
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
运行界面如下:
6.创建集群
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。
redis-trib.rb create --replicas 1 192.168.188.132:7000 192.168.188.132:7001 192.168.188.132:7002 192.168.188.133:7003 192.168.188.133:7004 192.168.188.188:7005
其中,前三个 ip:port 为第一台机器的节点,剩下三个为第二台机器。
这时候会出错。
这个工具是用 ruby 实现的,所以需要安装 ruby。安装命令如下:
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
当执行gem install redis命令时候,是没有任何反应的、或者报版本不行:
解决办法:
报错原因:安装redis的话,ruby版本最低是2.3.0,而当前版本是1.8.7,所以无法安装
解决办法:升级ruby版本
注:直接下载ruby包来安装,速度快。
a、卸载当前ruby
yum remove ruby
b、下载ruby稳定版
cd /usr/local/src
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
c、安装ruby
tar -zxvf ruby-2.5.1.tar.gz
cd ruby-2.5.1
./configure --prefix=/usr/local/ruby
make
make install
d、查看安装后的版本
/usr/local/ruby/bin/ruby –v
e、设置环境变量
vi /etc/profile
最后添加
export PATH=$PATH:/usr/local/ruby/bin:
保存退出,执行
source /etc/profile
验证:
echo $PATH
f、镜像加速
此时使用gem install redis不会报错了,但是会发现很慢,为了更快速的安装,这里使用国内的镜像(https://gems.ruby-china.com/)
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem sources –l
g、安装
gem install redis
7、创建集群,在ip为192.168.188.132主机上执行
redis-trib.rb create --replicas 1 192.168.188.132:7000 192.168.188.132:7001 192.168.188.132:7002 192.168.188.133:7003 192.168.188.133:7004 192.168.188.188:7005
这时我出现了下面的问题:一直连不上另一台(192.168.188.133)虚拟机的节点。
原因是虚拟机没关防火墙,虚拟机要关闭防火墙或者限制不拦截Redis的外部访问:systemctl stop firewalld.service,关闭后互相ping一下彼此的IP。很重要的一步。成功页面如下:
输入 yes 即可,然后出现如下内容,说明安装成功。
8、集群验证
在第一台机器上连接集群的7002端口的节点,在另外一台连接7005节点,连接方式为:
redis-cli -h 192.168.31.245 -c -p 7002
加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
在第一台机器上:
在第二台机器上:
在7005节点执行命令 set username laozhang ,执行结果如下:
然后在另外一台7002端口,查看 key 为 username 的内容, get username ,执行结果如下:
说明集群运作正常。
到这里,Redis集群创建完毕。