开发者社区> 丁小晶> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

玩转大数据-如何搭建redis集群

简介: 在企业应用中,对于数据的固化一般采用数据库,但是数据库的吞吐量还是存在一定的问题的,在高并发高吞吐要求时,一般会直接导致数据库的宕机或者死锁,目前对于这个问题的架构是在数据库前边在缓存池,redis就是这么一款产品。
+关注继续查看

在企业应用中,对于数据的固化一般采用数据库,但是数据库的吞吐量还是存在一定的问题的,在高并发高吞吐要求时,一般会直接导致数据库的宕机或者死锁,目前对于这个问题的架构是在数据库前边在缓存池,redis就是这么一款产品。
对于redis的介绍,去百度吧,它应该被广泛运用在各个项目中,我们来看如何搭建一个redis集群,这里的集群是个真分布式集群哦。

首先,我们需要下载redis源代码,然后进行编译,以下命令在linux下执行:

wget http://download.redis.io/redis-stable.tar.gz

tar xvzf redis-stable.tar.gz

cd redis-stable

make

前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。

异常一:

make[2]: cc: Command not found

异常原因:没有安装gcc

解决方案:yum install gcc-c++

异常二:

zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory

异常原因:一些编译依赖或原来编译遗留出现的问题

解决方案:make distclean。清理一下,然后再make。

在make成功以后,需要make test。在make test出现异常。

异常一:

couldn't execute "tclsh8.5": no such file or directory

异常原因:没有安装tcl

解决方案:yum install -y tcl。

在make成功以后,会在src目录下多出一些可执行文件:redis-server,redis-cli等等。

方便期间用cp命令复制到usr目录下运行。

cp redis-server /usr/local/bin/

cp redis-cli /usr/local/bin/

然后新建目录,存放配置文件

mkdir /etc/redis

mkdir /var/redis

mkdir /var/redis/log

mkdir /var/redis/run

mkdir /var/redis/6379

在redis解压根目录中找到配置文件模板,复制到如下位置。

cp redis.conf /etc/redis/6379.conf

通过vim命令修改

daemonize yes

pidfile /var/redis/run/redis_6379.pid

logfile /var/redis/log/redis_6379.log

dir /var/redis/6379

最后运行redis:

$ redis-server /etc/redis/6379.conf

Redis集群部署文档(centos6系统)

(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)

127.0.0.1:7000
127.0.0.1:7001

127.0.0.1:7002

127.0.0.1:7003

127.0.0.1:7004

127.0.0.1:7005

1:下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式

下载地址:https://github.com/antirez/redis/archive/3.0.0-rc2.tar.gz

2:上传服务器,解压,编译

tar -zxvf redis-3.0.0-rc2.tar.gz

mv redis-3.0.0-rc2.tar.gz redis3.0

cd /usr/local/redis3.0

make

make install

3:创建集群需要的目录

mkdir -p /usr.local/cluster

cd /usr.local/cluster

mkdir 7000

mkdir 7001

mkdir 7002

mkdir 7003

mkdir 7004

mkdir 7005

4:修改配置文件redis.conf

cp /usr/local/redis3.0/redis.conf /usr.local/cluster

vi redis.conf

修改配置文件中的下面选项

port 7000

daemonize yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面

cp /usr/local/cluster/redis.conf /usr/local/cluster/7000

cp /usr/local/cluster/redis.conf /usr/local/cluster/7001

cp /usr/local/cluster/redis.conf /usr/local/cluster/7002

cp /usr/local/cluster/redis.conf /usr/local/cluster/7003

cp /usr/local/cluster/redis.conf /usr/local/cluster/7004

cp /usr/local/cluster/redis.conf /usr/local/cluster/7005

注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

5:分别启动这6个redis实例

cd /usr/local/cluster/7000

redis-server redis.conf

cd /usr/local/cluster/7001

redis-server redis.conf

cd /usr/local/cluster/7002

redis-server redis.conf

cd /usr/local/cluster/7003

redis-server redis.conf

cd /usr/local/cluster/7004

redis-server redis.conf

cd /usr/local/cluster/7005

redis-server redis.conf

启动之后使用命令查看redis的启动情况ps -ef|grep redis

如下图显示则说明启动成功

6:执行redis的创建集群命令创建集群

cd /usr/local/redis3.0/src

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

6.1执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境

错误内容:/usr/bin/env: ruby: No such file or directory

所以需要安装ruby的环境,这里推荐使用yum install ruby安装

yum install ruby

6.2然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装

错误内容:

./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

yum install rubygems

6.3再次执行第6步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装

错误内容:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25

gem install redis

需要手工下载并安装:

wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
gem install -l ./redis-3.2.1.gem

6.4 再次执行第6步的命令,正常执行

输入yes,然后配置完成。

至此redis集群即搭建成功!

7:使用redis-cli命令进入集群环境

redis-cli -c -p 7000

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[个人翻译]Redis 集群教程(下)
[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(中) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢。
749 0
[个人翻译]Redis 集群教程(中)
[个人翻译]Redis 集群教程(上) [个人翻译]Redis 集群教程(下) 官方原文地址:https://redis.io/topics/cluster-tutorial 水平有限,如果您在阅读过程中发现有翻译的不合理的地方,请留言,我会尽快修改,谢谢。
989 0
Redis持久化之RDB(Redis DataBase)
RDB在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
24 0
13. Redis持久化之AOF
以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
20 0
Redis---持久化 ( RDB AOF )
一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。比如,一直在执行自加一的命令,然后我们可以直接用一个set来代替N个自加啊,自
2694 0
Redis的持久化机制
1 持久化 redis需要经常将内存中的数据同步到磁盘来保证持久化。 支持两种持久化方式:快照、Append-onlyfile。 2 快照 快照是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可配置redis在n秒内若超过m个key被修改就自动做快照,默认快照保存配置如下: #900秒内若超过1个key被修改
1680 0
Redis协议简介及持久化Aof文件解析
本文主要对Redis的协议进行简单介绍并提供了一种方法用于解析AOF文件
8948 0
使用Redis搭建持久化K-V存储
最近在项目中需要在多机之间共享一些集合,Hash等有类型的数据结构,如果基于Mysql来存储的话需要预先定义一系列表结构并维护表结构和数据结构的一致性,后续还需要根据时间对数据库做旧数据清理工作,所以开始调研一些能满足下列需求的存储引擎。 具有高可用,持久化的特性。 数据可以设置失效时间,方便自动数据清理。 支持常用数据结构,如集合,有序集合,Hash map,列表等。 支持事务操作,
4549 0
Redis持久化方案
  前言:Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。       Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。 RDB持
3925 0
+关注
丁小晶
2014-2015年就职于阿里巴巴 之后在平安集团就职于壹帐通团队,致力于自动化质量保证
10
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载