Redis01_NoSQL和Redis概述

NoSQL是非关系型数据库统称,支持灵活数据模型、高扩展性和高性能,包括键值、文档、列族和图数据库等类型。Redis是基于内存的键值数据库,支持多种数据结构,高性能且支持持久化。其单线程设计通过内存存储和高效事件机制保证性能,6.0后引入多线程IO提升网络处理能力。采用定期删除和惰性删除策略管理过期数据。

作品集: Redis学习
作者头像
LumiBee
22 天前 · 41 0
分享

NoSQL

概述

​ NoSQL("Not Only SQL")是一类非关系型数据库的统称,主要用于存储,管理和查询非结构化或半结构化数据.与传统的关系型数据库(如MySQL, PostgreSQL)不同,NoSQL不使用表格结构,也不依赖SQL语言

特点

  • 灵活的数据模型:支持键值,文档,列族,图等多种形式
  • 高可扩展性:适合处理大规模数据,容易进行水平扩展
  • 高性能:在某些读写密集型场景下比传统数据库更快
  • 适应性强:适合结构变化频繁或不固定的场景

常见的NoSQL类型与示例

| 类型 | 示例数据库 | 数据结构说明 | | -------- | --------------- | ---------------------------- | | 键值存储 | Redis,Riak | 通过key访问value(非常快速) | | 文档存储 | MongoDB,CouchDB | 类似JSON的文档格式存储数据 | | 列族存储 | Cassandra,HBase | 每行可有不同列(适合大数据) | | 图数据库 | Neo4j,ArangoDB | 用于存储节点和关系(社交网络) |

Redis

概述

Redis(Remote Dictionary Server) 是一个基于内存的 键值(Key-Value)数据库,支持多种数据结构,如字符串、列表、哈希、集合、有序集合等。

  • 高性能:所有数据都存储在内存中,读写非常快。
  • 多数据结构支持:不仅能存储字符串,还能存储 list、hash、set 等复杂类型。
  • 支持持久化:可以将内存中的数据保存到磁盘。
  • 可用作缓存、消息队列、排行榜、会话存储等。

单线程解读

含义

Redis的核心网络IO和命令处理是由一个线程完成的,也就是说:

  • 所有的客户端的命令是串行执行的
  • 同一时间Redis只能处理一个命令
  • 不需要加锁就能保证数据一致性(这也是Redis高性能的原因之一)

因此说Redis是单线程的

单线程还快的原因

  • 所有数据都在内存中,访问速度极快;

  • 基于高效的事件机制(如 epoll)处理 IO;

  • 使用了高效的数据结构;

  • 没有线程上下文切换的开销;

  • 命令处理速度非常快(通常是微秒级)。

Redis不是完全“单线程”

从 Redis 6.0 起,引入了 多线程 IO 支持(多线程网络读写),通过开启 io-threads 配置项来实现:

  • 处理客户端连接的 读写 IO(如读取命令、返回结果)可以多线程处理;
  • 命令执行本身 仍然是主线程串行完成的。

这主要提升了在大量客户端连接时的性能,特别是网络带宽压力较大时。

过期数据的删除策略

Redis常用的过期数据的删除策略就两个:

  • 惰性删除:只会在取出key的时候对数据进行过期检查.这样对CPU最友好,但是可能会造成太多过期的key没有被删除
  • 定期删除:每隔一段时间抽取一批key执行删除过期key操作.并且,Redis底层会通过限制删除操作执行的时长和频率来减少

定期删除对内存更加友好,惰性删除对CPU更加友好.所以,Redis采用的是定期删除+惰性删除

阅读量: 41

评论区

登录后发表评论

正在加载评论...
相关阅读

暂无相关文章推荐

返回首页浏览更多文章