2026/4/14 16:18:35
网站建设
项目流程
网站建设如何把更改内容,做淘宝链接网站,做汽车的网站,wordpress 文件不刷新Redis是一个功能强大、性能卓越的内存数据存储系统#xff0c;它不仅可以用作缓存#xff0c;还能用于会话存储、消息队列、排行榜等多种场景。其丰富的数据类型、灵活的持久化机制和高可用性特性#xff0c;使其成为现代Web应用架构中不可或缺的组件。
1. Redis简介
1.1.…Redis是一个功能强大、性能卓越的内存数据存储系统它不仅可以用作缓存还能用于会话存储、消息队列、排行榜等多种场景。其丰富的数据类型、灵活的持久化机制和高可用性特性使其成为现代Web应用架构中不可或缺的组件。1. Redis简介1.1. Redis是什么RedisRemote Dictionary Server远程字典服务器是一个开源的非关系型数据库Redis 可以用作数据库、缓存、流引擎、消息代理等。Redis将数据存储在内存中以获得极高的读写性能同时提供持久化功能将内存中的数据保存到磁盘上以防止服务器重启时数据丢失。可以把Redis想象成一个功能强大的内存缓存系统它不仅能够快速读写数据还支持丰富的数据结构和操作是现代Web应用中不可或缺的组件。Redis相关资源Redis官网Redis官方文档Redis源码地址1.2. Redis的起源2008年萨尔瓦多在开发一个进行网站实时统计软件项目LLOOGG项目的实时统计功能需要频繁的进行数据库的读写(对数据库的读写要求很高—数千次/s)MySQL满足不了项目的需求萨尔瓦多就使用C语言自定义了一个数据存储系统—Redis。考虑到最终限制数据库性能的瓶颈在于磁盘他自己去实现一个具有列表结构的数据库的原型把数据放在内存而不是磁盘这样可以大大地提升列表的 push 和 pop 的效率。萨尔瓦多发现这种思路确实能解决这个问题所以用 C 语言重写了这个内存数据库并且加上了持久化的功能。2009 年Redis 横空出世了。后来萨尔瓦多不满足仅仅在LLOOGG这个项目中使用redis就对redis进行产品化并进行开源以便让更多的⼈能够使用。来源Redis起源从最开始只支持列表的数据库到现在支持多种数据类型并且提供了一系列的高级特性Redis 已经成为一个在全世界被广泛使用的开源项目。1.3. 为什么选择Redis摘自githubwhy choose redisRedis is a popular choice for developers worldwide due to its combination of speed, flexibility, and rich feature set. Here’s why people choose Redis for:Redis 因其速度、灵活性和丰富的功能集而受到全球开发者的喜爱。以下是人们选择 Redis 的原因Performance:Because Redis keeps data primarily in memory and uses efficient data structures, it achieves extremely low latency (often sub-millisecond) for both read and write operations. This makes it ideal for applications demanding real-time responsiveness.性能由于 Redis 主要将数据存储在内存中并采用高效的数据结构因此在读写作中实现了极低的延迟通常为亚毫秒。这使得它非常适合需要实时响应的应用。Flexibility:Redis isn’t just a key-value store, it provides native support for a wide range of data structures and capabilities listed in What is Redis?**灵活性**Redis 不仅仅是一个键值存储它还原生支持《 什么是 Redis》中列出的各种数据结构和功能。Extensibility:Redis is not limited to the built-in data structures, it has a modules API that makes it possible to extend Redis functionality and rapidly implement new Redis commands**可扩展性**Redis 不仅限于内置数据结构它还有一个模块 API可以扩展 Redis 功能并快速实现新的 Redis 命令。Simplicity:Redis has a simple, text-based protocol and well-documented command set**简洁**Redis 拥有简单的文本协议和文档完善的命令集。Ubiquity:Redis is battle tested in production workloads at a massive scale. There is a good chance you indirectly interact with Redis several times daily**普及性**Redis 在大规模生产工作负载中经过了实战考验。你很可能每天多次间接与 Redis 互动。Versatility: Redis is the de facto standard for use cases such as:多样性Redis 是以下用例的事实标准Caching:quickly access frequently used data without needing to query your primary database缓存无需查询主数据库即可快速访问常用数据。Session management:read and write user session data without hurting user experience or slowing down every API call会话管理读写用户会话数据同时不损害用户体验或减缓每次 API 调用。Querying, sorting, and analytics:perform deduplication, full text search, and secondary indexing on in-memory data as fast as possible查询、排序和分析尽可能快速地对内存数据进行重复删除、全文搜索和二次索引。Messaging and interservice communication:job queues, message brokering, pub/sub, and streams for communicating between services消息传递与服务间通信作业队列、消息代理、发布/订阅以及服务间通信流。Vector operations:Long-term and short-term LLM memory, RAG content retrieval, semantic caching, semantic routing, and vector similarity search向量运算长期和短期 LLM 记忆、RAG 内容检索、语义缓存、语义路由和向量相似性搜索。In summary, Redis provides a powerful, fast, and flexible toolkit for solving a wide variety of data management challenges.总之Redis 提供了一套强大、快速且灵活的工具包用于解决各种数据管理难题。2. Redis的核心特性2.1. 高性能Redis的最大特点是其卓越的性能。由于数据存储在内存中Redis的读写速度非常快通常情况下每秒可以处理10万次以上的读写操作。根据官方测试数据Redis在普通硬件上可以达到每秒约110,000次SET操作和每秒约81,000次GET操作。这种高性能得益于以下因素数据存储在内存中访问速度极快单线程事件循环模型避免了线程切换的开销高效的数据结构设计非阻塞I/O操作传统 Redis核心网络 I/O 和命令处理是单线程的Redis 6.0引入了多线程来处理网络 I/O但命令执行仍是单线程2.2. 丰富的数据类型Redis不仅仅是一个简单的键值存储系统它支持多种数据结构这使得它比传统的键值存储更加灵活和强大字符串Strings最基本的类型可以存储文本、数字或二进制数据如图片。哈希Hashes用于存储字段和值的映射适合存储对象。列表Lists按插入顺序排序的字符串元素集合可以从两端进行插入和删除操作。集合Sets无序的字符串集合不允许重复元素支持集合间的交、并、差运算。有序集合Sorted Sets类似于集合但每个元素都关联一个分数元素按分数排序。位图Bitmaps基于字符串的位操作可以高效地处理大量布尔值。超日志HyperLogLogs用于估计集合中唯一元素的数量。地理空间Geospatial存储地理位置信息并支持位置查询。这些也只是Redis支持的数据类型的一部分另外还有Vector Set向量集、Stream流、JSON等等。可以参考官网Redis Data TypeRedis 不仅限于内置数据结构它还有一个模块 API可以扩展 Redis 功能并快速实现新的 Redis 命令。2.3. 持久化机制虽然Redis是内存数据库但它提供了多种持久化机制来确保数据的安全性RDBRedis Database在指定的时间间隔内将内存中的数据集快照写入磁盘。这种机制适合备份恢复速度较快但可能丢失最后一次快照后的数据。AOFAppend Only File记录每个写操作命令当Redis重启时会重新执行这些命令来恢复数据。AOF提供了更好的数据安全性但文件通常比RDB大恢复速度较慢。混合持久化Redis 4.0引入的新机制结合了RDB和AOF的优点在AOF中使用RDB快照和追加写命令。2.4. 复制与高可用Redis支持主从复制Master-Slave Replication可以将一个Redis服务器的数据复制到多个从服务器。这种机制提供了以下好处数据冗余实现数据的热备份读写分离主服务器处理写操作从服务器处理读操作高可用当主服务器宕机时可以快速切换到从服务器此外Redis还提供了Sentinel哨兵系统用于监控Redis主从服务器的运行状态并在主服务器宕机时自动进行故障转移。2.5. 分片Redis支持分片Sharding机制可以将数据分布在多个Redis实例上以提高系统的存储能力和处理能力。Redis Cluster是官方提供的分布式解决方案支持自动分片和高可用性。2.6. 丰富的功能Redis还提供了一些高级功能比如事务支持简单的事务功能可以将多个命令打包执行。发布/订阅提供发布/订阅模式可以用于实现消息队列等功能。Lua脚本支持使用Lua脚本执行复杂的操作减少网络往返次数。键过期支持为键设置过期时间Redis会自动删除过期的键。流水线支持将多个命令打包发送减少网络延迟的影响。3. Redis的应用场景下面是Redis的常用场景当然Redis的应用场景远不止这些缓存系统Redis最常用的应用场景是作为缓存系统。由于其高性能的读写能力Redis可以显著提高Web应用的响应速度。通常将热点数据存储在Redis中减少对后端数据库的访问压力。会话存储在分布式系统中Redis常用于存储用户会话信息。多个应用服务器可以共享存储在Redis中的会话数据实现用户状态的统一管理。消息队列Redis的列表和发布/订阅功能使其成为一个轻量级的消息队列系统可以用于处理异步任务、实现应用间的解耦。排行榜/计数器Redis的有序集合特性使其非常适合实现排行榜功能。例如可以使用ZADD命令将用户的分数添加到有序集合中然后使用ZRANGE命令获取排名。实时分析Redis的高性能和丰富的数据结构使其适合用于实时数据分析如统计网站访问次数、在线用户数等。上面这些场景比较实际Redis官网从更高层次的角度列举了一些Redis的主要使用场景Caching:Supports multiple eviction policies, key expiration, and hash-field expiration.缓存支持多种驱逐策略、密钥过期和哈希字段过期。Distributed Session Store:Offers flexible session data modeling (string, JSON, hash).分布式会话存储提供灵活的会话数据建模字符串、JSON、哈希。Data Structure Server:Provides low-level data structures (strings, lists, sets, hashes, sorted sets, JSON, etc.) with high-level semantics (counters, queues, leaderboards, rate limiters) and supports transactions scripting.数据结构服务器提供低层数据结构字符串、列表、集合、哈希、排序集、JSON 等并支持高级语义计数器、队列、排行榜、速率限制器并支持事务和脚本。NoSQL Data Store:Key-value, document, and time series data storage.NoSQL 数据存储键值、文档和时间序列数据存储。Search and Query Engine:Indexing for hash/JSON documents, supporting vector search, full-text search, geospatial queries, ranking, and aggregations via Redis Query Engine.搜索与查询引擎为哈希/JSON 文档提供索引支持矢量搜索、全文搜索、地理空间查询、排名和通过 Redis 查询引擎进行聚合。Event Store Message Broker:Implements queues (lists), priority queues (sorted sets), event deduplication (sets), streams, and pub/sub with probabilistic stream processing capabilities.活动商店与消息代理实现队列列表、优先队列排序集合、事件去重集合、流以及具有概率流处理能力的发布/订阅。Vector Store for GenAI:Integrates with AI applications (e.g. LangGraph, mem0) for short-term memory, long-term memory, LLM response caching (semantic caching), and retrieval augmented generation (RAG).生成式人工智能的向量存储器与人工智能应用如 LangGraph、mem0集成用于短期记忆、长期记忆、LLM 响应缓存语义缓存和检索增强生成RAG。Real-Time Analytics:Powers personalization, recommendations, fraud detection, and risk assessment.实时分析具备个性化、推荐、欺诈检测和风险评估的能力。4. Redis与其他数据库的比较4.1. 与关系型数据库的比较特性Redis关系型数据库数据模型键值对多种数据结构表格结构行和列性能极高内存存储中等磁盘存储持久性可选RDB、AOF默认持久化查询语言简单命令SQLACID支持有限支持完整支持适用场景缓存、会话存储复杂查询、事务处理4.2. 与Memcached的比较特性RedisMemcached数据类型丰富的数据类型简单的键值对持久化支持不支持多线程单线程多线程内存效率较高非常高功能丰富度丰富相对简单传统 Redis核心网络 I/O 和命令处理是单线程的Redis 6.0引入了多线程来处理网络 I/O但命令执行仍是单线程5. Redis版本历史Redis自2009年首次发布以来经历了多个重要版本的迭代每个版本都引入了新的功能和性能改进。以下是Redis发展过程中的一些重要版本及其变更5.1 Redis 1.0-2.02009-2010年Redis最初的几个版本奠定了其基础架构。2009年5月第一个稳定版本发布支持基本的字符串、列表、集合等数据类型。这个阶段Redis主要是一个简单的内存键值存储系统。5.2 Redis 2.22011年9月这个版本引入了两个重要的功能Pub/Sub发布/订阅允许客户端订阅频道并接收发布到这些频道的消息配置动态重载支持在不重启服务的情况下重新加载配置5.3 Redis 2.42011年12月Redis 2.4版本主要关注稳定性和性能优化同时改进了内存管理和持久化机制。5.4 Redis 2.62012年12月这是Redis发展史上的一个重要里程碑引入了Lua脚本支持允许在服务器端执行Lua脚本大大增强了Redis的编程能力Bit Operations位操作对字符串类型增加了位操作命令如GETBIT、SETBIT等Object Commands对象命令新增了如OBJECT命令用于检查内存使用情况和内部状态5.5 Redis 2.82013年11月这个版本引入了几个关键功能Redis Sentinel哨兵提供了高可用性解决方案可以监控、通知、自动故障转移Redis Replication优化改进了主从复制机制增加了部分重同步功能减少网络中断时的全量同步集群支持预览虽然未完全完成但为后续的集群功能奠定了基础5.6 Redis 3.02015年4月这是Redis历史上最重要的版本之一因为Redis Cluster集群正式发布了Redis集群功能提供了自动分片和高可用性集群功能使得Redis可以水平扩展支持更大的数据量和更高的并发访问5.7 Redis 3.22016年5月这个版本增加了Geo Commands地理空间命令新增了地理位置相关的命令如GEOADD、GEORADIUS等Redis on Windows微软发布了Redis在Windows上的正式支持版本ACLs访问控制列表引入了更细粒度的访问控制机制5.8 Redis 4.02017年7月Redis 4.0带来了重大改进LFU/LRU improvements缓存淘汰策略改进提供了更精确的缓存淘汰算法Redis Modules允许开发者创建Redis模块扩展Redis的功能Active Memory Defragmentation主动内存碎片整理减少了内存碎片提高了内存使用效率混合持久化AOF重写时使用RDB格式结合了RDB和AOF的优点5.9 Redis 5.02018年7月Redis 5.0的主要特性是Streams流数据类型引入了全新的Stream数据类型支持消息队列功能具有持久化和消费组等特性Stream数据类型使得Redis成为一个功能强大的消息中间件5.10 Redis 6.02020年5月这是Redis的重大更新主要特性包括ACL访问控制列表正式支持细粒度的用户权限管理Client Side Caching客户端缓存通过RESP3协议支持客户端缓存减少不必要的网络请求Threaded I/O线程I/O引入了多线程I/O显著提高了网络处理性能Redis Cluster Proxy为集群提供了代理支持5.11 Redis 7.02022年4月Redis 7.0是最新的主要版本引入了Functions函数新的脚本功能替代了传统的EVAL命令提供了更好的性能和安全性Command Tips为命令提供了更详细的使用提示ACL日志记录ACL相关的操作日志性能改进在多个方面进行了性能优化