1.1. Redis单机的安装

redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境

如果没有gcc环境,需要安装gcc:yum install gcc-c++

  • 版本说明

本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。

  • 源码下载

从官网下载

http://download.redis.io/releases/redis-3.0.0.tar.gz

将redis-3.0.0.tar.gz拷贝到/usr/local下

  • 解压源码

tar -zxvf redis-3.0.0.tar.gz

  • 进入解压后的目录进行编译

cd /usr/local/redis-3.0.0

make

  • 安装到指定目录

如 /usr/local/redis

cd /usr/local/redis-3.0.0

make PREFIX=/usr/local/redis install

  • redis.conf

redis.conf是redis的配置文件,redis.conf在redis源码目录。

注意修改port作为redis进程的端口,port默认6379。

  • 拷贝配置文件到安装目录下

进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下

cd /usr/local/redis

mkdir conf

cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

  • 安装目录bin下的文件列表

redis3.0新增的redis-sentinel是redis集群管理工具可实现高可用。

配置文件目录:

1.2. redis启动

1.2.1. 前端模式启动

直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图:

1.2.2. 后端模式启动

修改redis.conf配置文件, daemonize yes 以后端模式启动。

执行如下命令启动redis:

cd /usr/local/redis

./bin/redis-server ./redis.conf

redis默认使用6379端口。

也可更改redis.conf文件,修改端口号:

1.3. redis集群

1.3.1. ruby环境

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:

安装ruby

yum install ruby

yum install rubygems

安装ruby和redis的接口程序

拷贝redis-3.0.0.gem至/usr/local下

执行:

gem install /usr/local/redis-3.0.0.gem

1.4. 创建集群:

1.4.1. 集群结点规划

这里在同一台服务器用不同的端口表示不同的redis服务器,如下:

主节点:192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003

从节点:192.168.101.3:7004 192.168.101.3:7005 192.168.101.3:7006

在/usr/local下创建redis-cluster目录,其下创建7001、7002。。7006目录,如下:

将redis安装目录bin下的文件拷贝到每个700X目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。

修改每个700X目录下的redis.conf配置文件:

port XXXX

#bind 192.168.101.3

cluster-enabled yes

1.4.2. 启动每个结点redis服务

分别进入7001、7002、...7006目录,执行:

./redis-server ./redis.conf

查看redis进程:

1.4.3. 执行创建集群命令

执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003 192.168.101.3:7004 192.168.101.3:7005  192.168.101.3:7006

./redis-trib.rb create --replicas 1 192.168.131.102:7001 192.168.131.102:7002 192.168.131.102:7003 192.168.131.102:7004 192.168.131.102:7005  192.168.131.102:7006

说明:

redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点

replicas指定为1表示每个主节点有一个从节点

注意:

如果执行时报如下错误:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb

创建集群输出如下:

