1、概述:
redis是一种工作在内存里no-sql的非关系型数据库,广泛应用于缓存需求,以减少大量的数据访问对数据库的压力,还很适合用来充当整个互联网架构中各级之间的cache 比如lvs的4层转发层 nginx的7层代理层
虽然是工作在内存中,但官方也提供了数据可持续化方案,目前有三种:aof\rdb\point
aof 就像是mysql数据库的binlog日志,将每一次写操作以追加的形式记录在其中以文件的形式刷到磁盘里
rdb 则是一种快照机制,redis工作在内存中 rdb就是每隔一段时间,对内存中的数据做一次快照,保存在rdb文件中
point 在redis4.0的新特性中 采用了aof-rdb的混合方案来保障数据的持久性 但是官方的说法是还不成熟
2、安装
下载redis,我这里使用的是redis-3.0.7.tar.gz,将它放在/usr/local/src下
[root@CentOS7 redis-3.0.7]# make PREFIX=/usr/local/redis install
解压redis-3.0.7.tar.gz进入解压目录运行redis-server,但这种运行方式是以前台的方式运行,运行后就不可以再输入其它的命令,将/usr/local/src/redis-3.0.7/redis.conf里的daemonize yes改为daemonize no
然后再以这种方式进行运行
[root@CentOS7 bin]# ./redis-server ../../src/redis-3.0.7/redis.conf
安装rubdy
[root@CentOS7 src]# yum install ruby rubygems -y
安装ruby和redis的接口程序
[root@CentOS7 src]# gem install redis
遇到报错信息
Fetching: redis-4.0.2.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
那么利用rvm来安装高版本的ruby
[root@CentOS7 src]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
[root@CentOS7 src]# curl -sSL https://get.rvm.io | bash -s stable
[root@CentOS7 src]# source /usr/local/rvm/scripts/rvm
[root@CentOS7 src]# rvm install 2.4.4
使用新版本ruby生效并安装ruby和redis的接口
[root@CentOS7 src]# rvm use 2.4.4
Using /usr/local/rvm/gems/ruby-2.4.4
[root@CentOS7 src]# rvm use 2.4.4 --default
Using /usr/local/rvm/gems/ruby-2.4.4
[root@CentOS7 src]# ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]
[root@CentOS7 src]# gem install redis
Fetching: redis-4.0.2.gem (100%)
Successfully installed redis-4.0.2
Parsing documentation for redis-4.0.2
Installing ri documentation for redis-4.0.2
Done installing documentation for redis after 0 seconds
1 gem installed
在/usr/local下创建redis-cluster文件夹,并在其文件夹下创建7001~7006的目录
并将源码里的redis-trib.rb拷贝到此目录下
[root@CentOS7 redis-cluster]# cp /usr/local/src/redis-3.0.7/src/redis-trib.rb /usr/local/redis-cluster/redis-trib.rb
将之前安装redis的bin目录下的文件和配置文件分别拷贝到7001~7006,并修改配置
port 7001
cluster-enabled yes
分别修改完成之后 ,分别至7001~7006的文件内,分另启动redis-cluster
[root@CentOS7 redis-cluster]# cd 7001
[root@CentOS7 7001]# ./redis-server redis.conf
这样就可以执行集群的创建命令了,至/usr/local/redis-cluster下
[root@CentOS7 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.133.159:7001 192.168.133.159:7002 192.168.133.159:7003 192.168.133.159:7004 192.168.133.159:7005 192.168.133.159:7006
其中的“1”代表的一主有一个从的节点,而集群最少要有三个节点,这样一主一从,即6台服务器了
有其它博主遇到过以下的错误信息
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决方案为(本人没有遇到类似的错误,但感觉遇到的人不少,记录在这里一下)
解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb