Redis系列入门学习笔记第一篇:Redis核心基本原理与Redis五大基础数据类型

本文为Redis系列入门学习笔记的第一篇,针对Redis核心基本原理与五大基础数据类型展开系统性梳理,旨在拆解Redis底层逻辑与核心数据结构的应用规范,为后续深入学习Redis进阶特性与工程实践奠定基础。

本文核心覆盖两大模块:一是Redis的定义、核心运行原理与核心特性辨析;二是Redis五大基础数据类型的底层逻辑、核心特性、常用操作规范及典型应用场景


一、Redis核心基本原理

1.1 Redis定义与定位

Redis全称为Remote Dictionary Server,即远程字典服务,是一款开源、高性能、基于内存存储的非关系型键值(Key-Value)数据库,隶属于NoSQL数据库范畴。相较于传统关系型数据库,Redis依托内存存储的核心优势,具备极高的读写吞吐能力,同时支持数据持久化、多种复杂数据结构、主从复制、分布式集群等特性,可广泛应用于缓存加速、分布式锁、消息队列、流量限流、计数器统计等后端工程场景,是高并发系统架构中的核心组件。

1.2 核心运行原理与关键特性

1.2.1 存储架构:内存为主,持久化为辅

Redis的核心性能优势源于其内存优先存储机制。传统关系型数据库(如MySQL)数据默认存储于磁盘,读写操作依赖磁盘IO,受限于物理硬件性能,读写延迟较高;而Redis将核心业务数据加载至内存中进行读写操作,内存的随机读写速度远高于磁盘IO,使其单机QPS可轻松突破10万级别,完美适配高并发场景下的快速数据访问需求。

为解决内存数据易丢失的缺陷,Redis提供完善的数据持久化机制,可将内存中的数据定期或实时同步至磁盘存储,实现服务重启后的数据快速恢复,兼顾高性能与数据可靠性。

1.2.2 线程模型:单线程核心执行与IO多路复用

Redis 6.0版本前采用纯单线程模型,核心命令执行流程由单线程完成,其高性能的核心支撑为IO多路复用技术。该技术可通过单个线程监听多个客户端网络连接,实现并发请求的高效处理,同时规避了多线程场景下的上下文切换开销与资源竞争问题,保障了命令执行的原子性与稳定性。

Redis 6.0及后续版本引入多线程优化,但仅针对网络IO层面进行并行处理,核心数据读写与命令执行模块仍保留单线程机制,因此无需考虑线程安全问题,命令执行具备天然原子性。

1.2.3 数据存储结构:Key-Value键值对模型

Redis采用标准的Key-Value键值对存储结构,其中Key为唯一字符串类型标识,不允许重复,用于精准定位对应数据;Value为数据存储载体,支持多种数据类型,这也是Redis区别于普通键值数据库的核心优势。相较于关系型数据库的表结构存储,Redis无需预定义数据结构,数据读写更灵活,适配动态数据存储场景。

1.2.4 非关系型数据库特性

Redis属于NoSQL数据库,不遵循关系型数据库的表、行、列结构规范,不支持标准SQL语句,无事务ACID强约束,数据耦合度低,与关系型数据库形成互补:关系型数据库用于存储核心业务结构化数据,保证数据一致性;Redis用于存储热点临时数据、缓存数据,提升系统访问效率。

1.3 Redis典型工程应用场景

  • 热点数据缓存:缓存高频访问的非实时变更数据,降低关系型数据库查询压力,优化系统响应速度

  • 分布式锁实现:依托Redis命令原子性,实现分布式系统下的资源互斥访问,解决并发安全问题

  • 计数器与限流管控:利用原子自增自减操作,实现访问量统计、接口限流、频次控制等功能

  • 消息队列与发布订阅:基于列表、集合等数据类型,实现简易消息队列与消息发布订阅模式

  • 会话信息存储:替代传统Session机制,实现分布式系统下的用户会话统一管理


二、Redis五大基础数据类型详解

数据类型是Redis的核心特性,其Value支持多种结构化数据存储,入门阶段需重点掌握String(字符串)、Hash(哈希)、List(列表)、Set(集合)、ZSet(有序集合)五大基础类型,各类数据类型对应不同的底层实现与应用场景,需精准区分特性与使用规范。

2.1 String(字符串类型)

String是Redis最基础、应用最广泛的数据类型,属于二进制安全类型,可存储任意格式的二进制数据,包括普通字符串、整数、浮点数、图片、序列化对象等,单个String类型Value最大存储容量为512MB。

