redis缓存数据库数据_Redis 6:高速数据库,缓存和消息代理

redis缓存数据库数据

与许多其他人一样,您可能会认为Redis只是一个缓存 。 这种观点已经过时了。

本质上,Redis是一个NoSQL内存数据结构存储,可以持久存储在磁盘上。 它可以用作数据库,缓存和消息代理。 Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性。 它通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

Redis核心数据模型是键值,但支持许多不同类型的值:字符串,列表,集合,排序集合,哈希,流,HyperLogLogs和位图。 Redis还支持半径查询和流的地理空间索引。

[ 也在InfoWorld上:Redis如何抓挠和痒痒-并永久更改数据库 ]

为了开源Redis,Redis Enterprise添加了用于提高速度,可靠性和灵活性的功能以及云数据库即服务。 Redis Enterprise线性扩展至每秒数亿次操作,具有本地延迟的主动-主动全局分布,以基于磁盘数据库的基础架构成本提供Flash上​​的Redis支持大型数据集,并基于已建数据库提供99.999%的正常运行时间-耐用性和一位数秒的故障转移。

此外,Redis Enterprise扩展了核心Redis功能,以通过诸如RediSearch,RedisGraph,RedisJSON,RedisTimeSeries和RedisAI等模块支持任何数据建模方法,并允许在模块与核心之间以及在模块与核心之间执行操作。 提供所有这些信息,同时将数据库延迟保持在一毫秒以内。

Redis核心功能和用例

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是一个键值存储,它支持将字符串,列表,集合,排序集合,哈希,流,HyperLogLogs和位图作为值。 最简单和最常见的用例之一是使用整数值作为计数器。 为此,INCR(增量),DECR(减量)和其他单个操作是原子的,因此在多客户端环境中是安全的。 在Redis中,当键不存在时,将自动创建它们。

> SET connections 10
OK
> INCR connections
(integer) 11
> INCR connections
(integer) 12
> DEL connections
(integer) 1
> INCR connections
(integer) 1
> INCRBY connections 100
(integer) 101
> DECR connections
(integer) 100
> DECRBY connections 10
(integer) 90

Try Redis教程中 ,其他类型的值结构也有其自己的示例。 当我自己尝试时,该教程正在进行维护。 我希望随着Redis Labs参与最初的社区工作,该问题将很快得到解决。

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

Redis Enterprise增强功能

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

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

尽管有大量关于CRDT的学术文献,但我承认我并不完全了解它们的工作方式或原因。 他们所做的简短摘要是CRDTs可以解决不一致性不进行干预,用数学推导的一套规则。 CRDT对于需要共享状态的大容量数据非常有价值,并且可以使用地理位置分散的服务器来减少用户的延迟。

Redis和Redis Enterprise之间的主要区别之一是Redis Enterprise 将数据路径与群集管理分离 。 这改善了两个组件的操作。 数据路径基于驻留在每个群集节点上的多个零延迟,多线程代理,以掩盖系统的基础复杂性。 集群管理器是一项管理功能,它提供诸如重新分片,重新平衡,自动故障转移,机架感知,数据库供应,资源管理,数据持久性配置以及备份和恢复等功能。 由于集群管理器与数据路径组件完全脱钩,因此对其软件组件的更改不会影响数据路径组件。

Flash上​​的Redis是Redis Enterprise的一项功能,可以大大降低Redis的硬件成本。 您无需花大量钱购买RAM或限制Redis数据集的大小,您可以在Flash上​​使用Redis将经常访问的热数据放置在内存中,而将较冷的值放置在Flash或永久性内存中,例如Intel Optane DC。

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

Redis 6有什么新功能?

Redis 6是一个重要的发行版,既适用于开源版本,也适用于Redis Enterprise商业版本。 性能新闻是使用线程I / O,它使Redis 6的速度比Redis 5(没有懈怠)提高了2倍。 这可以延续到Redis Enterprise中,后者如上所述对群集进行了其他速度改进。

访问控制列表(ACL)的添加为Redis 6提供了用户的概念,并允许开发人员编写更安全的代码。 Redis Enterprise 6基于ACL来提供基于角色的访问控制(RBAC),这对于程序员和DBA更加方便。

Redis 6中的主要新功能

Redis 6.0开源

  • 访问控制列表(ACL)
  • 改善驱逐
  • 线程I / O
  • RESP3协议

Redis Enterprise 6.0

  • 基于角色的访问控制(RBAC)
  • 扩展主动-主动
  • 超级日志

Redis Enterprise 6.0在主动-主动数据库中增加了对Streams数据类型的支持。 这样既可以实现高可用性,又可以实现低延迟,同时在多个地理位置的多个数据中心中的实时流中进行读写操作。

RedisGears是一个动态框架,使开发人员能够编写和执行在Redis中实现数据流的功能。 它使用户可以编写Python脚本以在Redis中运行,并支持多种用例,包括后写(Redis充当基于磁盘的数据库的前端),实时数据处理,流和事件处理,操作跨数据结构和模型,以及AI驱动的交易。

RedisAI是在Redis内部运行的模型服务引擎。 它可以使用PyTorch,TensorFlow和ONNX模型执行推理。 RedisAI可以在CPU和GPU上运行,并可以启用欺诈检测,异常检测和个性化等用例。

Redis 6评论02 IDG

在Redis Enterprise Cloud中创建新角色。 RBAC易于管理该ACL。

安装Redis

您可以通过下载并编译源代码tarball或从Docker Hub提取Docker映像来安装Redis。 Redis可以在Linux,MacOS,OpenBSD,NetBSD和FreeBSD上进行编译和使用。 源代码存储库位于GitHub上。 在Windows上,您可以在Docker容器中或在Windows Subsystem for Linux(WSL)下运行Redis,这需要Windows 10。

您可以在Linux或Docker容器中安装Redis Enterprise。 Linux下载采用二进制软件包(取决于Linux的风格,为DEB或RPM)和用于集群安装的Bash Shell脚本的形式。 脚本检查安装所需的四个内核和15 GB RAM。

Redis 6评论01 IDG

Redis Enterprise安装在Docker和Linux系统上。 此页面显示Redis Enterprise 5.0安装程序,因为Redis Enterprise 6.0安装程序仍处于发行候选阶段,尽管当我询问时,我私下获得了Redis Enterprise 6.0 RC的Linux安装程序。

Redis企业云

安装Redis Enterprise的最快方法不是完全安装它,而是在Redis Enterprise Cloud中运行它。 当我自己尝试进行审查时,最初收到了Redis 5实例; 我不得不要求升级到Redis 6。

Redis 6评论03 IDG

您可以免费在Redis Enterprise Cloud中运行一个小型实例,也可以在一个功能齐全的实例中按月价格运行,具体取决于配置的RAM数量。 虽然此说明说Redis模块不适用于低吞吐量的Essentials环境,但Redis Labs当前从AWS Mumbai区域开始在Essential级别推出Module支持。

Redis 6评论04 IDG

在Essentials级别,实例的范围从30 MB RAM(免费)到5 GB RAM(每月338美元)及以上。 Redis Enterprise Cloud实例在AWS,GCP和Azure上可用。 您可以选择自己的地区。

Redis 6评论05 IDG

拥有Redis Enterprise Cloud订阅后,创建数据库很简单,只需命名数据库,选择Redis或Memcached协议,选择复制和持久性选项,选择数据驱逐策略以及设置使用警报。

翻译自: https://www.infoworld.com/article/3563354/redis-6-a-high-speed-database-cache-and-message-broker.html

redis缓存数据库数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值