Redis

一、Redis 是什么?

RedisRe mote Di ctionary S erver)是一个开源的、基于内存的键值存储系统 。它通常被用作数据库缓存消息中间件流引擎

核心特点:
  1. 基于内存 :数据主要存储在内存中,读写速度极快(可达 10万+次/秒)。同时也支持持久化,可以将内存数据异步保存到磁盘,防止数据丢失。

  2. 键值存储:使用简单的 key-value 形式存储数据,但 Value 不仅仅是字符串,还支持丰富的数据结构。

  3. 单线程:核心网络模型是单线程的(新版本引入了多线程处理网络 I/O 等,但核心命令执行仍是单线程),避免了多线程的上下文切换和竞争条件,保证了原子性操作,非常简单高效。

  4. 持久化:提供 RDB(快照)和 AOF(追加日志)两种方式将数据持久化到硬盘。

  5. 高可用与分布式:通过 Redis Sentinel(哨兵)实现高可用,通过 Redis Cluster(集群)实现数据分片和分布式存储。


二、Redis 的常用数据结构

这是 Redis 最强大的地方。它不仅仅是简单的 String 缓存,其多样的数据结构解决了各种特定场景下的问题。

数据结构 存储的值 特性 常用命令 典型应用场景
String(字符串) 可以是字符串、整数、浮点数、二进制数据 最基本的数据类型,一个 key 对应一个 value SET, GET, INCR, DECR, MSET, MGET 缓存计数器 (文章阅读量、点赞)、分布式锁
Hash(哈希) field-value 对的集合,适合存储对象 类似于 Java 中的 Map<String, String> HSET, HGET, HGETALL, HMSET, HINCRBY 存储对象信息(用户信息、商品信息),可单独修改某个字段
List(列表) 一个有序的字符串列表,按插入顺序排序 双向链表,两端操作性能高,中间操作性能低 LPUSH, RPUSH, LPOP, RPOP, LRANGE 消息队列最新列表 (最新文章、朋友圈时间线)、排行榜
Set(集合) 无序的、不重复的字符串集合 提供交集、并集、差集等操作

三、为什么选择 Redis?

  • 性能极高:内存访问速度远超磁盘。

  • 数据结构丰富:如上所述,一招鲜吃遍天,各种场景都能找到合适的数据结构。

  • 原子性:所有操作都是原子性的,无需担心并发问题。

  • 多功能性:不仅是缓存,还能做消息队列、分布式锁、排行榜等。

相关推荐
袁袁袁袁满11 分钟前
Python爬虫实战:利用巨量IP获取跨境电商数据
爬虫·python·网络爬虫·爬虫实战·跨境电商·电商爬虫
jufeng130722 分钟前
【系列:TDengine 工业物联网实战:从零搭起可运行系统 · 第 4 篇】
python·时序数据库·tdengine·asyncio
努力搬砖的咸鱼27 分钟前
意图理解:让Agent从需求描述自动生成Pytest测试策略
人工智能·python·ai·单元测试·pytest·agent
ZJU_统一阿萨姆29 分钟前
【推理优化进阶】性能实验科学:工作负载、统计显著性与尾延迟归因
开发语言·人工智能·语言模型·系统架构·vllm
2601_9563198839 分钟前
2026年下半年,量化学习要把交易认知和技术实现接起来
人工智能·python
Hhy_110742 分钟前
《C++深度解构02》类和对象(上)——定义规范、内存对齐与 this 指针全解
c语言·开发语言·c++·学习·visual studio
水水不水啊1 小时前
DeepSeek自带的一些插件的功能介绍
笔记·ai·deepseek·harness·dsh
EW Frontier1 小时前
【雷达信号处理】5 个阵元追平 16 个阵元:稀疏阵列 STAP 的实测报告【附python+matlab代码】
python·matlab·信号处理·雷达·mimo·稀疏阵列·stap
电子云与长程纠缠1 小时前
UE5 Lyra PocketWorld进行3D内容UI预览 - 下
开发语言·学习·游戏·ui·ue5
卷无止境1 小时前
FastAPI的测试事件在测什么?
后端·python·fastapi