Linux C/C++ 学习日记(60):redis(一):基本介绍

注:该文用于个人学习记录和知识交流,如有不足,欢迎指点。

redis下载参考:配置(10):通过源码安装redis-CSDN博客

一、redis是什么?

Redis 是一款开源的、高性能的键值对(Key-Value)内存数据库 ,全称为 Remote Dictionary Server。它以内存作为主要存储介质,同时支持数据持久化到磁盘,兼具极高的读写性能和数据可靠性,并且原生支持多种复杂数据结构,是目前互联网领域最流行的中间件之一。

二、redis核心特点

这些特点是 Redis 被广泛应用的核心原因,也是区别于传统关系型数据库(如 MySQL)的关键:

  1. 超高读写性能数据存储在内存中,避免了磁盘 I/O 的性能瓶颈,单机 QPS(每秒查询次数)可达 10 万级以上。

  2. 是一个KV服务器,用户通过TCP连接修改和访问数据。

  3. 丰富的数据结构支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)、位图(Bitmap)、地理空间(Geo)等多种数据类型,能满足多样化业务需求。

  4. 数据持久化 提供两种持久化方案,避免内存数据丢失:

    RDB :定时将内存数据快照写入磁盘,适合备份和灾难恢复。
    AOF :记录所有写操作命令,重启时重放命令恢复数据,数据安全性更高。

  5. 原子操作所有单个命令都是原子性的,支持事务(批量命令执行)和 CAS(Compare And Set)操作,可解决并发数据一致性问题。

  6. 分布式能力支持主从复制、哨兵模式(高可用)、集群模式(分片扩容),可轻松构建分布式 Redis 系统。

  7. 其他功能支持过期时间、发布订阅、Lua 脚本、管道(Pipeline)等扩展功能。

三、Redis 的主要作用

  • 数据缓存将数据库中高频访问的数据缓存到 Redis,降低数据库压力,提升接口响应速度。
  • 分布式协调实现分布式锁、分布式计数器、分布式会话等功能,解决分布式系统中的并发和状态共享问题。
  • 临时数据存储存储短期有效数据,如验证码、临时 token、购物车数据等,利用过期时间自动清理无效数据。
  • 消息传递基于发布订阅(Pub/Sub)或列表(List)实现轻量级消息队列,适用于低延迟、低可靠性要求的场景。
  • 复杂计算支持基于有序集合实现排行榜、基于位图实现用户签到统计、基于地理空间实现附近的人等功能。

四、Redis 的应用场景

应用场景 实现方式 核心优势
高频数据缓存 缓存商品信息、用户信息、首页热点数据,设置合理过期时间 降低数据库负载,提升响应速度
分布式锁 基于 SETNX(SET If Not Exists)+ 过期时间实现 解决分布式系统中资源竞争问题(如秒杀、订单扣减)
会话存储 替代传统 Cookie 或服务器本地会话,将用户会话存入 Redis 支持分布式部署,避免会话丢失
计数器 / 限流器 基于 INCR/DECR 原子操作实现文章阅读量、接口限流 高性能,支持高并发计数
排行榜系统 基于有序集合(Sorted Set)实现实时榜单(如销量榜、积分榜) 支持快速排序和范围查询,可动态更新分值
购物车功能 基于哈希(Hash)存储用户购物车数据,Key 为用户 ID,Value 为商品 ID 和数量 读写高效,支持批量操作
消息队列 基于 List 的 LPUSH/RPOP 实现简单队列,或基于 Pub/Sub 实现广播 轻量级,部署成本低
地理位置服务 基于 Geo 数据类型实现 "附近的人""门店距离排序" 支持经纬度存储和距离计算
用户签到 / 活跃度统计 基于 Bitmap 存储用户每日签到状态,1 个字节可存储 8 天状态 极大节省内存空间

五、Redis 与传统数据库的核心区别

特性 Redis 传统关系型数据库(如 MySQL)
存储介质 内存为主,磁盘为辅(持久化) 磁盘为主
数据模型 键值对,支持多种数据结构 关系模型(表、行、列)
读写性能 极高(内存操作) 中等(磁盘 I/O 瓶颈)
事务支持 弱事务(不支持回滚) 强事务(ACID 特性)
适用场景 缓存、高频读写、临时数据、分布式协调 持久化存储、复杂查询、事务性业务
相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习