核心特性
  • 采用标准Key-Value一对一映射结构,是最基础的键值对存储形式

  • 支持数值类型的原子自增(INCR)、自减(DECR)操作,适用于计数器类场景

  • 二进制安全特性,数据存储与读取无编码乱码问题

  • 支持批量读写、过期时间设置等常规操作,适配缓存场景

常用应用场景
  • 缓存简单结构化数据、用户token存储、接口限流计数、商品库存统计、文章阅读量计数等轻量级数据存储场景。

2.2 Hash(哈希类型)

Hash类型是一个键值对嵌套结构,可理解为Redis中的Value对应一个小型哈希表,每个Hash包含多个field-value对,适用于存储对象类结构化数据,相较于String类型存储对象,Hash类型支持字段级别的读写,无需全量序列化与反序列化,资源消耗更低。

核心特性
  • 采用Key-Field-Value三层存储结构,一个Key对应多个Field-Value子键值对

  • 支持单个字段的增删改查操作,数据操作粒度更精细

  • 底层采用压缩列表(ziplist)与哈希表(hashtable)两种编码,数据量较小时自动使用压缩列表,节省内存空间

  • 支持批量获取字段值、统计字段数量等操作,适配对象存储场景

常用应用场景
  • 存储用户信息、商品详情、配置参数等结构化对象数据,实现对象属性的独立更新与查询。

2.3 List(列表类型)

List类型是有序的字符串列表,底层基于双向链表与压缩列表实现,数据按照插入顺序排序,支持两端的快速插入与弹出操作,元素可重复,具备队列与栈的双重特性。

核心特性
  • 有序性:元素按照插入先后顺序排列,支持通过索引查询指定位置元素

  • 双向操作:支持头部(LPUSH)、尾部(RPUSH)插入元素,头部(LPOP)、尾部(RPOP)弹出元素

  • 元素可重复,无唯一性约束

  • 底层编码根据数据量自动切换,小数据量使用压缩列表,大数据量使用双向链表,兼顾性能与内存

常用应用场景
  • 实现简易消息队列、任务队列、朋友圈时间线、商品评论列表、历史记录展示等有序列表场景。

2.4 Set(集合类型)

Set类型是无序、唯一的字符串集合,底层基于整数集合与哈希表实现,核心特性为元素无序且不可重复,支持多集合间的交集、并集、差集运算。

核心特性
  • 无序性:元素无固定排列顺序,不支持通过索引定位元素

  • 唯一性:集合内不允许存在重复元素,自动去重

  • 支持集合间交、并、差集运算,操作效率高

  • 支持随机获取元素、统计元素数量等操作

常用应用场景
  • 用户好友列表、共同关注统计、去重计数、随机推荐、黑名单/白名单管理等场景。

2.5 ZSet(有序集合类型)

ZSet全称为Sorted Set,即有序集合,是Redis中功能最复杂的基础数据类型,结合了List的有序性与Set的唯一性,通过为每个元素关联一个分数(Score)实现有序排序,分数可重复,元素唯一。

核心特性
  • 有序性:元素根据关联Score值自动排序,支持正序、倒序查询

  • 唯一性:集合内元素唯一,分数可重复,相同分数则按照元素字典序排序

  • 底层采用压缩列表与跳表(SkipList)实现,大数据量下排序与查询效率极高

  • 支持根据分数范围、元素排名查询数据,支持分数增减操作

核心应用场景
  • 排行榜系统(成绩、销量、热度排行)、优先级队列、带权重的任务调度等场景。

三、实践演示

在安装好Redis之后启动服务

事先配置环境变量或切换到Redis安装目录

使用如下命令

redis-server.exe

image

可以看到服务已经启动了

再打开一个命令行窗口(注意不要把原先的窗口关了!!!)

输入如下命令,进行操作

redis-cli.exe -h 127.0.0.1 -p 6379 

image

尝试设置一个字符串类型键值对

SET MyRedis 114514

image

获取这个键值

GET MyRedis

image


四、总结

本文系统梳理了Redis的核心基本原理与五大基础数据类型,Redis的高性能源于内存存储、单线程IO多路复用的核心架构,而多样化的数据类型则是其适配多场景工程应用的核心支撑。不同数据类型的底层实现与特性差异显著,实际开发中需根据业务场景精准选择,后续将围绕Redis持久化机制、事务、主从复制等进阶特性展开深入学习。

posted @ 2026-03-23 20:38  Xkzxyyqq  阅读(3)  评论(0)    收藏  举报