redis集群搭建过程(非常详细,适合新手)

yizhihongxing

下面我将详细讲解 redis 集群搭建过程。

1. 环境准备

首先需要准备一台或多台主机,安装 redis 服务。本次搭建使用的操作系统为 CentOS 7.8,redis 版本为 5.0.9。

2. 下载、安装和配置 redis

下载安装

# 安装前依赖包
$ yum install gcc -y
$ yum install tcl -y

# 下载 Redis
$ wget http://download.redis.io/releases/redis-5.0.9.tar.gz

# 解压
$ tar xzf redis-5.0.9.tar.gz

# 进入 redis 目录
$ cd redis-5.0.9

# 编译
$ make

# 安装
$ make install

配置

  • 为每个 Redis 实例创建不同目录,用于存放数据和 Redis 配置文件。目录结构如下:
# 创建目录
$ mkdir -p /opt/redis/cluster/{7000,7001,7002,7003,7004,7005}

# 目录结构
/opt/redis/cluster/7000
│  redis.conf
│
├─data
  • redis.conf 配置如下(以下为节点 7000 的配置,其它节点的端口号和工作目录需要调整):
port 7000
pidfile /var/run/redis_7000.pid
dir /opt/redis/cluster/7000/data
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 15000
appendonly yes
pidfile /var/run/redis_7000.pid
  • 复制配置文件并修改端口号为对应的节点端口:
# 给其他节点创建配置文件
$ cp /opt/redis/cluster/7000/redis.conf /opt/redis/cluster/7001/
$ cp /opt/redis/cluster/7000/redis.conf /opt/redis/cluster/7002/
$ cp /opt/redis/cluster/7000/redis.conf /opt/redis/cluster/7003/
$ cp /opt/redis/cluster/7000/redis.conf /opt/redis/cluster/7004/
$ cp /opt/redis/cluster/7000/redis.conf /opt/redis/cluster/7005/

# 修改配置文件,分别将端口号改为对应节点的端口
$ sed -i 's/^port 7000$/port 7001/' /opt/redis/cluster/7001/redis.conf
$ sed -i 's/^port 7000$/port 7002/' /opt/redis/cluster/7002/redis.conf
$ sed -i 's/^port 7000$/port 7003/' /opt/redis/cluster/7003/redis.conf
$ sed -i 's/^port 7000$/port 7004/' /opt/redis/cluster/7004/redis.conf
$ sed -i 's/^port 7000$/port 7005/' /opt/redis/cluster/7005/redis.conf

3. 启动 redis 节点

  • 启动每个节点(以下为启动 7000 节点,其它节点同理):
redis-server /opt/redis/cluster/7000/redis.conf

4. 创建 redis 集群

使用 redis-trib 工具来创建并管理 redis 集群。

下载 redis-trib

# 解压 redis-5.0.9.tar.gz 文件
$ tar xzf redis-5.0.9.tar.gz

# 进入 redis-5.0.9/src
$ cd redis-5.0.9/src

# 编译 redis-trib
$ make redis-trib

创建集群

连接 redis-trib 工具,创建集群(以下为创建一个三节点的集群,其它节点同理):

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

验证集群

# 连接任意节点
$ redis-cli -c -p 7000

# 输入命令
192.168.1.101:7000> get foo

# 输出结果
-> Redirected to slot [12182] located at 192.168.1.101:7004
"bar"

5. 示例说明

以下是两个使用 redis 集群的示例:

示例 1:集群下的 set / get

向集群中的某个节点 set 值:

$ redis-cli -c -p 7000
192.168.1.101:7000> set key value
-> Redirected to slot [8543] located at 192.168.1.101:7002
OK

获取该值:

# 获取 value 值
$ redis-cli -c -p 7000 get key
-> Redirected to slot [8543] located at 192.168.1.101:7002
"value"

示例 2:分片式的 list

在这个例子中,我们会将一个数据分片成 6 份储存在集群的不同节点中。这里我们会在客户端代码中编写运行分片算法的代码,然后将数据存储到集群上。

require 'redis'
require 'digest'

class ShardedRedis

  def initialize(nodes)
    @nodes = nodes.sort
    @shards = @nodes.map { |node| Redis.new(host: node.split(':')[0], port: node.split(':')[1].to_i) }
  end

  def set(key, value)
    shard(key).set(key, value)
  end

  def get(key)
    shard(key).get(key)
  end

  private

  def shard(key)
    @shards[hash_slot(key) % @nodes.size]
  end

  def hash_slot(key)
    Digest::CRC32.checksum(key)
  end

