redis集群

本文深入探讨了Redis集群原理及实现,包括主从复制、哨兵模式和Redis-Cluster集群,详细讲解了分布式和集群的概念及其优势。同时,全面解析了ElasticSearch的概念、特点和使用方法,对比了ES与Solr的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.redis集群

1.什么叫集群

​ 不同的服务器,完成同一个业务。

2.为什么要集群

(1)解决单点故障
(2)处理高并发
(3)处理大数据(高并发) --解决存储问题

3.集群方案

(1)主从复制 (读写分离 主从同步)
​ 优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
​ 缺点:Redis不具备自动容错和恢复功能,如果想具备自动重起 ,需要安装插件。
(2)哨兵模式
​ 自动化的系统监控和故障恢复功能。
​ 优点:主从复制优点都在, 通过哨兵自动恢复。
​ 缺点:比较难扩容,服务占用空间比较多。
(3)Redis-Cluster集群
​ redis的分布式存储,也就是说每台redis节点上存储不同的内容。
​ 优点:上面有都有,解决分布式存储问题 ,容错问题。

二.分布式

1.什么是分布式

把业务拆分开,分布到不同服务器。

2.为什么要分布式

分布式和集群一起使用
便于维护
解决高并发 ,单点故障问题
便于扩容

三.搭建redis-cluster

(1) 拷贝6个redis 分别命名为 6379-6384
(2) 修改配置
​ port 6379
​ cluster-enabled yes
​ cluster-config-file nodes-6379.conf
​ cluster-node-timeout 15000
​ appendonly yes
(3) 每个redis服务 写一个startup.bat启动文件
​ title redis-6379
​ redis-server.exe redis.windows.conf
(4)安装ruby环境
​ 傻瓜式安装
(5)安装Redis的Ruby驱动 rubygems-3.0.6
​ a)解压
​ b)D:\Program Files\Redis_cluster\rubygems-2.7.7 然后命令行执行 ruby setup.rb
(6)通过驱动安装的redis
​ a)进入6379的目录
​ b)执行gem install redis
(7) 启动 6379-6384服务
​ 创建集群
​ 拷贝redis-trib.rb到6379的redis节点
​ redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 ​ ​ 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

四.ES(elasticSearch)

1.ES的概念和特点

概念:全文检索的框架,专门做搜索,支持分布式,集群。
特点:全文检索的框架 --封装lucene的,支持分布式(集群)
​ (1)原生Lucene使用的不足,优化Lucene的调用方式。
​ (2)高可用的分布式集群 ,处理PB级别数据。
​ 1024KB – 1MB
​ 1024MB – 1GB
​ 1024GB – 1TB
​ 1024TB - 1PB
​ (3)它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单,达到开箱即用的效果。
lucene:全文检索 – api比较麻烦,操作全文检索的最底层技术。
lucene核心:创建索引,搜索索引。

2.ES的对手–Solr

概念:Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
特点:Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Solr和ES区别:

​ (1)Solr:重量级,支持很多种类型操作,支持分布式式,它里面有很多功能,但是在实时领域上面,没有es好。
​ (2)ES:轻量级,支持json的操作格式,在实时搜索领域里面做的不错,如果想使用其他的功能,需要额外安装插件。

3.ES的使用

ES分为服务端和客户端
(1)ES服务端
​ 解压 -->bin/elasticsearch.bat -->localhost:9200
​ a)配置内存:
​ config/jvm.options
​ -Xmx1g
​ -Xms1g
b)健康状态:
​ green(最健康) -->主分片和从分片(存储内容)都完好,集群是100%健康
​ yellow -->主分片好的,从分片至少缺少一个,集群还是可以使用,
​ red -->至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据
(2)ES客户端–navicat
​ restfull风格 —> GET/POST/DELETE/PUT shop/goods/1
​ GET shop/goods/1 -->查询shop这个库goods表 1这条数据
​ PUT shop/goods {“name”:“111”}
​ POST shop/goods {“name”:“111”}
​ DELETE shop/goods/1
​ 1)postman +head
​ 2)curl–>在firefox安装poster插件
​ 3)Kibana5 -->es

