
Docker安装单机
1 2 3 4 5 6 7 8
| docker run \ -p 6379:6379 \ --name myredis \ -v $PWD/redis.conf:/etc/redis/redis.conf \ -v $PWD/data:/data \ -d redis:3.2 redis-server /etc/redis/redis.conf \ --restart=always \ --appendonly yes
|
命令说明:
--name myredis
: 指定容器名称,这个最好加上,不然在看docker进程的时候会很尴尬。
-p 6699:6379
: 端口映射,默认redis启动的是6379,外部端口(6699)。
-v $PWD/redis.conf:/etc/redis/redis.conf
: 将主机中当前目录下的redis.conf配置文件映射。
-v $PWD/data:/data -d redis:latest
: 将主机中当前目录下的data挂载到容器的/data
--redis-server --appendonly yes
:在容器执行redis-server启动命令,并打开redis持久化配置
--restart=always
:自动启动
- 注意事项:
- 如果不需要指定配置,
-v $PWD/redis.conf:/etc/redis/redis.conf
可以不用
- redis-server 后面的那段
/etc/redis/redis.conf
也可以不用。
$PWD
在window系统下貌似不能用,可以用相对路径/
客户端连接
1 2 3 4
| # 先查询到myredis容器的ip地址。 docker inspect myredis | grep IP # 连接到redis容器。然后就进入redis命令行了。 docker run -it redis:latest redis-cli -h 192.168.42.32
|
源码安装单机
centos下安装
1 2 3 4 5 6 7 8 9 10
| # 安装需要的软件 yum -y install gcc gcc-c++ kernel-devel make
# 下载redis wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar -zxvf redis-5.0.5.tar.gz cd redis-5.0.5
# 安装redis make && make instal
|
注意make的时候可能会报错,
1 2
| yum install gcc make MALLOC=libc
|
开机启动
启动脚本 redis_init_script
位于位于Redis
的 /utils/
目录下。
大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # redis服务器监听的端口 REDISPORT=6379
# 服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。 EXEC=/usr/local/bin/redis-server
# 客户端位置 CLIEXEC=/usr/local/bin/redis-cli
# Redis的PID文件位置 PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改 CONF="/etc/redis/${REDISPORT}.conf"
|
根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录。需使用root用户。
1 2
| mkdir /etc/redis cp redis.conf /etc/redis/6379.conf
|
将启动脚本复制到/etc/init.d
目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)
1
| cp redis_init_script /etc/init.d/redisd
|
设置为开机自启动
此处直接配置开启自启动 chkconfig redisd on
将报错误: service redisd does not support chkconfig
1 2 3 4
| #!/bin/sh # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database #
|
再设置即可成功。
1 2 3 4 5 6
| #设置为开机自启动服务器 chkconfig redisd on #打开服务 service redisd start #关闭服务 service redisd stop
|
添加到PATH
由于redis-cli命令没有设置到PATH中,每次想使用时,都需要执行find命令去找这个命令在哪里
1
| # find / -name redis-cli
|
找到之后, 再执行命令, 这样实在太麻烦
解决方案:
将redis-cli
命令配置到PATH
中,这样每次使用时,就像ls
这种命令一样不加路径执行
将redis-cli
命令路径配置到PATH
中
1
| PATH=$PATH:$HOME/bin:/usr/local/redis-3.2.8/src/
|
保存之后, 使用source命令使之生效
1
| # source ~/.bash_profile
|
源码安装集群Redis-cluster
1.配置
用一台虚拟机模拟6个节点,创建出3 master、3 salve 环境。
2.下载,解压,编译安装
3.创建节点,在worker1
创建文件
1 2 3 4 5 6 7 8 9 10 11 12
| cd /usr/local mkdir redis_cluster cd redis_cluster mkdir 7000 mkdir 7001 mkdir 7002 cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7000/ cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7001/ cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7002/ cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7003/ cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7004/ cp /usr/local/redis-5.0.5/redis.conf /usr/local/redis_cluster/7005/
|
分别修改三个文件夹里的配置文件,修改如下内容
1 2 3 4 5 6 7 8
| port 7000 //端口7000,7002,7003,7004,7005,7001 bind 0.0.0.0 //自己建议修改为0.0.0.0 daemonize yes //redis后台运行 pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002 cluster-enabled yes //开启集群 把注释#去掉 cluster-config-file nodes_7000.conf //集群的配置,配置文件首次启动自动生成7000,7001,7002 cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置 appendonly yes //aof日志开启
|
启动节点的redis
/usr/local/bin/redis-server
这是在make & make install
生成的
1 2 3 4 5 6
| /usr/local/bin/redis-server redis_cluster/7000/redis.conf /usr/local/bin/redis-server redis_cluster/7001/redis.conf /usr/local/bin/redis-server redis_cluster/7002/redis.conf /usr/local/bin/redis-server redis_cluster/7003/redis.conf /usr/local/bin/redis-server redis_cluster/7002/redis.conf /usr/local/bin/redis-server redis_cluster/7002/redis.conf
|
检查 redis 启动情况
1 2 3 4 5 6 7
| ps -ef | grep redi root 61020 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7000 [cluster] root 61024 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7001 [cluster] root 61029 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7002 [cluster] root 61029 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7002 [cluster] root 61029 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7002 [cluster] root 61029 1 0 02:14 ? 00:00:01 redis-server 0.0.0.0:7002 [cluster]
|
4.再在worker2 上做相同的操作
5.启动集群
装的redis是5.x的版本,这里没有应用到redis-trib.rb
,所以就不需要装ruby
1 2
| cd /usr/local/bin redis-cli --cluster create 192.168.0.100:7003 192.168.0.100:7004 192.168.0.100:7005 192.168.0.179:7000 192.168.0.179:7001 192.168.0.179:7002 --cluster-replicas 1
|
遇到
1
| Can I set the above configuration? (type 'yes' to accept): yes
|
如数yes
6.校验,等运行完成
redis-cli --cluster check 192.168.0.179:7000
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
| [[email protected] src]# redis-cli --cluster check 192.168.0.179:7000 192.168.0.179:7000 (27bce53b...) -> 0 keys | 5462 slots | 1 slaves. 192.168.0.100:7004 (6b0173d9...) -> 0 keys | 5461 slots | 1 slaves. 192.168.0.100:7003 (9f15a932...) -> 0 keys | 5461 slots | 1 slaves. [OK] 0 keys in 3 masters. 0.00 keys per slot on average. >>> Performing Cluster Check (using node 192.168.0.179:7000) M: 27bce53bda92341ca4a5c82c2361ab99f24c0b27 192.168.0.179:7000 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: c7ebcd900fb7d9afb1980797acba45518cb7d877 192.168.0.100:7005 slots: (0 slots) slave replicates 27bce53bda92341ca4a5c82c2361ab99f24c0b27 S: ed5256f8db1bf556a8dadbe8f2b07699507e17d9 192.168.0.179:7001 slots: (0 slots) slave replicates 6b0173d925f70807a9081b7bc09bcd37be857342 S: 758609eaea88bac25b864f2badbab2171a68089b 192.168.0.179:7002 slots: (0 slots) slave replicates 9f15a9329a9d0ec5c7fcb5abbba817730f0942f9 M: 6b0173d925f70807a9081b7bc09bcd37be857342 192.168.0.100:7004 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: 9f15a9329a9d0ec5c7fcb5abbba817730f0942f9 192.168.0.100:7003 slots:[0-5460] (5461 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
|
7.主机上下线
8.Cluster配置
1 2 3 4 5 6 7 8 9 10 11 12
| # 设置加入cluster,成为其中的节点 cluster-enabled yes|no
# cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容 cluster-config-file < filename>
# 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点 cluster-node-timeout < milliseconds>
# master连接的slave最小数量 cluster-migration-barrier < count>
|
9.Cluster节点操作命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 查看集群节点信息 cluster nodes
# 进入一个从节点redis,切换其主节点 cluster replication < master-id>
# 发现一个新节点,新增主节点 cluster meet ip:port
# 忽略一个没有solt的节点 cluster forget
# 手动故障转移 cluster failover
|
源码安装主从
看着已经要过时了,不搞了