end

# Nodes
nodes = [
  '192.168.1.101:7000',
  '192.168.1.101:7001',
  '192.168.1.101:7002',
  '192.168.1.101:7003',
  '192.168.1.101:7004',
  '192.168.1.101:7005'
]

# 初始化客户端
client = ShardedRedis.new(nodes)

# 存入数据
100.times do |i|
  client.set("key#{i}", "value#{i}")
end

# 获取数据
10.times do |i|
  puts client.get("key#{i}")
end

在以上示例中,我们使用了 hash_slot 方法将 key 映射到对应的节点。这里的哈希函数使用了 CRC32 算法,这也是 redis 集群中使用的哈希函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:redis集群搭建过程(非常详细,适合新手) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法

    首先,需要明确Python Tornado既可以作为WEB服务器,也可以作为Socket服务器,这两个功能可以同时存在并实现交互。下面,我们将进一步介绍实现该功能的具体步骤。 步骤一:创建Tornado Application 在Tornado中,所有的请求都必须经过Application来进行处理。因此,我们需要首先创建Tornado的Applicatio…

    人工智能概论 2023年5月25日
    00
  • C# .NET及Mono跨平台实现原理解析

    C#是一门广泛应用于Microsoft Windows平台的面向对象编程语言,.NET Framework提供了一套扩展API让开发人员可以使用C#编写Windows应用程序,但是它只能在Windows操作系统上运行。Mono是一种开源的.NET框架实现,它允许开发人员使用C#和其他.NET编程语言开发跨平台应用程序。在本文中,我们将详细讲解C# .NET及…

    人工智能概览 2023年5月25日
    00
  • Nginx在Windows下的安装与使用过程详解

    Nginx在Windows下的安装与使用过程详解 安装步骤 第一步:下载Nginx安装包 从Nginx官网下载Windows下的最新版安装包(zip格式),并解压到目标文件夹中。 第二步:创建配置文件 在Nginx目录下,创建conf目录,并在其中创建nginx.conf文件。 第三步:编辑配置文件 在nginx.conf文件中填写Nginx的基础配置,包括…

    人工智能概览 2023年5月25日
    00
  • 分布式和集群的概述讲解

    分布式和集群是高性能、高可靠性、高可扩展性分布式应用系统的重要组成部分。他们都是一种分割任务并在多台机器上同时运行的方式,但两者存在一定的区别。 分布式系统 分布式系统是互相连接的计算机或节点,它们共享资源,执行协作的任务。这些计算机可以是处于不同地理位置上的计算机,它们通过通信网络互相联通。分布式系统的优点在于可以使系统更加可靠、高效并且易于扩展。典型的分…

    人工智能概览 2023年5月25日
    00
  • Ubuntu20.04 VNC 安装与设置实现

    下面是 Ubuntu20.04 VNC 安装与设置实现的完整攻略步骤: 1. 安装 VNC 服务 打开终端,输入以下命令进行 VNC 服务的安装: sudo apt-get update sudo apt-get install -y tightvncserver 2. 设置 VNC 密码 输入以下命令启动 tightvncserver 并设置密码: vnc…

    人工智能概览 2023年5月25日
    00
  • Django 自定义404 500等错误页面的实现

    下面详细讲解一下 Django 自定义404、500等错误页面的实现。 1. 修改默认的错误页面 Django 默认的错误页面位于 templates 目录下的 error 目录中,其中包括了: 500.html:500 Internal Server Error 错误页面 404.html:404 Not Found 错误页面 403.html:403 F…

    人工智能概论 2023年5月25日
    00
  • tensorflow基本操作小白快速构建线性回归和分类模型

    TensorFlow基本操作小白快速构建线性回归和分类模型 TensorFlow是谷歌开源的深度学习框架,近年来深受广大开发者的喜爱。本文将介绍TensorFlow基本操作,通过构建线性回归和分类模型的示例,展示如何使用TensorFlow搭建并训练机器学习模型。 TensorFlow基本操作 张量(Tensor) TensorFlow中,所有的数据都是通过…

    人工智能概论 2023年5月25日
    00
  • Windows下用Nginx配置https服务器及反向代理的问题

    下面我将为您介绍如何在Windows下使用Nginx配置HTTPS服务器及反向代理的完整攻略。 确定所需软件及工具 在开始之前,请确认您已经安装以下软件及工具: Windows操作系统 Nginx OpenSSL curl 生成SSL证书 打开命令提示符窗口。 进入OpenSSL的目录下,并执行以下命令生成SSL证书: openssl req -x509 -…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部