>>> Creating clusterConnecting to node 192.168.101.3:7001: OKConnecting to node 192.168.101.3:7002: OKConnecting to node 192.168.101.3:7003: OKConnecting to node 192.168.101.3:7004: OKConnecting to node 192.168.101.3:7005: OKConnecting to node 192.168.101.3:7006: OK>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.168.101.3:7001192.168.101.3:7002192.168.101.3:7003Adding replica 192.168.101.3:7004 to 192.168.101.3:7001Adding replica 192.168.101.3:7005 to 192.168.101.3:7002Adding replica 192.168.101.3:7006 to 192.168.101.3:7003M: cad9f7413ec6842c971dbcc2c48b4ca959eb5db4 192.168.101.3:7001slots:0-5460 (5461 slots) masterM: 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841 192.168.101.3:7002slots:5461-10922 (5462 slots) masterM: 1a8420896c3ff60b70c716e8480de8e50749ee65 192.168.101.3:7003slots:10923-16383 (5461 slots) masterS: 69d94b4963fd94f315fba2b9f12fae1278184fe8 192.168.101.3:7004replicates cad9f7413ec6842c971dbcc2c48b4ca959eb5db4S: d2421a820cc23e17a01b597866fd0f750b698ac5 192.168.101.3:7005replicates 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841S: 444e7bedbdfa40714ee55cd3086b8f0d5511fe54 192.168.101.3:7006replicates 1a8420896c3ff60b70c716e8480de8e50749ee65Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 192.168.101.3:7001)M: cad9f7413ec6842c971dbcc2c48b4ca959eb5db4 192.168.101.3:7001slots:0-5460 (5461 slots) masterM: 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841 192.168.101.3:7002slots:5461-10922 (5462 slots) masterM: 1a8420896c3ff60b70c716e8480de8e50749ee65 192.168.101.3:7003slots:10923-16383 (5461 slots) masterM: 69d94b4963fd94f315fba2b9f12fae1278184fe8 192.168.101.3:7004slots: (0 slots) masterreplicates cad9f7413ec6842c971dbcc2c48b4ca959eb5db4M: d2421a820cc23e17a01b597866fd0f750b698ac5 192.168.101.3:7005slots: (0 slots) masterreplicates 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841M: 444e7bedbdfa40714ee55cd3086b8f0d5511fe54 192.168.101.3:7006slots: (0 slots) masterreplicates 1a8420896c3ff60b70c716e8480de8e50749ee65[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.

1.5. 查询集群信息

集群创建成功登陆任意redis结点查询集群中的节点情况。

客户端以集群方式登陆:

说明:

./redis-cli -c -h 192.168.101.3 -p 7001 ,其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号

cluster nodes 查询集群结点信息

cluster info 查询集群状态信息

1.6. 添加主节点

集群创建成功后可以向集群中添加节点,下面是添加一个master主节点

添加7007结点,参考集群结点规划章节添加一个“7007”目录作为新节点。

执行下边命令:

./redis-trib.rb add-node  192.168.101.3:7007 192.168.101.3:7001

查看集群结点发现7007已添加到集群中:

1.6.1. hash槽重新分配

添加完主节点需要对主节点进行hash槽分配这样该主节才可以存储数据。

redis集群有16384个槽,集群中的每个结点分配自已槽,通过查看集群结点可以看到槽占用情况。

给刚添加的7007结点分配槽:

第一步:连接上集群

./redis-trib.rb reshard 192.168.101.3:7001(连接集群中任意一个可用结点都行)

第二步:输入要分配的槽数量

输入 500表示要分配500个槽

第三步:输入接收槽的结点id

这里准备给7007分配槽,通过cluster nodes查看7007结点id为15b809eadae88955e36bcdbb8144f61bbbaf38fb

输入:15b809eadae88955e36bcdbb8144f61bbbaf38fb

第四步:输入源结点id

这里输入all

第五步:输入yes开始移动槽到目标结点id

1.7. 添加从节点

集群创建成功后可以向集群中添加节点,下面是添加一个slave从节点。

添加7008从结点,将7008作为7007的从结点。

./redis-trib.rb add-node --slave --master-id 主节点id 添加节点的ip和端口 集群中已存在节点ip和端口

 

执行如下命令:

./redis-trib.rb add-node --slave --master-id cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  192.168.101.3:7008 192.168.101.3:7001

cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  是7007结点的id,可通过cluster nodes查看。

注意:如果原来该结点在集群中的配置信息已经生成cluster-config-file指定的配置文件中(如果cluster-config-file没有指定则默认为nodes.conf),这时可能会报错:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,删除后再执行./redis-trib.rb add-node指令

查看集群中的结点,刚添加的7008为7007的从节点:

1.8. 删除结点:

./redis-trib.rb del-node 127.0.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017

删除已经占有hash槽的结点会失败,报错如下:

[ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.

需要将该结点占用的hash槽分配出去(参考hash槽重新分配章节)。

转载于:https://www.cnblogs.com/aaron911/p/9273601.html

Linux安装Redis相关推荐

  1. Linux安装redis最新版5.0.8

    详解Linux安装redis最新版5.0.8 如果是在校大学生,可以到阿里云网站去免费领取一个半年的阿里云服务器,不知道现在还可以免费领取不. 也可以安装虚拟机,在虚拟机上安装redis. 在wind ...

  2. linux安装 redis,在linux中安装redis

    本文中使用的系统是Ubantu 18.04 因为我是第一次使用Linux系统,并不知道使用哪一款比较好,主要是因为Ubantu的界面很好看(笑) 在使用linux安装redis之前遇到过几个小问题.在 ...

  3. linux安装redis清除错误,关于linux redis安装及安装遇到的问题

    redis官方传送门 Linux安装Redis服务步骤: 获取资源指定安装目录 [[email protected] mnt]# mkdir reids [[email protected] redi ...

  4. Linux 安装 redis 和 本地连接 redis

    Linux 安装 redis 和 本地链接 redis. 1. 安装 Redis 1.1 下载安装包 1.2 解压编译 1.3 启动 Redis 1.3.1 直接启动 1.3.2 后台启动 1.4 检 ...

  5. linux 安装redis以及配置redis开机自启

    linux 安装redis 非常简单,官网有介绍. 步骤如下: 一安装redis: 1.先查看redis版本,找到你想下载的版本:http://download.redis.io/releases/ ...

  6. 【Redis】Linux安装Redis

    Linux安装Redis 一.下载并上传 二.安装 2.1.解压 2.2.安装 2.3.更改配置 2.3.1.密码 2.3.2.远程登入 三.启动 一.下载并上传 官网下载地址 本文使用的7.0.4 ...

  7. Linux安装Redis、远程连接Redis

    Linux安装Redis.远程连接Redis Redis官方tar包下载地址 Linxu安装Redis 1.新建redis安装目录 2.上传文件到服务器的安装目录 3.解压tar包 4.安装gcc环境 ...

  8. linux 安装redis 以及 lump lamp 安装redis扩展

    一.linux安装redis 软件下载网址: http://redis.io/download wget http://download.redis.io/releases/redis-3.2.1.t ...

  9. Linux安装Redis详解

    Linux安装Redis 官网下载地址:https://redis.io 1.在官网下载Redis到本地 2.将本地下载好的Redis压缩包上传到服务器并解压 用xshell将下载好的Redis包传到 ...

  10. LINUX安装REDIS集群

    linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是新浪云服务器: redis3.0以后开始支持集群. 前言:redis用什么做集群? 用一个叫redis-trib.rb的rub ...

最新文章

  1. MySQL 的 Binlog 日志处理工具(Canal/Maxwell/Databus/DTS)对比
  2. 系统调用003 系统服务表
  3. SELinux与SEAndroid
  4. python print 输出到txt_Python的print()输出形式
  5. 浙江理工大学2019年1月赛
  6. wxpython 按钮跳notebook_按钮按下wxpython刷新窗口
  7. C++:类的成员函数
  8. 面试官 | Java转List三种方式,你说说吧。我。。懵逼。啥时候有三种了
  9. 洛谷 3833 SHOI 2012 魔法树
  10. Reading Digits(2016southeastern Europe. D题)题解
  11. TCP和HTTP的区别和联系
  12. 元宇宙构建基石:三维重建技术
  13. 内部存储器——③主存储器
  14. IDEA如何在包下面继续建包
  15. gom列表自动选择服务器,GOM纯微端服务器如何设置
  16. 51个Python鲜为人知的秘密特性,老司机看完都惊叹不已
  17. 基于PaddleSeg实现眼底血管分割——助力医疗人员更高效检测视网膜疾病
  18. Office2003/2007/2010/2013强力卸载工具下载
  19. 基于Java毕业设计宠物管理系统源码+系统+mysql+lw文档+部署软件
  20. 中国医科大学计算机本科在线作业,16春中国医科大学《计算机应用基础(本科)》在线作业答案...

热门文章

  1. CSDN日报20170612 ——《程序员,感觉技术停滞了怎么办?》
  2. HDU 4565(矩阵快速幂)
  3. TalkingData技术实现分析
  4. ValueError: Sample larger than population or is negative
  5. 中文域名正确注册、配置、使用
  6. linux 查看vcf文件,VCF格式文件的shell小练习
  7. 第二人生的源码分析(七十六)判断程序运行多个实例
  8. FileStatus类介绍
  9. ble HCI 流控机制
  10. 蓝牙bluez进行HCI编程