Linux下搭建 redis
一、下载redis
这个可以到官网下载,直接在百度里面搜索redis
二、安装redis
1、安装gcc
| 1 |
yum install gcc-c++
|
2、解压redis文件并且重命名
| 1 2 3 |
[root@localhost local]#tar -zxvf /root/redis-3.2.12.tar.gz -C /usr/local/
[root@localhost local]# cd /usr/local/
[root@localhost local]# mv redis-3.2.12/ mv redis
|
3、编译redis
| 1 2 3 |
[root@localhost local]# cd redis
[root@localhost local]# make
[root@localhost local]# make PREFIX=/usr/local/redis install
|
4、测试一下是否已经安装好
| 1 2 |
[root@localhost redis]# cd /usr/local/redis/bin
[root@localhost bin]# ./redis-server
|
显示内容如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
9190:C 03 Sep 10:19:09.291 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
9190:C 03 Sep 10:19:09.292 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=9190, just started
9190:C 03 Sep 10:19:09.292 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
9190:M 03 Sep 10:19:09.295 * Increased maximum number of open files to 10032 (it was originally set to 1024).
9190:M 03 Sep 10:19:09.312 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0.1 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 9190
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
9190:M 03 Sep 10:19:09.316 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
9190:M 03 Sep 10:19:09.316 # Server initialized
9190:M 03 Sep 10:19:09.318 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
9190:M 03 Sep 10:19:09.318 * Ready to accept connections
|
三、加入开机启动
1、加入开机启动
| 1 2 |
[root@localhost local]# cd /usr/local/redis/utils
[root@localhost utils]# cp redis_init_script /etc/init.d/redis
|
2、编辑启动文件
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[root@localhost utils]# vim /etc/init.d/redis
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server #指向正确的bin地址
CLIEXEC=/usr/local/redis/bin/redis-cli #这边同上
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
|
3、创建配置文件
| 1 2 3 4 5 6 7 |
[root@localhost local]# mkdir /etc/redis
[root@localhost local]# cp /usr/local/redis/redis.conf /etc/redis/6379.conf
[root@localhost local]# cd /etc/redis/
[root@localhost redis]# vim 6379.conf
#bind 127.0.0.1 #这一行注释
protected-mode no #改成no 表示无需密码登录
daemonize yes #改成yes
|
4、启动redis
| 1 2 3 4 |
[root@localhost local]# service redis start
[root@localhost local]# ps -ef|grep redis
root 60252 1 0 15:27 ? 00:00:00 /usr/local/redis/bin/redis-server *:6379
root 61165 48206 0 15:44 pts/0 00:00:00 grep --color=auto redis
|
四、redis集群配置
4.1、yum安装下载依赖的插件
| 1 2 3 4 5 6 7 |
yum install ruby -y
yum install rubygems -y
yum -y install ruby ruby-devel rubygems rpm-build
ruby -version
yum install centos-release-scl-rh
scl enable rh-ruby23 bash
gem install redis
|
4.2、必须准备6个redis,因为是3主3从,所以不得小于6台:
安装上述安装redis的办法,在装5台,分别是,分别装在:/usr/local目录下:
| 1 2 3 4 5 6 |
redis_6379
redis_6380
redis_6381
redis_6382
redis_6383
redis_6384
|
同时启动文件和配置文件也,配置文件在: /etc/redis/下:
| 1 2 |
[root@shtw-redisserver09 redis]# ls
6379.conf 6380.conf 6381.conf 6382.conf 6383.conf 6384.conf
|
配置文件内容如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#bind 127.0.0.1 #注释掉
port 6380 #端口号需要修改
tcp-backlog 511
timeout 0
tcp-keepalive 300
supervised no
pidfile /var/run/redis_6380.pid #进程号修改
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
cluster-enabled yes #开启集群模式
appendonly yes
cluster-config-file nodes-6380.conf
latency-monitor-threshold 0
notify-keyspace-events ""
list-max-ziplist-size -2
list-compress-depth 0
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
hz 10
aof-rewrite-incremental-fsync yes
|
完整的文件内容:
6380.conf上传 redis-trib.rb 文件至/usr/local下:
| 1 2 3 4 |
[root@shtw-redisserver09 local]# cd /usr/local/
[root@shtw-redisserver09 local]# rz -y
[root@shtw-redisserver09 local]# ll
-rwxr-xr-x 1 root root 60852 Aug 23 2019 redis-trib.rb
|
redis-trib.rb下载地址:https://pan.baidu.com/s/1NqwED60Z9ggiZPOJIco7rA 提取码:tn8d
然后执行如下命令:
| 1 2 3 4 5 |
[root@shtw-redisserver09 local]#./redis-trib.rb create --replicas 1 10.10.202.236:6379 10.10.202.236:6380 10.10.202.236:6381
10.10.202.236:6382 10.10.202.236:6383 10.10.202.236:6384 #如果上述成功了之后,下面的就不要执行了
[root@shtw-redisserver09 local]#./redis-trib.rb create --replicas 2 10.10.202.236:6379 10.10.202.236:6380 10.10.202.236:6381
10.10.202.236:6382 10.10.202.236:6383 10.10.202.236:6384
|
重启报错:
>>> Creating cluster
[ERR] Node 127.0.0.1:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决方法:删除nodes-xxx.conf配置文件,删除pid文件,删除各节点aof,rdb文件,杀掉所有redis进程,然后重启redis集群搞定