首页 > 数据库 >Redis基础

Redis基础

时间:2023-12-22 13:13:57浏览次数:42  
标签:事务 redis 基础 哨兵 故障 Redis 节点

一、redis简介

​ Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,常用作数据库、缓存和消息中间件。它以高性能和丰富的数据结构支持而闻名,提供了字符串、哈希表、列表、集合、有序集合等多种数据结构。

​ Redis主要特点包括:

  1. 内存存储:Redis将数据存储在内存中,因此具有快速的读写性能。同时,它也支持将数据持久化到硬盘上,以防止数据丢失。
  2. 高性能:Redis使用基于内存的数据结构和异步I/O操作,使得它能够处理大量的并发请求,并具有低延迟。
  3. 多种数据结构:除了常规的字符串类型,Redis还支持哈希表、列表、集合、有序集合等多种复杂数据结构,使得开发者可以更灵活地使用数据。
  4. 发布订阅:Redis支持发布订阅模式,允许消息的发布者和订阅者之间进行实时的消息传输,可用于构建实时通信系统或消息队列。
  5. 扩展性:Redis支持主从复制和分片技术,可以通过横向扩展来提高系统的吞吐量和容量。
  6. 丰富的功能:Redis还提供了诸如事务、持久化、过期时间、数据备份与恢复等功能,使得它成为一个功能强大的数据存储和处理工具。

​ 总之,Redis是一款高性能、灵活且功能丰富的内存数据存储系统,被广泛应用于各种场景,包括缓存、实时计算、排行榜、消息队列等。

二、redis安装

​ ubuntu下使用命令安装:

sudo apt update
sudo apt install redis-server
sudo systemctl start redis

​ 启动完成后查询是否redis服务存在

ps aux | grep 6379

​ 如果结果不止一条即成功。

三、redis的五种数据结构

  1. String(字符串):存储一个字符串或一个整数。最大能存储的数据量为512MB。
  2. Hash(哈希表):由多个键值对组成,类似于关联数组。适合存储对象类型数据,如用户信息等。
  3. List(列表):双向链表结构,支持在头部和尾部进行快速的增加、删除操作。适合实现消息队列、任务队列等场景。
  4. Set(集合):无序、不重复的元素集合。支持多种集合操作,如并集、交集等。适合实现标签系统、好友关系等场景。
  5. Sorted Set(有序集合):与Set类似,但是每个元素都有一个分数属性,用于排序。适合实现排行榜等场景。

四、redis的发布-订阅功能

​ Redis支持发布-订阅(Pub/Sub)模式,它是一种消息传递模式,可以用于构建实时通信系统、消息队列等场景。在这种模式下,消息的发布者(Publisher)将消息发送到一个频道(Channel),而消息的订阅者(Subscriber)则可以订阅这个频道来接收消息。

具体的实现流程如下:

  1. Publisher将消息发送到指定的频道。
  2. Redis服务器将该消息推送给所有已经订阅了该频道的Subscriber。
  3. Subscriber接收到消息并进行处理。

使用Redis的发布-订阅模式,可以实现高效的消息传递,同时也可以实现广播和单播等多种消息传递方式。此外,Redis还提供了PUBLISH、SUBSCRIBE、UNSUBSCRIBE等命令来实现发布-订阅功能。

五、事务

​ Redis事务的使用流程如下:

  1. 开启事务:使用MULTI命令来开启一个事务。
  2. 执行事务命令:在MULTI和EXEC之间,可以依次执行多个命令,这些命令都会被加入到事务队列中,但不会立即执行。
  3. 提交事务:使用EXEC命令来提交事务,Redis会按照执行顺序依次执行事务队列中的命令。

​ 需要注意的是redis的事务和关系型数据库的事务是不一样的,关系型事务要么全部命令执行成功,要么全部失败,而redis可能部分成功,部分失败。

​ 且在开启一个事务后,若未执行EXEC,此时其他客户端是会被阻塞访问该内容的。

六、持久化

  1. RDB持久化:RDB是将Redis的内存数据以快照的形式保存到磁盘上的二进制文件。它可以通过配置文件设置自动触发的快照保存,也可以手动执行SAVE或BGSAVE命令进行快照保存。RDB持久化具有快速、紧凑和恢复性好的特点,适用于备份和灾难恢复。
  2. AOF持久化:AOF是将Redis的写命令以追加的方式记录到一个文件中,记录的内容是可以恢复数据状态的。AOF持久化可以通过配置文件设置自动触发的频率,也可以手动执行BGREWRITEAOF命令进行重写。AOF持久化具有数据丢失较少的特点,适用于需要稍微牺牲一些性能来换取数据安全性的场景。

七、主从复制

​ 主从复制的基本原理如下:

  1. 从节点连接到主节点并发送SYNC命令,请求进行全量复制。
  2. 主节点接收到SYNC命令后,会生成并发送RDB文件或者使用内存快照保存当前数据状态,并将保存的数据发送给从节点。
  3. 从节点接收到主节点发送的数据后,会先清空自己的数据,然后加载主节点发送的数据,恢复到与主节点一致的状态。
  4. 主节点继续处理写操作,同时将写操作发送给所有连接的从节点。
  5. 从节点接收到主节点发送的写操作后,会执行相同的操作,保持与主节点的数据一致。

