Redis01_NoSQL和Redis概述

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

作品集: Redis学习
作者头像
LumiBee
78 天前 · 130 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采用的是定期删除+惰性删除

阅读量: 130

评论区

登录后发表评论

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

Redis07_Redis.conf详解

# Redis.conf详解 ## 定义 `redis.conf` 是 Redis 服务器启动时加载的配置文件。它包含了 Redis 运行时的各种参数和选项,通过修改这个文件,可以自定义 R...

125
0

Spring AI 指南:如何自主构造 ChatMemory

# Spring AI 指南:如何自主构造 ChatMemory 在构建基于大语言模型(LLM)的对话式应用时,上下文管理是决定对话质量和连贯性的核心。用户不会希望模型在每一轮对话时都“忘记”...

2
0

Redis06_SpringBoot整合Redis源码解析

# SpringBoot整合 ## 默认客户端 Spring Boot在2.0版本后,将默认的Redis客户端从Jedis切换到了Lettuce 以下是主要原因: 1. **线程模型和连...

123
0

Redis04_数据类型

# 五大数据类型 ![image-20250506173728272](https://p.ipic.vip/iq69f6.png) ## Redis-Key ```bash 127.0....

91
0

Redis05_事务操作

# 事务 ## 事务操作 Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中会一次性,顺序性,排他性地执行一些列的命令. ==Redis单条命令是保证原...

118
0

Spring Security实战-构建安全的Web应用

Spring Security 作为 Spring 生态系统中不可或缺的一员,提供了一套全面且可扩展的机制来处理身份验证和授权。本文将结合实际应用场景,深入剖析 Spring Security ...

138
0