当前位置:   article > 正文

Redis概述_redis是什么

redis是什么

Redis概述

Redis(Remote Dictionary Server)是一个开源的、高性能的分布式内存数据存储和缓存系统。

它可以用作数据库、缓存和消息中间件,支持多种数据结构和丰富的功能特性。
在这里插入图片描述

Redis诞生于2009年,全称是Remote Dictionary Server 远程词典服务器,是一个由C语言编写的基于内存的键值型NoSQL数据库。

在这里插入图片描述

在这里插入图片描述

Redis的官方网站地址:https://redis.io/

在这里插入图片描述

Redis作为一种键值型NoSQL数据库,结合了高性能、灵活性和丰富的功能,广泛应用于缓存、消息队列、实时分析等场景。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相比传统的关系型数据库,Redis在需要快速读写、大规模数据处理和灵活数据模型的应用中表现出色。

一、键值型数据库

键值型数据库Key-Value Store)是一种数据存储方式,其中数据以键值对的形式进行存储和检索。每个键都唯一标识一个值,值可以是任何类型的数据,例如字符串、数值、JSON对象等。
在这里插入图片描述

在Redis中:

  • (Key):通常是一个字符串,用于唯一标识一个数据条目。
  • (Value):可以是多种数据结构,包括字符串、哈希表、列表、集合、有序集合、JSON对象等。

这种键值对存储方式使得数据的插入、查询和删除操作非常高效,特别适合需要快速读写的场景。例如,缓存、会话状态管理、配置管理等。

  • Tips:Redis的键是区分大小写的。
    在这里插入图片描述

二、NoSql

NoSQLNot Only SQL)是对非关系型数据库的统称,它们与传统的关系型数据库(如MySQL、PostgreSQL)有很大的差异。

1.结构化与非结构化

关系型数据库 (RDBMS) 基于结构化数据模型,使用表格来组织和管理数据。每张表都有明确的结构定义,包括字段名、数据类型和约束条件。

  • 严格的表结构:每张表的每个字段在创建时都需要定义数据类型(如整数、字符串、日期等),以及可能的约束(如非空、唯一性、外键等)。

在这里插入图片描述
NoSql则对数据库格式没有严格约束,往往形式松散,自由。
在这里插入图片描述

NoSQL数据库 提供了更灵活的数据存储方式,适用于处理大规模数据和高吞吐量需求的应用。

  • 键值型数据库:如Redis、Riak、Amazon DynamoDB。

    • 数据模型:简单的键值对,每个键对应一个值。
    • 优点:快速读写、高性能,适合缓存、会话管理等场景。
  • 文档型数据库:如MongoDB、CouchDB。

    • 数据模型:基于文档存储,通常使用JSON或BSON格式,每个文档可以包含不同的字段。
    • 优点:灵活的数据架构,适合内容管理系统、日志记录、实时分析等场景。
  • 列族型数据库:如HBase、Cassandra。

    • 数据模型:基于列族的存储模型,每行可以有不同数量的列,列按照列族进行分类。
    • 优点:高扩展性和高吞吐量,适合大数据处理和分析。
  • 图数据库:如Neo4j、ArangoDB。

    • 数据模型:基于节点和边的图结构,节点表示实体,边表示实体间的关系。
    • 优点:高效的关系查询,适合社交网络、推荐系统、路径优化等场景。

在这里插入图片描述


2.关联和非关联

在传统关系型数据库中,可以使用外键来建立表与表之间的关联关系。

外键是一个指向其他表中主键的字段,通过外键可以实现数据的关联和一致性约束。例如,订单表和商品表之间可以通过外键来建立关联。

在这里插入图片描述
而在非关系型数据库中,通常没有像外键这样的机制来直接建立关联关系。相反,通常通过代码中的业务逻辑或者靠数据之间的耦合维护关系。

