最近学习用redis, 装了个centos-7虚拟机,在网上参考了很多博文,然后拼拼凑凑写了一点东东,跟大家共享。
安装redis 3.0
1、首先下载redis 3.0
- ·wget http://download.redis.io/releases/redis-3.0.0.tar.gz
- tar zxvf redis-3.0.0.tar.gz
- cd redis-3.0.0
2、编译
- make
make命令执行完成编译后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump、redis-sentinel。
至此,实际就可以到src目录下启动redis:
3、后台启动redis服务
- ./redis-server &
如果没有修改配置,会看到下面的状态:
然后启动redis客户端:
- ./redis-cli
出现上面的界面,说明成功进入redis,可以测试:
上边是我们编译完就运行redis,但是通常,我们在编译之后会安装redis,这样就可以在所有路径下用redis的命令了:
- make install
安装后会将make编译生成的可执行文件拷贝到/usr/local/bin目录下,这样无论在哪儿都可以执行redis-server来启动redis服务了。
注释:
▲redis的默认端口号是6379,(据redis的作者antirez的博文说,6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。而MERZ长期以来被antirez及其朋友当作愚蠢的代名词。)
▲Redis有两种存储方式,默认是snapshot方式,实现方法是定时将内存的快照(snapshot)持久化到硬盘,这种方法缺点是持久化之 后如果出现crash则会丢失一段数据。因此在完美主义者的推动下作者增加了aof方式。aof即append only mode,在写入内存数据的同时将操作命令保存到日志文件。
以后台守护形式运行Redis
需要读取配置文件方式启动
注意,默认复制过去的redis.conf文件的daemonize参数为no,所以redis不会在后台运行,我们可以修改redis.conf文件,这个文件就是解压后的redis根目录下
- daemonize yes
- redis-server /usr/redis-3.0.0/redis.conf
查看redis进程
- ps aux | grep redis
redis cluster集群搭建
建立本机测试环境
(要让集群正常工作至少需要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
创建集群需要的目录
- mkdir -p /usr/local/cluster
- cd /usr/local/cluster
- mkdir 7000 7001 7002 7003 7004 7005
修改配置文件redis.conf
- cp /usr/local/redis3.0.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参数,分别改为对应的文件夹的名称。
分别启动这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 aux|grep redis,如果出现下面的结果,说明启动成功(注意:必须进入到每一个目录下,再执行redis-server redis.conf)。
执行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
执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境。错误内容:/usr/bin/env: ruby: No such file or directory
所以需要安装ruby的环境,这里推荐使用yum install ruby安装
- yum install ruby
然后再执行刚才的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
错误内容:
./redis-trib.rb:24:in `require’: no such file to load – rubygems (LoadError)
from ./redis-trib.rb:24
- yum install rubygems
再次执行第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
require’
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
from ./redis-trib.rb:25
- gem install redis
出现错误:
ERROR: Could not find a valid gem ‘redis’ (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ECONNRESET: Connection reset by peer - SSL_connect
(https://rubygems.org/latest_specs.4.8.gz)
解决方案:
可以求助万能的淘宝镜像站 https://ruby.taobao.org/
- gem sources -a https://ruby.taobao.org/
- #然后在执行:
- gem install redis
再次执行刚才的创建集群的命令,正常执行。
至此redis集群即搭建成功!
使用redis-cli命令进入集群环境
- redis-cli -c -h 127.0.0.1 -p 7000
- #用 cluster nodes 可以查看节点信息,
redis-trib默认用前3个实例作为Master,后3个作为Slave。
集群重启:
目前redis-trib的功能还比较弱,需要重启集群的话先手动kill掉各个进程,删除掉所有redis instance的aof、node-config、rdb文件(这样,之前的数据会丢失),然后重新启动就可以了,如果不删除原实例的文件,重启的时候会报错。
- ps -ef | grep redis | awk '{print $2}' | xargs kill
故障转移
在高可用性方面,Redis可算是能够”Auto”一把了!Redis Cluster重用了Sentinel的代码逻辑,不需要单独启动一个Sentinel集群,Redis Cluster本身就能自动进行Master选举和Failover切换。
执行:set name “zhangsan”,发现name被存到了 7000 节点上了。
下面我们故意kill掉7000结点,之后可以看到结点状态变成了fail,而Slave 7003被选举为新的Master。
尝试查询之前保存在7000上的Key “name”,可以看到7003顶替上来继续提供服务,整个集群没有受到影响。
性能检测:
redis 自己提供了一个性能测试工具redis-benchmark. redis-benchmark可以模拟N个机器,同时发送M个请求。
用法:
- redis-benchmark [-h ] [-p ] [-c ] [-n <requests]> [-k ]
- -h <hostname> Server hostname (default 127.0.0.1)
- -p <port> Server port (default 6379)
- -s <socket> Server socket (overrides host and port)
- -c <clients> Number of parallel connections (default 50) 并发客户端数
- -n <requests> Total number of requests (default 10000) 请求数量
- -d <size> Data size of SET/GET value in bytes (default 2) set 数据大小
- -k <boolean> 1=keep alive 0=reconnect (default 1) 是否采用keep alive模式
- -r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD
- Using this option the benchmark will get/set keys
- in the form mykey_rand:000000012456 instead of constant
- keys, the <keyspacelen> argument determines the max
- number of values for the random number. For instance
- if set to 10 only rand:000000000000 - rand:000000000009
- range will be allowed.
- -P <numreq> Pipeline <numreq> requests. Default 1 (no pipeline). 是否采用Pipeline模式请求,默认不采用
- -q Quiet. Just show query/sec values 仅仅显示查询时间
- --csv Output in CSV format 导出为CSV格式
- -l Loop. Run the tests forever 循环测试
- -t <tests> Only run the comma separated list of tests. The test
- names are the same as the ones produced as output.
- -I Idle mode. Just open N idle connections and wait
经过测试,我的笔记本可以处理每秒3万多个请求,性能还不错。
相关推荐
Redis 3.0 集群环境安装手册 Redis 3.0 集群环境安装手册是指在 Linux 操作系统中安装和配置 Redis 3.0 集群的步骤指南。Redis 是一个开源、基于内存的数据结构存储系统,可以用作数据库、消息队列、缓存层等。 ...
cp /usr/local/redis3.0/redis.conf /usr/local/cluster/ vi redis.conf ``` - 修改以下配置项: - `port`: 设置为节点对应的端口号(例如7000) - `daemonize yes`: 后台运行 - `cluster-enabled yes`: 开启...
以上是关于Redis Cluster集群部署的详细步骤和知识点,通过学习和实践,您可以掌握如何搭建和管理自己的Redis分布式环境。请确保在实际环境中根据具体需求调整配置,并做好数据备份,以防万一。
Redis高可用集群Redis Cluster搭建是 Redis 官方推荐的高可用性解决方案,于 3.0 版本推出。Redis Cluster 的主要用途是实现数据分片(Data Sharding),同时也可以实现高可用(HA)。与 Redis Sentinel 模式相比,...
本章节主要介绍如何搭建一个基本的Redis 3.0集群环境,包括必要的软件安装以及集群的配置过程。 ##### 2.1 环境要求 - **操作系统**:Linux(推荐CentOS 7+) - **硬件资源**:至少三台物理或虚拟服务器 - **网络...
- Redis 3.0 或以上版本,因为 Redis Cluster 在这个版本中被引入。 - Ruby,因为 `redis-trib.rb` 是用于创建和管理 Redis Cluster 的工具。 - 至少三台服务器或虚拟机,每个节点运行一个 Redis 实例。 ### 2. ...
#### 二、Redis高可用集群搭建步骤 接下来,我们将详细介绍如何搭建一个包含三个Master节点及其对应的Slave节点的Redis高可用集群。 ##### 2.1 Redis安装 首先需要在服务器上安装Redis。以下是详细的安装步骤: ...
### Redis 5.0.2 高可用集群搭建详解 #### 一、Redis集群方案比较 Redis 是一种高性能的键值存储系统,在多种场景中被广泛应用于缓存、消息队列以及实时分析等领域。随着应用规模的增长,单一的 Redis 实例往往...
redis从3.0开始支持集群功能。redis集群采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的redisj节点上执行命令。在...
这为PHP开发者提供了实际操作Redis Cluster集群的参考,有助于在生产环境中部署和维护高性能的Redis集群服务。对于有需要深入了解Redis Cluster集群或进行PHP开发的读者来说,文章内容提供了实际操作案例和参考价值...
**二、集群搭建环境** 1. **最小节点数**:为了实现集群功能,至少需要3个主节点,考虑到故障转移,每个主节点应有对应的从节点,所以实际至少需要6个节点。 2. **伪分布式**:在实际环境中,由于硬件限制,可能会在...
### Redis单机与集群搭建部署及应用 #### 一、Redis简介 Redis是一个采用C语言编写的开源键值对数据库,具有高性能特点。它能够提供多种数据结构支持,包括但不限于字符串(String)、哈希(Hash)、列表(List)、集合...
Redis Cluster是Redis官方提供的分布式集群解决方案,它支持数据的分片(sharding)以及自动故障转移,从而在大型系统中实现高性能、高可用性。在本文中,我们将深入探讨Redis Cluster的基本概念、配置要点以及如何...
以下是一份简化的Redis集群搭建步骤: 1. **环境准备**: - 确保你有一个兼容的Linux环境,例如CentOS 7(64位)。 - 下载Redis的源代码包,如redis-4.0.6.tar.gz。 2. **安装Redis单节点**: - 解压Redis源...
Redis Cluster 是 Redis 3.0 版本引入的一项重要特性,它允许用户将 Redis 实例分组形成一个集群来提供高可用性和数据分区能力。通过这种方式,可以有效地提高系统的水平扩展能力,并确保即使某个节点出现故障,服务...
**集群搭建** Redis集群的搭建通常包括以下几个步骤: 1. **准备节点**:至少需要三个独立的Redis实例作为集群的初始节点。 2. **启动节点**:启动每个Redis实例,并配置集群模式。 3. **创建集群**:使用`redis-...
本文档的目的是指导读者如何在实际环境中部署和配置Redis Cluster,包括硬件选择、操作系统的选择、环境准备以及具体的集群搭建步骤,以确保用户能够顺利地构建一个稳定的Redis分布式环境。 1.2 参考文档 在部署...
**Redis高可用集群搭建步骤**: 1. **安装Redis**:首先从官方网站下载最新版本,如Redis 5.0.2,通过`gcc`编译安装。安装完成后,启动Redis服务器,并确认启动成功。 2. **配置集群**:Redis集群至少需要3个...
本手册是我(作者)在一家中国大陆的中型商业银行做大数据系统工程师中进行的总结归纳,包含开发和运维的各方面的使用、应用场景和最佳实践,以及各个高...Sharding架构(Redis 3.0 Cluster) Sharding架构(Twemproxy)