4.ES基本操作

(1)数据对应

es                                database                          lucene
index : 索引库                     数据库                             索引库 index库
type : 表(类型)				      table								documents
id:某一个条数据				      column         					document(field)

(2)crud

#增
PUT crm/employee/1
{
  "name":"王天霸",
  "age":18
}
#修改
POST crm/employee/1
{
  "name":"赵日天",
  "age":23
}
#查
GET crm/employee/1
#删除
DELETE crm/employee/1
#没有id会自动生成
POST crm/employee
{
  "name":"龙傲天",
  "age":25
}
#查询所有
GET _search
### Redis 集群的搭建与配置 #### 一、Redis 集群简介 Redis 是一种高性能的键值存储系统,支持多种数据结构操作。通过集群模式可以实现分布式存储和高可用性。Redis 集群允许多个 Redis 实例协同工作,提供更高的吞吐量和更强的数据持久化能力。 --- #### 二、环境准备 在开始之前,需确认以下条件已满足: - 所有服务器的操作系统版本一致(如 CentOS 7 或 Windows),并安装了相同版本的 Redis 软件。 - 已关闭防火墙或开放必要的端口(默认 Redis 使用 6379 及其衍生端口)。 - 每台服务器上至少有两个 Redis 实例运行,分别作为主节点和从节点[^1]。 --- #### 三、具体步骤 ##### 1. 下载并解压 Redis 文件 下载指定版本的 Redis 压缩包(如 Redis 6.2.5 或更高版本),将其解压到目标路径下。例如,在 Linux 中执行以下命令: ```bash wget http://download.redis.io/releases/redis-6.2.5.tar.gz tar -zxvf redis-6.2.5.tar.gz cd redis-6.2.5 make ``` ##### 2. 创建多个实例目录 为每个 Redis 实例创建独立的工作目录,并复制 `redis.conf` 至对应文件夹中。例如: ```bash mkdir -p /service/redis/{6379,6380} cp redis.conf /service/redis/6379/ cp redis.conf /service/redis/6380/ ``` ##### 3. 修改配置文件 编辑每个实例下的 `redis.conf` 文件,设置不同的监听端口号和其他必要参数。以下是关键配置项: - 设置绑定 IP 地址:`bind 0.0.0.0` - 关闭保护模式:`protected-mode no` - 开启集群功能:`cluster-enabled yes` - 指定集群配置文件位置:`cluster-config-file nodes-{port}.conf` - 设定日志级别:`loglevel notice` ##### 4. 启动 Redis 实例 依次启动各个 Redis 实例。例如: ```bash redis-server /service/redis/6379/redis.conf redis-server /service/redis/6380/redis.conf ``` 如果是在多台物理机上部署,则需要远程登录每台机器重复上述过程[^2]。 ##### 5. 构建集群拓扑 利用 `redis-cli` 的集群管理工具完成初始化操作。假设当前存在六个节点分布在三台主机上,则可输入如下指令构建集群关系: ```bash redis-cli --cluster create \ 192.168.x.y:6379 192.168.x.z:6379 ... \ --replicas 1 ``` 其中 `--replicas` 参数表示每个主节点分配几个副本[^4]。 ##### 6. 验证集群状态 最后可以通过以下方式验证集群是否正常运作: ```bash redis-cli -c -h {任意IP} -p {任一口号} CLUSTER INFO CLUSTER NODES PING SET key value GET key ``` --- #### 四、注意事项 - 如果使用 Docker 容器来部署 Redis 集群,请确保容器间网络互通良好。 - 对于 Windows 平台上的开发测试场景,可通过批处理脚本来简化服务启动流程[^3]。 --- #### 五、示例代码片段 下面展示了一个简单的 Python 程序用于连接至 Redis 集群并向其中写入一条记录: ```python import redis r = redis.StrictRedisCluster(startup_nodes=[{"host": "127.0.0.1", "port": "6379"}], decode_responses=True) r.set('foo', 'bar') print(r.get('foo')) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值