{
  id: 1,
  name: "张三",
  orders: [
    {
       id: 1,
       item: {
	 id: 10, title: "荣耀6", price: 4999
       }
    },
    {
       id: 2,
       item: {
	 id: 20, title: "小米11", price: 3999
       }
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

3.查询方式

传统关系型数据库和非关系型数据库在查询语法和标准化方面存在显著差异。

关系型数据库 使用结构化查询语言 (SQL) 来执行查询。SQL 是一种标准化的语言,几乎所有的关系型数据库(如 MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server)都支持 SQL 标准,尽管它们可能会有一些各自的扩展。

非关系型数据库 通常不使用 SQL,因为它们的数据模型和存储方式与关系型数据库不同。根据不同的 NoSQL 数据库类型,它们的查询语法和方式也各不相同。

  1. 文档数据库(如 MongoDB)

    • 使用 JSON 风格的文档来存储数据。
    • 查询语法是基于 JSON 的查询表达式。例如,MongoDB 使用 db.collection.find() 方法来查询数据。
    db.users.find({ "name": "张三" })
    
    • 1
  2. 键值存储(如 Redis)

    • 数据以键值对的形式存储。
    • 查询通常是通过键来直接访问数据,没有复杂的查询语法。
    GET user:1:name
    
    • 1
  3. 列族存储(如 Apache Cassandra)

    • 数据按列族存储,类似于分布式的哈希表。
    • 使用 CQL (Cassandra Query Language),类似于 SQL,但适应于列族存储的特点。
    SELECT * FROM users WHERE user_id = '1';
    
    • 1
  4. 图数据库(如 Neo4j)

    • 专门用于存储和查询图形数据。
    • 使用 Cypher 查询语言来查询图数据。
    MATCH (n:Person {name: '张三'}) RETURN n;
    
    • 1

在这里插入图片描述

4.事务

传统关系型数据库(RDBMS)以其对事务的严格支持和完全符合 ACID 特性而著称,而许多非关系型数据库(NoSQL)在设计时进行了权衡,以牺牲部分 ACID 特性来换取更高的性能、可扩展性和灵活性。

ACID 是事务处理的四个关键特性:

  • Atomicity(原子性):事务中的所有操作要么全部完成,要么全部不完成。这保证了系统状态的一致性,即使发生故障。
  • Consistency(一致性):事务在完成之前和之后,数据库必须保持一致状态。任何数据写入都必须使数据库从一个有效状态变为另一个有效状态。
  • Isolation(隔离性):并发执行的事务彼此之间不会相互影响,事务的中间状态对其他事务不可见。
  • Durability(持久性):一旦事务提交,其结果应永久保存在数据库中,即使系统崩溃,数据也不会丢失。

与 RDBMS 不同,许多 NoSQL 数据库在设计上优先考虑可扩展性和性能,有时会对 ACID 特性进行妥协。

关系型数据库

  • 严格遵守 ACID 特性,适合需要强一致性、高可靠性和复杂事务处理的应用场景。
  • 常用于金融、银行、电子商务等对数据一致性要求极高的领域。

非关系型数据库

  • 在设计时通常会在一致性和性能之间进行权衡,提供不同程度的事务支持和一致性保证。
  • 常用于需要高扩展性和快速响应的互联网应用,如社交媒体、内容管理和实时分析等。

如果应用需要强一致性和复杂事务处理,关系型数据库是首选;如果应用需要高扩展性和快速读写性能,且对数据一致性的要求不那么严格,则可以考虑使用 NoSQL 数据库。


三、为什么会出现Redis?

Redis(Remote Dictionary Server)最初由Salvatore Sanfilippo开发,并于2009年首次发布。

Redis的出现主要是为了解决传统数据库在性能、数据结构和高可用性等方面的局限性。

在这里插入图片描述
在这里插入图片描述

    1. 高性能的数据访问:
    • Redis 是基于内存的数据库,数据存储在内存中,因此读写速度非常快。

在这里插入图片描述

  • 相比传统的关系型数据库,它不需要进行复杂的磁盘 I/O 操作,大大提高了数据的访问速度。

在这里插入图片描述

  • 特别是对于需要高频读写、对延迟要求较高的应用场景(如缓存、实时计数等),Redis能够提供非常出色的性能。

    1. 支持丰富的数据结构:
    • Redis 不仅仅是简单的键值存储,它支持多种复杂的数据结构,如字符串、列表、集合、哈希表、有序集合等。
    • 这些数据结构可以直接在服务器端进行操作和计算,使得开发者可以更高效地处理数据。
    1. 高可用和分布式支持:
    • Redis 提供了主从复制(replication)、分片(sharding)等机制,支持数据的备份和分布式部署,提高了系统的可用性和扩展性。
    • 这使得 Redis 不仅能够应对大规模数据存储和高并发访问的需求,还能够在分布式环境中保持数据的一致性和稳定性。
  • 4.代码简洁

在这里插入图片描述

    1. 简单的持久化和数据备份:
    • Redis 支持多种持久化方式,如快照(snapshotting)和日志追加(append-only file, AOF),能够将数据存储到磁盘,保证数据不会因为服务器重启而丢失。
    • 这种机制既保证了数据的安全性,又不影响 Redis 的高性能特性,使得 Redis 在需要持久化存储的应用场景中也能够胜任。

在这里插入图片描述
在这里插入图片描述


本文仅供学习使用!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号