linux redis 依赖包,Linux 下安装 Redis 6.0.3

前言

​ Redis 都已经发布到 6 版本了, 正好本地要搭建, 那么就来体验一下最新版, 然而安装过程还是有点曲折的, 最起码对 Linux 环境及编译工具有要求, 可详见问题.

​ Redis 6 还是有很多更新的, 毕竟引入了 threads, 更快, 更快

​ 另外在浏览 Redis 网站时, 发现维护的真好, 上面各种资料说明都有, 虽然是英文版,但是还是建议有时间读一下. 因为你看到的所有关于 Redis Cluster 的博客, 内容都是来自官网的一段说明, 连总结都谈不上. 比如 Redis 5 及之后开始支持 redis-cli 来创建 cluster , 版本 3 和4 还是使用的ruby. 这也是解了我的疑惑, 为啥在 window 安装还需要ruby. 这样的说明在哪里? 还有其他的资讯官网上都有描述, 参考资料上附有直达链接, 也可访问 redis 官网查找

​ Redis 集群至少需要3个节点,因为投票容错机制要求超过半数,所以2个节点无法构成集群。要保证集群的高可用,需要每个节点都有从节点,所以 Redis 集群至少需要6台服务器。

闲言已叙. Go! Go! Go!

环境

​ CentOS Linux release 7.6

1. 安装依赖包

yum -y install gcc automake autoconf libtool make

2. 下载redis安装包

cd /usr/local

wget http://download.redis.io/releases/redis-6.0.3.tar.gz

​ 解压、编译与安装

tar xzf redis-6.0.3.tar.gz

cd redis-6.0.3

make MALLOC=libc & make install

3. 开始搭建集群

​ 创建 redis 节点(在 /usr/local/redis-6.0.3 目录下)

mkdir cluster

​ 创建节点目录,并将 redis.conf 文件复制到 7001 节点目录下

cd cluster && mkdir 7001 7002 7003 7004 7005 7006

​ 修改 7001/redis.conf 配置文件

# 是否要用守护线程的方式启动

daemonize yes

# 分别对每个机器的端口号进行设置

port 7001

# 指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据

dir /usr/local/redis-6.0.3/cluster/7001/

# 启动集群模式

cluster-enabled yes

# 集群节点信息文件,这里 700x 最好和 port 对应上,redis 会自动创建 nodes-XX.conf不需要手动创建

cluster-config-file nodes-7001.conf

cluster-node-timeout 5000

# 关闭保护模式

protected-mode no

appendonly yes

##### 如果要设置密码需要增加如下配置:

# 设置 redis 访问密码

requirepass 123456

# 设置集群节点间访问密码,跟上面一致

masterauth 123456

​ 将 7001/redis.conf 复制到其他目录, 并修改为各自的配置

cd /usr/local/redis-6.0.3/cluster

cp 7001/redis.conf 7002

cp 7001/redis.conf 7003

cp 7001/redis.conf 7004

cp 7001/redis.conf 7005

cp 7001/redis.conf 7006

# 下面是将批量修改 700x

sed -i "s/7001/7002/g" 7002/redis.conf

sed -i "s/7001/7003/g" 7003/redis.conf

sed -i "s/7001/7004/g" 7004/redis.conf

sed -i "s/7001/7005/g" 7005/redis.conf

sed -i "s/7001/7006/g" 7006/redis.conf

​ 启动节点

cd /usr/local/redis-6.0.3

src/redis-server cluster/7001/redis.conf

src/redis-server cluster/7002/redis.conf

src/redis-server cluster/7003/redis.conf

src/redis-server cluster/7004/redis.conf

src/redis-server cluster/7005/redis.conf

src/redis-server cluster/7006/redis.conf

​ 创建集群

/usr/local/redis-6.0.3/src/redis-cli --cluster create --cluster-replicas 1 192.168.0.1:7001 192.168.0.1:7002 192.168.0.1:7003 192.168.0.1:7004 192.168.0.1:7005 192.168.0.1:7006

​ 注意,上面的 ip 要替换为本机IP。如果设定了密码之后, 后面添加 -a 密码值 即可

4. 测试

src/redis-cli -h 192.168.0.1 -p 7001 -a 123456

get test

(error) MOVED 6918 192.168.0.1:7005

