分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK
介绍redis
Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。
作为一种内存数据库,Redis将数据存储在内存中,因此能够实现非常快速的读写操作。与磁盘存储相比,内存存储能够大幅提升数据的访问速度。这使得Redis成为一个优秀的缓存系统,能够将频繁访问的数据存储在内存中,从而提高读取性能。数据库服务器中的冷热分离(二八原则,对于经常被查询的数据,可以将其存储在Redis中,利用Redis快速的读取和写入能力,以提升数据的访问速度。)就可用redis实现
此外,Redis还提供了丰富的数据结构支持,包括字符串、哈希表、列表、集合和有序集合等,使得它不仅可以简单地存储键值对,还可以处理复杂的数据结构,满足各种不同的需求。
在分布式架构中,Redis也具备主从复制、Sentinel机制和Cluster集群等特性,以确保高可用性和扩展性。
* 介绍NoSQL
MySQL和NoSQL是两种不同类型的数据库系统,它们各自具有一些特点和适用场景。
MySQL:
- 关系型数据库管理系统(RDBMS),采用结构化数据表来存储数据,支持 SQL 查询语言。
- 适用于需要复杂事务处理、强一致性和丰富的查询功能的应用场景。
- 支持ACID(原子性、一致性、隔离性、持久性)事务特性,确保数据的完整性和一致性。
- 具有成熟的数据建模能力,支持复杂的关联查询、多表连接等操作。
- 适用于需要严格数据一致性和复杂数据分析的企业级应用。
NoSQL:
- 非关系型数据库系统,使用灵活的数据模型,可以存储半结构化或非结构化数据。
- 适用于大规模分布式系统、高并发读写、数据量巨大的场景。
- 分为多种类型,包括键值存储、文档型数据库、列存储数据库和图形数据库等,每种类型的NoSQL数据库都有自己的优势。
- 通常以牺牲一部分ACID特性为代价,追求高可用性、横向扩展和灵活的数据模型。
- 更适合于需要高性能、大容量存储和灵活的数据模型的应用,例如日志记录、实时分析、内容管理等场景。
在选择数据库系统时,需要根据具体的应用需求来进行权衡。如果应用需要复杂的事务处理和强一致性,以及复杂的查询需求,那么MySQL等关系型数据库可能是更好的选择。而对于需要高性能、大规模存储和分布式部署的场景,NoSQL数据库可能更为合适。
此外,还有一种趋势是将关系型数据库和NoSQL数据库结合使用,即所谓的“多模型数据库”,以充分发挥各自的优势,满足不同的业务需求。
redis特点
官网https://redis.io/
以下是Redis的一些主要特点:
- 内存存储:Redis将数据存储在内存中,因此读写操作非常快速(以实现高速的读写操作(还引入了IO多路复用,一个线程管理多个socket)。这使得Redis能够实现非常低延迟和高吞吐量的数据访问此外,Redis也支持将数据异步地持久化到磁盘上,以便在重启后能够恢复数据。
- 键值存储:Redis是一种键值存储系统,每个键都关联着一个值,这个值可以是字符串、哈希、列表、集合等多种数据结构。通过键快速访问和操作对应的值
- 数据结构支持:除了基本的字符串键值对之外,Redis还支持丰富的数据结构,如列表、集合、有序集合、哈希表等,这使得Redis可以应对各种不同的需求。
- 可编程性:可直接通过简单的交互式命令进行操作,也可通过脚本的方式,批量执行操作
- 可扩展性:Redis提供了一组API,在原有的功能上进行扩展(以支持更多的数据结构,命令),通过几个语言编写Redis扩展,本质上是一个动态链接库
- 持久化与备份:除了将数据存储在内存中,Redis还支持将数据持久化到硬盘上,以防止数据丢失。
- 分布式(支持集群):Redis Cluster可以让多个Redis实例组成集群,从而提供了分布式的能力。
- 高可用性:Redis提供了主从复制(Master-Slave Replication)和哨兵(Sentinel)机制来确保高可用性和故障转移。以提供数据的高可用性和容错能力。通过配置主从复制和哨兵节点,Redis可以实现自动故障恢复和故障转移。
由于其快速、灵活和丰富的功能,Redis被广泛应用于缓存、会话存储、消息队列、实时排行榜、发布/订阅系统等方面。
redis使用场景
实时数据存储:Redis的快速读写能力和多功能的数据结构使其非常适合用于实时数据存储。例如,在在线游戏中,可以使用Redis存储玩家的实时位置、状态等数据;在金融交易系统中,可以使用Redis存储实时的市场行情数据;
缓存和会话存储:Redis作为缓存的应用非常广泛。它可以存储经常被查询的数据,如数据库查询结果、计算结果、API调用的响应等,从而大幅提高系统的性能和响应速度。此外,Redis还被广泛用作会话存储,用于存储用户登录状态、购物车信息等会话相关的数据。
消息队列(生产者-消费者模型,优势:解耦合;削峰填谷):Redis的流数据类型支持高速数据引入和消息传递,因此在消息队列、事件溯源等场景中有着重要的应用。它可以用于实现发布/订阅模式,处理实时的消息传递和事件通知,也可以用于构建简单的流媒体系统,处理实时数据的输入和输出。
* 不能使用Redis存储大规模数据