原文:https://blog.csdn.net/HcJsJqJSSM/article/details/85345196
介绍
Redis是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server (远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统),支持丰富的数据类型,如:String、list、set、zset、hash。
Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。使用C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
Redis的存储分为内存存储、磁盘存储和log文件。
Redis支持主从模式,可以配置集群,更利于支撑大型的项目。
redis是nosql,也是分布式。slave作为master的备份。
环境介绍
我用的是个集群,但是集群只有五台,所以有一个服务器上既有slave又有master。
配置
1.下载编译
下载redis:
https://redis.io/
由于下载的redis是6.0的,所以需要gcc9版本以上
gcc -v
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
临时换成gcc9:scl enable devtoolset-9 bash
在/etc/profile添加:
/opt/rh/devtoolset-9/enable
然后:
source /etc/profile
接着gcc编译:
tar -zxvf redis-6.0.8.tar
cd redis-6.0.8
make
cd src
make install PREFIX=/usr/redis
2.配置节点
2.1将redis传给各个服务器
scp -r /usr/redis hadoop@192.168.199.136:/usr/
2.2配置文档
在每个服务器上分别创建节点,例如:
cd /usr/redis
mkdir -p cluster-conf/6380
将src中的redis.conf移到cluster-conf/6380
修改redis.conf
port 6380 //六个节点配置文件分别是6380-6385
bind 192.168.1.109 //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访,和单机集群有区别
daemonize yes //redis后台运行
pidfile /var/run/redis_6380.pid //pidfile文件对应7001-7003
cluster-enabled yes //开启集群
cluster-config-file nodes_6380.conf //保存节点配置,自动创建,自动更新对应6380-6385
cluster-node-timeout 5000 //集群超时时间,节点超过这个时间没反应就断定是宕机
appendonly yes //存储方式,aof,将写操作记录保存到日志中
6380-6385的6个配置文件都修改一下.根据所在目录修改即可.
每个服务器类似于上述操作。
由于是安装redis集群所以需要rubby,可以只在创建节点的服务器安装:
sudo yum install curl
curl --version
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
这里可能会连不上,需要在/etc/hosts添加host
199.232.28.133 raw.githubusercontent.com
然后:
find / -name rvm -print
source /usr/local/rvm/scripts/rvm
rvm list known
rvm install 2.4.1
rvm use 2.4.1
rvm use 2.4.1 --default
rvm remove 2.0.0
ruby --version
gem install redis
3.启动redis-server
每台服务器启动相应的redis节点
bin目录下,执行:
./redis-server ../cluster_conf/6380/redis.conf
查看redis进程
ps -ef | grep redis
创建master/slave redis集群,例如:
./redis-cli --cluster create 192.168.233.68:6380 192.168.233.76:6381 192.168.233.27:6382 192.168.233.80:6383 192.168.233.248:6384 192.168.233.68:6385 --cluster-replicas 1
cluster-replicas 1是给每一个master自动分配一个slave
4.检查redis集群
检查集群,查看master对应的salve
redis-cli -h 192.168.233.68 -p 6380 cluster nodes
可以看到:
e209002d26e08cf9c00e2ae134b8f8fdd8cce0b4 192.168.233.248:6384@16384 slave ac3859bacf151da51486c42690ad18f764210d7e 0 1601016306063 1 connected
4c98393de1caa88abe2660724ea50eb26092e304 192.168.233.80:6383@16383 slave 50b1ab8cb2ba25b8023327eab02ff6c50779ebc4 0 1601016307067 3 connected
138bf7e370868adea14295c3de3aad9cde00090f 192.168.233.76:6381@16381 master - 0 1601016305561 2 connected 5461-10922
50b1ab8cb2ba25b8023327eab02ff6c50779ebc4 192.168.233.27:6382@16382 master - 0 1601016305561 3 connected 10923-16383
c83d6e9385f766369e0e67b69a746c19db0e8c6b 192.168.233.68:6385@16385 slave 138bf7e370868adea14295c3de3aad9cde00090f 0 1601016307000 2 connected
ac3859bacf151da51486c42690ad18f764210d7e 192.168.233.68:6380@16380 myself,master - 0 1601016305000 1 connected 0-5460
上面可以看到每个master的编号对应一个slave
尝试查看name,并且给master添加数据
redis-cli -h 192.168.233.248 -p 6384 -c
192.168.233.68:6380> get name
-> Redirected to slot [5798] located at 192.168.233.76:6381
(nil)
192.168.233.76:6381> set foo bar
-> Redirected to slot [12182] located at 192.168.233.27:6382
OK
192.168.233.27:6382> get foo
"bar"
进入对应slave查看foo,或者任意节点检查
redis-cli -h 192.168.233.248 -p 6384 -c
192.168.233.248:6384> get foo
-> Redirected to slot [12182] located at 192.168.233.27:6382
"bar"
192.168.233.27:6382>