首页 > 图灵资讯 > 技术篇>正文

关于Redis 知识,这些你肯定不知道

2023-04-16 09:24:02

和很多人一样,你可能会认为Redis只是缓存。今天讲一下关于redis知识这种观点已经成为过时的错误观点。本质上,Redis是NoSQL内存数据结构存储,可以长期存储在磁盘上。它可以用作数据库,缓存和消息代理。Redis具有内置复制、Lua脚本、LRU逐出、事务和不同级别的磁盘耐久性。它通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。Redis是速度、弹性、可扩展性和灵活性的强大结合,Redis Enterprise可以进一步扩展。

Redis的核心数据模型是键值,但它支持许多不同类型的值:字符串、列表、集合、排序集合、哈希、流动、Hyperloglogs和位图。Redis还支持半径查询和流的地理空间索引。Redis的开源,Redis Enterprise增加了提高速度、可靠性和灵活性的功能,以及云数据库即服务。Redis Enterprise线性扩展到每秒数亿次操作,具有本地延迟的主动-主动全局分布,基于磁盘数据库的基本架构成本提供Flash上的Redis支持大型数据集,基于已建数据库提供99.99%正常运行时间-耐久性和一位数秒的故障转移。

此外,Redis 通过Redisearch,Enterprise扩展了核心Redis功能,RedisGraph,RedisJSON,Redistimeseries和RedisAI等模块支持任何数据建模方法,允许在模块和核心之间以及模块和核心之间进行操作。提供所有这些信息,并将数据库延迟到1毫秒以内。

Redis现在可以用作数据库、缓存和信息代理。这意味着什么?这些角色支持哪些用例?接下来,让我们逐一分析和回答。

缓存是经典的Redis功能。Redis本质上位于基于磁盘的数据库前面,并保存查询和结果。应用程序首先检查Redis缓存中是否存储结果,然后查询基于磁盘的数据库中不存在缓存的结果。考虑到Redis的毫秒响应速度,这通常是应用程序性能的重大胜利。Redis缓存中的到期计时器和LRU(最近最少使用)驱逐有助于保持缓存的最新状态,并有效地使用内存。

会话的存储是现代的Web应用程序的重要组成部分。在这里,用户及其与应用程序交互的信息可以很容易地保留。在Web场系统结构中,直接托管在Web服务器上的会话存储需要用户“粘”对于未来同一后端服务器的要求,负载平衡器可能会受到限制。将基于磁盘的数据库用于会话存储,不需要将会话绑定到单个Web服务器,而是引入其他延迟源。将Redis(或任何其他快速内存数据库)用作会话存储通常会导致低延迟、高吞吐量的Web应用程序系统结构。

Redis可作为函数消息代理使用三种不同的机制,重要用例的Redis酮是微服务之间的胶水。Redis有一个低成本的发布/订阅通知机制,可以促进即发即弃信息,但在目标服务未被调查时不起作用。对于更持久的消息队列,类似于Kafka,Redis使用stream,它们是按时间戳在单个键中排序的键值。Redis还支持存储在单个键上的元素的双向链接列表,可用作先进先出的列表(FIFO)队列。虽然缓存应该在不同于消息队列的Redis实例中运行,但微服务可以并且经常使用Redis作为缓存和消息代理。基本复制可以在不使用Redis的情况下扩展Redis Enterprise版本的集群技术。Redis复制使用领导者跟随模型(也称为主从模型),默认情况下是异步。客户端可以使用WAIT命令强制同步复制,但即便如此,Redis也不能在所有副本之间保持一致。

Redis有一个服务器Lua脚本,允许程序员在不编写C模块或客户代码的情况下扩展数据库。基本的Redis事务允许客户使用MULTI和EXEC命令来定义和运行命令序列,并将命令序列声明为不可中断的单元。这是一种不同的回滚关系事务。

Redis具有不同级别的磁盘耐久性,用户可以选择。RDB(Redis数据库文件)持久性根据指定时间间隔获取数据库的时间点快照。AOF(仅附加文件)持久记录服务器接收的每个写作操作。您可以使用RDB和AOF的持久性来获得最大的数据安全性。

Redis Sentinel本身就是一个可以为Redis提供高可用性的分布式系统。它监控主实例和副本实例,在问题发生时发出通知,并在主实例停止工作时自动转移故障。它还作为客户端的配置程序。

Redis Cluster提供了一种操作Redis安装的方法,其中数据将在多个Redis节点之间自动分割。Redis集也在分区期间提供了一定程度的可用性,尽管如果大多数主服务器不可用,集也会停止运行。

如前所述,Redis是一个键存储,支持字符串、列表、集合、排序集合、哈希、流、Hyperlogogs和位图作为值。最简单和最常见的用例之一是使用整数值作为计数器。为此,INCR(增量),DECR(减量)和其他单个操作都是原子的,所以在多客户端环境中是安全的。在Redis中,当键不存在时,它们会自动创建。

Redis 还有许多附加模块,包括神经网络模块(按流行程度降序排列),全文搜索,SQL,JSON数据类型和图形数据库。模块许可证由作者设置。一些与Redis一起使用的模块主要是Redis Enterprise模块。

Redis Enterprise增强功能:采用无共享集群架构,Redis Enterprise提供了无限的线性扩展,而不会在横向扩展的系统结构中施加任何非线性开支。为了充分利用多核计算机系统结构,可以在单个群集节点上部署多个Redis实例。Redis Enterprise证明,它可以扩展到每秒数亿个操作,并且有五个9(99.9999%)正常运行时间。Redis Enterprise执行自动重新分片和重新平衡,同时保持低延迟和高吞吐量的事务负载。

Redis Enterprise为全局分布的数据库提供主动-主动部署,以便在同一数据集上跨多个地理位置读写。为提高效率,Redis Enterprise可以使用无冲突的复制数据类型(CRDT)维护数据的一致性和可用性。Riak和Azure Cosmos DB是另外两个NoSQL数据库,支持CRDT。

Redis和Redis Enterprise之间的主要区别之一是Redise Enterprise 将数据路径与集群管理分离。这改进了两个组件的操作。数据路径基于停留在每个集群节点上的多个零延迟和多线程代理,以掩盖系统的基本复杂性。集群管理器是一种管理功能,提供重新分割、重新平衡、自动故障转移、框架感知、数据库供应、资源管理、数据持久配置、备份和恢复等功能。由于集群管理器与数据路径组件完全脱钩,软件组件的更改不会影响数据路径组件。Flash上的Redis是Redis Enterprise的功能可以大大降低Redis的硬件成本。不需要花很多钱购买RAM或限制Redis数据集的大小。您可以在Flash上使用Redis将经常访问的热数据放置在内存中,并将冷值放置在Flash或持久性内存中,如Intel Optane DC。

Redis 包括RedisGraph的Enterprise模块,RedisJSON,RedisTimeSeries,RedisBloom,Redisearch和RedisGears。所有Redis Enterprise模块也可以与开源redis一起使用。

还担心学不好Redis你还在犹豫什么,心不如行动,迅速打开本网站观看专业Redis视频课程,开启你的Redis大神之路。

上一篇 简述Oracle数据库特点
下一篇 如何完全删除MySQL数据库

文章素材均来源于网络,如有侵权,请联系管理员删除。