​ 注意那个 error , 说明没有启动集群模式(即缺少了那个"-c"), 换成以下方式即可

src/redis-cli -c -h 192.168.0.1 -p 7001 -a 123456

​ 之后 get test 会跳转到相应的服务节点, 获取数据

# 查看集群信息

src/redis-cli -p 7001 -a 123456 cluster nodes

# 结果

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

8c10abba0f2899dad3be219e216cc0bf69c66d1b 192.168.0.1:7003@17003 master - 0 1590540040583 3 connected 10923-16383

4b89fb185b98fd545aebe75f5ea5f8d6b817d5dd 192.168.0.1:7004@17004 slave 8b2f9a6f7b6fd5e44c546c38206f87e43f33361f 0 1590540040583 4 connected

63b6901ad65de101fa7eff2308dac21277799b6b 192.168.0.1:7002@17002 master - 0 1590540039581 2 connected 5461-10922

8b2f9a6f7b6fd5e44c546c38206f87e43f33361f 192.168.0.1:7001@17001 myself,master - 0 1590540040000 1 connected 0-5460

08b65c951b7fa1d99c317aae68243adbb2e0892c 192.168.0.1:7005@17005 slave 63b6901ad65de101fa7eff2308dac21277799b6b 0 1590540041585 5 connected

96c2dee8f791cc78d46b706d728d1d2c045b5396 192.168.0.1:7006@17006 slave 8c10abba0f2899dad3be219e216cc0bf69c66d1b 0 1590540041585 6 connected

5. 问题

​ 问题一

cd src && make all

make[1]: Entering directory `/usr/local/redis-6.0.3/src'

Makefile.dep:25: *** missing separator. Stop.

make[1]: Leaving directory `/usr/local/redis-6.0.3/src'

make: *** [all] Error 2

​ 解决方式: 只要前面 yum 安装依赖包没有问题, 可能会很少出现此问题. 我这边是由于 解压的指令不对, 导致一致报这个问题,后面删除掉解压包, 重新解压, 看到了问题二

​ 问题二

server.c:5170:15: error: ‘struct redisServer’ has no member named ‘maxmemory’

if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {

^

server.c:5170:39: error: ‘struct redisServer’ has no member named ‘maxmemory’

if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {

^

server.c:5171:176: error: ‘struct redisServer’ has no member named ‘maxmemory’

serverLog(LL_WARNING,"WARNING: You specified a maxmemory value that is less than 1MB (current value is %llu bytes). Are you sure this is what you really want?", server.maxmemory);

^

server.c:5174:31: error: ‘struct redisServer’ has no member named ‘server_cpulist’

redisSetCpuAffinity(server.server_cpulist);

^

server.c: In function ‘hasActiveChildProcess’:

server.c:1476:1: warning: control reaches end of non-void function [-Wreturn-type]

}

^

server.c: In function ‘allPersistenceDisabled’:

server.c:1482:1: warning: control reaches end of non-void function [-Wreturn-type]

}

^

server.c: In function ‘writeCommandsDeniedByDiskError’:

server.c:3789:1: warning: control reaches end of non-void function [-Wreturn-type]

}

^

server.c: In function ‘iAmMaster’:

server.c:4966:1: warning: control reaches end of non-void function [-Wreturn-type]

}

^

make[1]: *** [server.o] Error 1

make[1]: Leaving directory `/usr/local/redis-6.0.3/src'

make: *** [all] Error 2

​ 解决办法:

# 查看 gcc 版本是否在5.3以上,centos7.6默认安装4.8.5

gcc -v

# 升级gcc到5.3及以上,如下:

# 升级到gcc 9.3:

yum -y install centos-release-scl

yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

scl enable devtoolset-9 bash

# 需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。

# 如果要长期使用gcc 9.3的话:

echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

# 这样退出shell重新打开就是新版的gcc了

# 以下其他版本同理,修改 devtoolset 版本号即可。

查看 linux 系统属性的指令

# 查看发行版本

cat /etc/redhat-release

# 结果

CentOS Linux release 7.6

# 查看系统版本

cat /proc/version

# 显示

Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018

参考这篇博文

参考资料

​ 官方教程 [力荐]

​ Redis 6 版本说明

​ Redis Cluster 规范文档 [力荐]

​ 解决了我的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值