使用一台linux模拟6台(ip相同,实质是端口不同,即六个端口模拟六台服务器)
注意:搭建服务器之前需要先把redis给搭建好,redis基本配置
1.需要在redis文件夹的根目录(不是服务器的“/”根目录)
1.1创建一个文件夹redis_cluster
mkdir redis_cluster
1.2进入创建好的文件夹,再次创建6个文件夹(6个文件夹的名称分别为redis的端口号,redis默认端口号是6379,因此只能从6380开始)
mkdir 6380
mkdir 6381
mkdir 6382
mkdir 6383
mkdir 6384
mkdir 6385
1.3进入6380文件夹,创建一个redis.conf文件,并且copy到其他5个
touch redis.conf
1.4分别编辑这6个redis.conf文件 (注意ip和端口的不同)
vi redis.conf
##并且copy如下代码(要改成不同端口号):
daemonize yes
pidfile redis_6380.pid
logfile redis_6380.log
appendonly yes
bind 192.168.242.10
port 6380
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
2.启动6台redis数据库
2.1进入redis的src目录进行启动
cd /redis/src
./redis-server ../redis_cluster/6380/redis.conf
./redis-server ../redis_cluster/6381/redis.conf
./redis-server ../redis_cluster/6382/redis.conf
./redis-server ../redis_cluster/6383/redis.conf
./redis-server ../redis_cluster/6384/redis.conf
./redis-server ../redis_cluster/6385/redis.conf
如何查看redis是否启动成功(通过查看redis的进程信息)
ps -ef |grep redis
root 5801 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6380 [cluster]
root 5805 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6381 [cluster]
root 5809 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6382 [cluster]
root 5813 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6383 [cluster]
root 5817 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6384 [cluster]
root 5821 1 0 02:44 ? 00:00:00 ./redis-server 192.168.1.112:6385 [cluster]
2.2启动成功redis数据库后,需要创建集群
注意一下!从此处开始各种报错!!!能让人崩溃,没毅力的就不要再向下看了,上面的就可以了
进入redis的src目录创建集群
./redis-trib.rb create --replicas 1 192.168.1.112:6380 192.168.1.112:6381 192.168.1.112:6382 192.168.1.112:6383 192.168.1.112:6384 192.168.1.112:6385
2.2.1.报错
/usr/bin/env: ruby: No such file or directory
安装ruby
yum -y install ruby
2.2.2.安装成功后需要再次创建集群(同上面建集群的命令一样)
再次执行创建集群的命令后,报错
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
报错原因:因为ruby的当前版本和rubygems不一致,也就是rubygems的版本低
下载高版本的rubygems
rpm -ivh rubygems-1.8.25-1.el6.R.noarch.rpm(在压缩包旁边使用该命令)
此时会报如下错误:
warning: rubygems-1.8.25-1.el6.R.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID dbb6c70d: NOKEY
error: Failed dependencies:
ruby-rdoc is needed by rubygems-1.8.25-1.el6.R.noarch
说明需要先将rubygems依赖的软件先安装好,即将ruby-irb和ruby-rdoc先安装:
yum install ruby-irb ruby-rdoc
然后再执行上面安装
rubygems-1.8.25-1.el6.R.noarch.rpm的命令(即:rpm -ivh rubygems-1.8.25-1.el6.R.noarch.rpm),出现如下信息,说明安装成功了:
Preparing... ########################################### [100%]
1:rubygems ########################################### [100%]
2.2.3.再次创建集群
在redis目录的src文件夹下执行命令:
gem install redis
报错
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
2.2.4更新ruby版本
2.2.4.1.安装CURL
sudo yum install curl
2.2.4.2.安装RVM
curl -L get.rvm.io | bash -s stable
报错:
curl: (35) SSL connect error
解决:
无法在服务器使用curl命令访问https域名,原因是nss版本有点旧了,
yum -y update nss
更新一下,重新curl即可!
再次报错信息:
报错
Downloading https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc
Warning, RVM 1.26.0 introduces signed releases and automated check of signatures when GPG software found. Assuming you trust Michal Papis import the mpapis public key (downloading the signatures).
GPG signature verification failed for '/usr/local/rvm/archives/rvm-1.29.3.tgz' - 'https://github.com/rvm/rvm/releases/download/1.29.3/1.29.3.tar.gz.asc'! Try to install GPG v2 and then fetch the public key:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
or if it fails:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
the key can be compared with:
https://rvm.io/mpapis.asc
https://keybase.io/mpapis
NOTE: GPG version 2.1.17 have a bug which cause failures during fetching keys from remote server. Please downgrade or upgrade to newer version (if available) or use the second method described above.
解决办法:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - (解决key无法找寻问题)
2.2.4.3.key的问题解决后,继续执行:curl -L get.rvm.io | bash -s stable ,再次安装RVM
出现如下说明,安装成功
Creating group 'rvm'
Installing RVM to /usr/local/rvm/
Installation of RVM in /usr/local/rvm/ is almost complete:
2.2.4.4.使其刚才安装RVM立即生效
source /usr/local/rvm/scripts/rvm
2.2.4.5.查询ruby的已知版本
rvm list known
2.2.4.6.选择一个版本进行安装(一定要大于等于2.2.2)
rvm install 2.4
2.2.4.7.需要把ruby的版本换成2.4
rvm use 2.4
2.2.4.8.把以前的版本卸载 (虽然不知道版本,可以随便卸载一个)
rvm remove 2.0.0
2.2.4.9.是否使用了2.4.1版本
rvm --version
如果查询出来的版本不是2.4以上,那么继续卸载
2.2.5再次创建集群
gem install redis
安装成功信息:
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed
安装成功
创建集群
并执行如下命令:
./redis-trib.rb create --replicas 1 192.168.1.112:6380 192.168.1.112:6381 192.168.1.112:6382 192.168.1.112:6383 192.168.1.112:6384 192.168.1.112:6385
2.2.6.查看集群是否确定创建成功
进入(连接)redis数据库,
首先需要在redis的src目录下执行
./redis-cli -h 192.168.1.112 -c -p 6380
2.3.测试对redis数据库进行操作
新增数据
set key value([{},{},{},{},{}])
如果新增成功,会返回一个字符串(OK)
查询数据
get key
删除数据
del key,如果成功后会返回1,如果失败会返回0
注意:
在redis数据库中(redis的缓存)是没有修改这一项,也就是没有update操作
2.3.1自增数字 oracle:sequeneces mysql:auto increnment
incr key:使key对应value自行自增(+1)注意:所有的incr修饰的key对应的value都是数字类型,最常用的地方是订单系统的id匹配和物流单号
incr k1
Integer value = get k1;
if(value == null) {
set k1 1;
}
incr k1;
2.3.2自减数字 decr key实现key所对应的value的自减
如果使用decr时,value的值小于0的时候,是有负数的,不会报错!!!
2.3.4设置redis缓存失效时间
expire key time(senconds),如果缓存失效时间设置成功,返回1
如果设置缓存失效的时候为负数,则会直接失效(删除)
2.4.退出redis缓存
exit