安装redis-3.2.5
安装gcc
安装redis时make命令需要gcc执行:
yum install gcc
安装tcl
运行make test命令需要tcl:
yum install tcl
下载redis-3.2.5
cd /temp temp是自己创建的
wget http://download.redis.io/releases/redis-3.2.5.tar.gz
或者从别的地方copy到这个目录
解压
tar -zxvf /root/software/redis-3.2.5.tar.gz -C /usr/local/
安装
进入redis目录:cd /usr/local/redis-3.2.5
编译:make MALLOC=libc
安装:
进入scr目录:/usr/local/redis-3.2.5/src
安装:make install
测试:make test
测试安装情况:redis 的src目录下执行命令:./redis-server
注意:这里你Ctrl+C redis 会退出,你可以用守护进程的方式运行: ./redis-server &
接着执行命令: ./redis-cli -p 6379 这里可以去看看redis-cli的命令使用方法, -p 是端口,-h 是ip ,这里host 省略,就可以进入redis控制后台了.
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
或者 info 命令可以看到reids 相关信息.
将redis配置成服务并开机自启动
将启动脚本复制到/etc/rc.d/init.d/目录下,命名为redis:
cp /usr/local/redis-3.2.5/utils/redis_init_script /etc/rc.d/init.d/redis
编辑/etc/rc.d/init.d/redis文件,修改相应配置,使之能注册成为服务:
vi /etc/rc.d/init.d/redis
按i进入编辑模式,第一行后面添加一行内容为:#chkconfig: 2345 80 90 如果不添加,在注册服务的时候会提示:service redis does not support chkconfig
配置文件设置:
创建redis配置文件目录: mkdir /usr/local/redis-3.2.5/conf
复制redis配置文件/ usr/local/redis-3.2.5//redis.conf到目录/ usr/local/redis-3.2.5/conf下并按端口号命名为6379.conf:
cp /usr/local/redis-3.2.5/redis.conf /usr/local/redis-3.2.5/conf/6379.conf
修改服务内容:vi /etc/rc.d/init.d/redis
CONF="/usr/local/redis-3.2.5/conf/${REDISPORT}.conf"
$EXEC $CONF &
$EXEC $CONF &,&的作用是将服务转到后台运行
将redis注册成为服务:chkconfig --add redis
chkconfig –-list
防火墙开启对应端口:vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
重启防火墙:service iptables restart
或者
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
修改redis配置文件6379.conf:
vi /usr/local/redis-3.2.5/conf/6379.conf
daemonize no 改为daemonize yes
pidfile /var/run/redis.pid 改为pidfile /var/run/redis_6379.pid
注释掉绑定的主机,否则客户端无法连接 #bind 127.0.0.1
bind 192.168.74.230 ip地址
protected-mode yes 改为 protected-mode no
启动服务:service redis start
测试:redis-cli
- Redis集群的安装
前提
已经安装redis
这里的ip是192.168.74.230(虚拟机)
cd /usr/local/
mkdir /usr/local/redis_cluster
cd /usr/local/redis_cluster
mkdir conf
cd config
touch redis_7000.conf
vim redis_7000.conf
daemonize yes
pidfile /var/run/redis_7000.pid
port 7000
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 5000
appendonly yes
cp redis_7000.conf redis_7001.conf
cp redis_7000.conf redis_7002.conf
cp redis_7000.conf redis_7003.conf
cp redis_7000.conf redis_7004.conf
cp redis_7000.conf redis_7005.conf
文件如下:
记得把cp后的文件内容的端口相应的修改
字段说明:
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应
port 7000 //端口
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
启动
cd /usr/local
/usr/local/redis_cluster/conf
redis-server redis_cluster/conf/redis_7000.conf
redis-server redis_cluster/conf/redis_7001.conf
redis-server redis_cluster/conf/redis_7002.conf
redis-server redis_cluster/conf/redis_7003.conf
redis-server redis_cluster/conf/redis_7004.conf
redis-server redis_cluster/conf/redis_7005.conf
或者
./bin/redis-server cluster/conf/7000.conf
./bin/redis-server cluster/conf/7001.conf
./bin/redis-server cluster/conf/7002.conf
./bin/redis-server cluster/conf/7003.conf
./bin/redis-server cluster/conf/7004.conf
./bin/redis-server cluster/conf/7005.conf
查看进程
ps -ef | grep redis | grep cluster
准备创建集群环境
Redis 3.0以上的集群方式是通过Redis安装目录下的bin/redis-trib.rb脚本搭建,集群需要Ruby运行的环境
安装yum仓库
yum install centos-release-scl-rh
安装高版本的ruby
yum install -y ruby*
yum install rh-ruby23 -y
scl enable rh-ruby23 bash
https://rubygems.org/downloads/redis-3.3.3.gem 下载文件放到相应的目录(/root)
文件如下:
cd /root
./redis-3.3.3.gem
gem install redis //使用gem这个命令来安装redis接口
创建集群
进入redis安装目录(/usr/local/redis-3.2.5)
cd /usr/local/redis-3.2.5/src
./redis-trib.rb create --replicas 1 192.168.74.230:7000 192.168.74.230:7001 192.168.74.230:7002 192.168.74.230:7003 192.168.74.230:7004 192.168.74.230:7005
信息:
./redis-trib.rb create --replicas 1 192.168.74.230:7000 192.168.74.230:7001 192.168.74.230:7002 192.168.74.230:7003 192.168.74.230:7004 192.168.74.230:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.74.230:7000
192.168.74.230:7001
192.168.74.230:7002
Adding replica 192.168.74.230:7003 to 192.168.74.230:7000
Adding replica 192.168.74.230:7004 to 192.168.74.230:7001
Adding replica 192.168.74.230:7005 to 192.168.74.230:7002
M: 75e75574928408d8203ca0fff5d676a9c3938ae5 192.168.74.230:7000
slots:0-5460 (5461 slots) master
M: 1f9916f9440522249e1e978c1c49b0415949abfe 192.168.74.230:7001
slots:5461-10922 (5462 slots) master
M: ffd9597d48c1bca8ebf3439a55430c736aa37be1 192.168.74.230:7002
slots:10923-16383 (5461 slots) master
S: a4783abb6bfde696d62e91ba2cd0797e05c0fbf0 192.168.74.230:7003
replicates 75e75574928408d8203ca0fff5d676a9c3938ae5
S: 70be9c8f52d93801efd47d55a8bca82269e611f6 192.168.74.230:7004
replicates 1f9916f9440522249e1e978c1c49b0415949abfe
S: 062774d994866911afacb3f3b2354a345d2723e1 192.168.74.230:7005
replicates ffd9597d48c1bca8ebf3439a55430c736aa37be1
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.
>>> Performing Cluster Check (using node 192.168.74.230:7000)
M: 75e75574928408d8203ca0fff5d676a9c3938ae5 192.168.74.230:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: ffd9597d48c1bca8ebf3439a55430c736aa37be1 192.168.74.230:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: a4783abb6bfde696d62e91ba2cd0797e05c0fbf0 192.168.74.230:7003
slots: (0 slots) slave
replicates 75e75574928408d8203ca0fff5d676a9c3938ae5
S: 70be9c8f52d93801efd47d55a8bca82269e611f6 192.168.74.230:7004
slots: (0 slots) slave
replicates 1f9916f9440522249e1e978c1c49b0415949abfe
M: 1f9916f9440522249e1e978c1c49b0415949abfe 192.168.74.230:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 062774d994866911afacb3f3b2354a345d2723e1 192.168.74.230:7005
slots: (0 slots) slave
replicates ffd9597d48c1bca8ebf3439a55430c736aa37be1
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
表示成功
集群测试
连接:
redis-cli -c -h 192.168.74.230 -p 7000
查看节点信息
cluster info
结果:
cluster_state:ok #集群状态
cluster_slots_assigned:16384 #被分配的槽位数
cluster_slots_ok:16384 #正确分配的槽位
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6 #集群节点数
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_sent:747
cluster_stats_messages_received:747
查看集群节点信息:
cluster nodes
结果
192.168.74.230:7000> cluster nodes
ffd9597d48c1bca8ebf3439a55430c736aa37be1 192.168.74.230:7002 master - 0 1562543546418 3 connected 10923-16383
75e75574928408d8203ca0fff5d676a9c3938ae5 192.168.74.230:7000 myself,master - 0 0 1 connected 0-5460
a4783abb6bfde696d62e91ba2cd0797e05c0fbf0 192.168.74.230:7003 slave 75e75574928408d8203ca0fff5d676a9c3938ae5 0 1562543545407 4 connected
70be9c8f52d93801efd47d55a8bca82269e611f6 192.168.74.230:7004 slave 1f9916f9440522249e1e978c1c49b0415949abfe 0 1562543542570 5 connected
1f9916f9440522249e1e978c1c49b0415949abfe 192.168.74.230:7001 master - 0 1562543543321 2 connected 5461-10922
062774d994866911afacb3f3b2354a345d2723e1 192.168.74.230:7005 slave ffd9597d48c1bca8ebf3439a55430c736aa37be1 0 1562543544374 6 connected
在其中的一个节点插入一个key
set name wjq
结果:
192.168.74.230:7000> keys *
(empty list or set)
192.168.74.230:7000> set name wjq
-> Redirected to slot [5798] located at 192.168.74.230:7001
OK
192.168.74.230:7001>
连接另外节点查看信息
redis-cli -c -h 192.168.74.230 -p 7004
get name
结果:
192.168.74.230:7004> get name
-> Redirected to slot [5798] located at 192.168.74.230:7001
"wjq"
192.168.74.230:7001>
退出:
quit
开启防火墙
/sbin/iptables -I INPUT -p tcp --dport 7000 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 7001 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 7002 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 7003 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 7004 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 7005 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
在windows中测试防火墙有端口有没有开启成功
telnet 192.168.74.230 7001