当前位置: 首页 > article >正文

NoSql数据库Redis知识点

数据库的分类 

关系型数据库 ,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库
中的数据主流的 MySQL Oracle MS SQL Server DB2 都属于这类传统数据库。
NoSQL 数据库 ,全称为 Not Only SQL ,意思就是适用关系型数据库的时候就使用关系型数据库,不适
用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键 值存储(memcached Redis )、永久性键值存储( ROMA Redis )、面向文档的数据库
MongoDB CouchDB )、面向列的数据库( Cassandra HBase ),每种 NoSQL 都有其特有的使用场景及优点。

Redis简介

Redis 是一个开源的、遵循 BSD 协议的、基于内存的而且目前比较流行的键值数据库 (key-value
database) ,是一个非关系型数据库, redis 提供将内存通过网络远程共享的一种服务,提供类似功能的 还有memcached ,但相比 memcached redis 还提供了易扩展、高性能、具备数据持久性等功能。 Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛。

Redis核心特性

丰富的数据类型:Redis不仅支持基本的键值存储,还提供了字符串、列表、集合、哈希表和有序集合等数据结构。这些数据类型为开发者提供了灵活的操作能力,适应不同的应用场景。

原子性操作:Redis的所有操作都是原子性的,这意味着每个操作要么完全执行,要么完全不执行,确保了数据的一致性和完整性。

持久化机制:Redis支持将内存中的数据保存到磁盘上,以便在系统重启后恢复数据。这提供了数据安全性,防止系统故障导致的数据丢失。

发布订阅模式:Redis内置了发布/订阅模式,允许客户端之间通过消息传递进行通信,适用于消息队列和实时数据传输平台。

单线程模型:尽管Redis是单线程的,但它通过高效的事件驱动模型来处理并发请求,确保了高性能和低延迟。

主从复制:Redis支持主从复制,可以通过从节点备份数据或分担读请求,提高数据的可用性和系统的伸缩性。

        

Redis部署方式分类

Redis有四种主要的部署方式:单节点模式、主从模式、哨兵模式和集群模式

单节点模式

定义:单节点模式是Redis最简单的部署方式,就是在一台服务器上运行一个Redis实例,提供数据的读写服务。

优点:配置简单,操作简单,性能高,没有网络开销和数据同步的延迟。

缺点:数据容量受限于单台服务器的内存大小,无法进行横向扩展;数据安全性低,一旦服务器宕机或者数据损坏,会造成数据的丢失或不一致

主从模式

定义:主从模式是在单节点模式的基础上,增加了数据的复制功能。主从模式下,有一个主节点(master)和一个或多个从节点(slave)。主节点负责处理数据的读写操作,从节点负责复制主节点的数据,并可以提供只读服务。

优点:数据冗余,提高了数据的安全性和可靠性,可以用于数据的备份和恢复;负载均衡,分担了主节点的读压力,提高了系统的吞吐量和响应速度;故障恢复,当主节点发生故障时,可以手动或自动地将一个从节点升级为新的主节点,实现主节点的故障转移。

缺点:数据一致性不强,由于主从复制是异步的,可能会出现主从数据不一致的情况,尤其是在主节点故障时,从节点可能会丢失一部分未复制的数据;故障转移不自动,当主节点发生故障时,需要人工介入或者借助其他工具来实现从节点的自动升级,这会造成一定的服务中断和数据丢失

工作过程:

  1. 从服务器(slave)连接到主服务器(master)。
  2. 从服务器发送SYNC命令给主服务器。
  3. 主服务器执行BGSAVE命令,生成RDB文件,同时使用缓冲区记录此后执行的所有写命令。
  4. 主服务器将RDB文件发送给从服务器,从服务器接收并载入到内存中。
  5. 主服务器将缓冲区中的写命令发送给从服务器,从服务器执行这些命令。
  6. 如果有新的写命令到达主服务器,它们会被放入缓冲区等待同步。
  7. 当从服务器完成数据同步后,它会向主服务器发送一个确认消息。
  8. 主服务器收到确认消息后,将缓冲区中的写命令应用到自己的数据库中。
  9. 从服务器开始接受客户端的读请求。

哨兵模式(高可用)

定义:哨兵模式是在主从模式的基础上,引入了哨兵(sentinel)节点,用于监控主节点和从节点的运行状态,并在主节点发生故障时,自动将一个从节点升级为新的主节点,实现主节点的自动故障转移。

优点:自动故障转移,无需人工干预,减少了服务中断和数据丢失的风险;集群监控,可以实时感知主从节点的健康状况,及时发现和处理异常情况;配置中心,可以提供主节点的动态发现和通知服务,方便客户端的连接和切换。

缺点:部署复杂,需要维护额外的哨兵节点,增加了系统的管理成本;数据一致性仍然不强,由于主从复制仍然是异步的,故障转移过程中仍然可能会出现数据不一致的情况;存储能力仍然受限,由于所有的从节点都要复制主节点的全部数据,无法实现数据的分片存储,导致存储能力受限于单台服务器的内存大小。

工作过程:

每个哨兵 (Sentinel) 进程会向其它哨兵 (Sentinel) Master Slave 定时发送消息,以确认对方是否 ”着,如果发现对方在指定配置时间( 此项可配置 ) 内未得到回应,则暂时认为对方已离线,也就是所谓的 主观认为宕机”
哨兵群 中的多数 Sentinel 进程在对 Master 主服务器做出 SDOWN 的判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下线判断,这种方式就是“ 客观宕机
宕机后通过一定的 vote 算法,从剩下的 slave 从服务器节点中,选一台提升为 Master 服务器节点,然后自动修改 相关配置,并开启故障转移(failover

集群模式

定义:集群模式是Redis最高级的部署方式,它是通过分片(sharding)技术,将数据分散存储在多个节点上,每个节点都可以执行读写操作,并且每个节点都有相应的从节点,保证数据的高可用性。

优点:存储能力强,可以通过增加节点的数量,实现数据的水平扩展,突破单台服务器的内存限制;性能高,可以通过分散读写压力,提高系统的并发能力和响应速度;高可用,可以通过主从复制和故障转移,实现数据的冗余和容错,保证服务的稳定性。

缺点:部署非常复杂,需要配置多个节点的角色、槽位、复制关系等,增加了系统的管理难度;数据一致性最弱,由于数据分散在多个节点上,且主从复制和故障转移都是异步的,可能会出现数据不一致、丢失或重复的情况;功能受限,由于数据分布在不同的节点上,一些涉及多个键的操作,如事务、聚合函数、跨节点的键迁移等,都会受到限制或不支持。

Redis的安装

rpm包安装

源码安装

1.去官方网站获取源码包并上传到目录下

2.解压源码包

3.安装一系列编译工具

4.切换目录进行编译

5.启动redis

直接启动会报错

编辑文件进行注释

再次启动

6.配置redis(vim /etc/redis/6379.conf),监听所有接口

7.重启登录redis

Redis基本操作

查看监听的网络接口和端口

写入和读取数据
设置写入数据维持时间
修改数据维持时间
查看所有key
选择数据库(redis中一共有0-15个数据库)
移动数据
改变键名
删除
清空当前库
清空所有库

Redis主从模式的搭建

1.编辑master配置文件,关闭保护模式然后重启服务
2.编辑配置文件 配置 slave节点
效果测试:

Redis哨兵模式搭建

1.在master中复制哨兵配置文件模板过来进行配置

2.通过sed对配置文件中无用的注释和空行进行删除

3.修改配置文件

protected-mode no 关闭保护模式,允许外部客户端连接。
port 26379: 设置Sentinel监听的端口号为26379。
daemonize no: 以非守护进程模式运行。
pidfile "/var/run/redis-sentinel.pid": 指定Sentinel进程的PID文件路径。
loglevel notice: 设置日志级别为notice,记录重要的信息。
sentinel monitor mymaster 172.25.254.10 6379 2: 监控名为mymaster的主节点,主节点的IP地址为172.25.254.10,端口号为6379,需要至少2个Sentinel节点同意才判断主节点故障。
sentinel down-after-milliseconds mymaster 10000: 当主节点连续10000毫秒(10秒)没有响应时,将其标记为不可用。
sentinel parallel-syncs mymaster 1: 在故障转移过程中,最多允许1个从节点与新的主节点同步数据。
sentinel failover-timeout mymaster 180000: 故障转移超时时间为180000毫秒(180秒)。

4.将配置文件分发到另外两个节点

5.启动服务(每个节点都要开启)

测试:另起一个终端关闭master服务查看另外的两个节点是否已经发色主节点偏移

Redis集群化搭建(需六台主机)

1.删除之前三个节点的数据和redis

2.在六个节点上统一安装redis

3.编辑所有节点的配置文件

masterauth "123456":设置主节点的认证密码为"123456"。

requirepass "123456":设置客户端连接时需要提供的认证密码为"123456"。

cluster-enabled yes:启用Redis集群模式。

cluster-config-file nodes-6379.conf:指定集群配置文件名为"nodes-6379.conf"。

cluster-node-timeout 15000:设置集群节点超时时间为15000毫秒(15秒)

4.重启服务进行登陆测试

5.创建redis-cluster


http://www.kler.cn/a/315361.html

相关文章:

  • 【C++】string类(附题)
  • Centos安装Elasticsearch教程
  • 【C语言】值传递和地址传递
  • 边缘的检测
  • npm list @types/node 命令用于列出当前项目中 @types/node 包及其依赖关系
  • HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
  • ppt一键生成免费版软件有哪些?如何高效生成论文答辩?
  • kafka发送事件的几种方式
  • DeepCross模型实现推荐算法
  • 【软件测试】--xswitch将请求代理到测试桩
  • 【linux】df命令
  • 『玉竹』基于Laravel 开发的博客、微博客系统和Android App
  • Android 命令行关机
  • Google 官方数据库框架Room使用教程
  • 【MySQL 03】表的操作
  • mpls 动态LSP的标签发布协议
  • TCP/IP - IP
  • 鸿蒙NEXT生态应用核心技术理念:统一生态,原生智能
  • web自动化学习笔记
  • K8s 之控制器的定义及详细调用案例
  • SpringBoot 整合 Caffeine 实现本地缓存
  • UDP_SOCKET编程实现
  • 行阶梯形矩阵的定义,通过正例和反例说明如何判断一个矩阵是不是行阶梯形矩阵
  • 9月22日,每日信息差
  • 基于python+django+mysql+Nanodet检测模型的水稻虫害检测系统
  • 基于Python+SQLite的课程管理系统