主从复制的优势包括:

  1. 高可用性:当主节点发生故障时,可以快速切换到从节点作为新的主节点,实现故障转移。
  2. 负载均衡:可以将读操作分摊到多个从节点上,减轻主节点的读压力,提高整体性能。
  3. 数据备份:从节点可以作为主节点的数据备份,提供数据冷备份和容灾的功能。

八、哨兵模式

​ Redis哨兵模式是一种用于监控和自动故障恢复的高可用性解决方案,适用于Redis主从复制架构中。哨兵模式通过监控Redis实例的健康状态,并在主节点故障时自动进行故障转移,以确保系统的高可用性。

在Redis哨兵模式中,通常会有多个哨兵进程运行,它们会相互通信并监控Redis实例的运行情况。当主节点出现故障时,哨兵会自动选举一个从节点作为新的主节点,并协调其他从节点切换到新的主节点上,从而实现自动故障转移。

哨兵模式的核心功能包括以下几点:

  1. 监控:哨兵会定期检测Redis实例的健康状态,包括主节点和从节点的可用性。
  2. 自动故障检测:当主节点出现故障或不可达时,哨兵会发现故障并触发故障转移流程。
  3. 故障转移:在发现主节点故障后,哨兵会选举一个合适的从节点作为新的主节点,并通知其他从节点切换到新的主节点上。
  4. 配置提供者:哨兵可以向客户端提供最新的Redis配置信息,包括主节点和从节点的地址,帮助客户端自动感知故障转移后的变化。

标签:事务,redis,基础,哨兵,故障,Redis,节点
From: https://www.cnblogs.com/dwinternet/p/17921361.html

相关文章

  • 基础数论
    目录质数质因数分解约数\(gcd\)求最大公约数质数质因数分解算术基本定理:\(任何一个大于1的正整数都能唯一分解为有限个质数的乘积,可以写作:\)\[N=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\]\(其中c_i都是正整数,p_i都是质数,且满足p_1<p_2<...<p_m\)intprimes[N],cnt[N],m;voiddi......
  • matlab图像基础知识
    1.MATLAB支持的几种图像文件格式:⑴JPEG(JointPhotogyaphicExpeytsGroup):一种称为联合图像专家组的图像压缩格式。⑵BMP(WindowsBitmap):有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。文件内容包括文件头(一个BITMAPFILEHEADER数据结构)、位图信息数据块(位图信......
  • 【scikit-learn基础】--『预处理』之 缺失值处理
    数据的预处理是数据分析,或者机器学习训练前的重要步骤。通过数据预处理,可以提高数据质量,处理数据的缺失值、异常值和重复值等问题,增加数据的准确性和可靠性整合不同数据,数据的来源和结构可能多种多样,分析和训练前要整合成一个数据集提高数据性能,对数据的值进行变换,规约等(比如......
  • 高山不语,静水流深:源启基础运行支撑平台在支撑着什么?
    导语2022年,金融级数字底座“源启”应运而生,历经一年疾速演进,已在金融、能源、制造等行业和多家央企集团的百余项重大工程中得以应用。随着中国电子计算体系重构工作的开展,源启作为对下调用管理泛在软硬件设施和资源,对上支撑各类行业数字化应用、数据产品和人工智能模型的数字基础设......
  • 高山不语,静水流深:源启基础运行支撑平台在支撑着什么?
    导语 2022年,金融级数字底座“源启”应运而生,历经一年疾速演进,已在金融、能源、制造等行业和多家央企集团的百余项重大工程中得以应用。 随着中国电子计算体系重构工作的开展,源启作为对下调用管理泛在软硬件设施和资源,对上支撑各类行业数字化应用、数据产品和人工智能模型的......
  • 3D 纹理贴图基础知识
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎介绍纹理贴图是创建模型时离不开的最后一块拼图。同样,如果没有纹理贴图的多样......
  • Redis不同版本性能研究
    Redis不同版本性能研究背景前期同事遇到了一个大key的慢查询.前提条件是:一个60万key的环境里面.有一个260万元素的set类型的key产品经常会进行smemberkey的操作出现了长达1.5秒的slowlog.同期还出现了内存飙涨与实际内存使用不符的情况.所以想着研究一下内......
  • C++基础 -11- 类的构造函数
     ———————类的构造函数——————— ......
  • bash基础使用
    小例子参考if语句a=10b=20if[$a==$b];then echo"a==b"elif[$a-lt$b]then echo"a<b"else echo'a可能>b'fi变量声明使用两种方式来声明变量#1exporta=10#2a=10上面使用exporta=10的时候,可以将这个变量暴露给其他的应用来使用,如......
  • 【SpringBootWeb入门-17】Mybatis-基础操作-动态SQL
    1、章节回顾上一篇文章我们讲解完了Mybatis基础操作,本篇继续学习Mybatis中非常重要的功能:动态SQL。什么是动态SQL:随着用户的输入或外部条件的变化而变化的SQL语句,我们称为动态SQL。简单说SQL语句不是固定的,是动态变化的。就拿我们上一篇所提到的根据条件来查询员工的SQL语句来......