Redis 入门教程:认识 Redis 的基本概念与核心特征

· Redis笔记 Redis 缓存 数据结构 入门笔记 NoSQL · 3 阅读 · 约 3 分钟

什么是 Redis

Redis(Remote Dictionary Server)是一个开源的、基于内存的 key-value 数据库,属于 NoSQL 家族中的一员。它通常被用作缓存、消息队列或简单的数据存储,因为数据主要放在内存中,读写速度非常快,官方给出的性能数据可以达到每秒十万级别的读写操作。

与传统的关系型数据库(如 MySQL)不同,Redis 不使用表格和 SQL,而是用简单的 key-value 形式组织数据,同时也牺牲了一部分复杂查询能力,换取极致的性能。

NoSQL 是什么

NoSQL 泛指非关系型数据库,常见的分类有:

  • 键值型(key-value):如 Redis、Memcached
  • 文档型:如 MongoDB
  • 列式存储:如 HBase
  • 图形数据库:如 Neo4j

NoSQL 的特点是结构灵活、扩展方便、对海量数据和高并发场景友好,但一般不保证严格的 ACID 事务。Redis 是其中键值型数据库的代表。

Redis 的核心特征

1. 基于内存,性能极高

数据主要存储在内存中,读写速度远超磁盘型数据库,非常适合做缓存层,挡在 MySQL 前面承受高并发请求。

2. 丰富的数据结构

Redis 不是简单的字符串存储,它提供了多种原生数据类型:

  • String:字符串,最基础类型,可存文本、数字甚至序列化对象
  • Hash:哈希表,适合存对象属性
  • List:列表,可做消息队列、最新动态
  • Set:无序集合,支持交并差集运算,可用于标签、共同好友
  • SortedSet(ZSet):带分数的有序集合,适合排行榜

3. 支持持久化

虽然是内存数据库,但 Redis 支持把数据落盘,防止断电丢失:

  • RDB:定期生成内存快照,文件小、恢复快
  • AOF:记录每条写命令,数据更完整但文件较大

两者可以搭配使用。

4. 支持过期时间

每个 key 都可以设置 TTL,到期自动删除,这是实现验证码、分布式锁、缓存自动失效的基础。这也是实际开发中高频使用的特性,对应标签里的过期时间。

5. 单线程处理命令(旧版本)

Redis 的命令执行采用单线程模型,避免了锁竞争,配合 IO 多路复用(epoll)实现了高并发。6.0 之后引入多线程处理网络 IO,但命令执行仍是单线程,保证了操作的原子性。

6. 其他特性

  • 支持 publish/subscribe 发布订阅模式
  • 支持事务(MULTI/EXEC,但不支持回滚)
  • 支持 Lua 脚本
  • 支持 Redis Cluster 集群与主从、哨兵等高可用方案

Redis 的典型应用场景

  • 缓存:最常见用法,减轻数据库压力
  • 分布式锁:利用 SET NX EX 命令
  • 排行榜:用 SortedSet 按分数排序
  • 计数器:利用 String 的自增 INCR
  • 会话共享:集群环境下把 session 存到 Redis

小结

Redis 的关键词可以概括为:内存存储、key-value、数据结构丰富、高性能、支持持久化与过期时间。下一篇笔记会记录 Redis 在 Linux 上的安装与 redis-cli 的基本使用。