Redis解析

一、Redis 到底是个啥?(白话版)

简单说,Redis 就是一款超高速的内存数据库,你可以把它理解成 "电脑内存里的万能储物箱"------ 数据都存在内存里(不是硬盘),所以读写速度快到离谱(百万级 / 秒);同时它还能把数据持久化到硬盘,不怕断电丢数据。和 MySQL 这种传统数据库比,Redis 更像 "贴身小仓库",专门存高频用、要快速取的数据,而 MySQL 是 "大库房",存海量、不追求极致速度的数据。

二、Redis 能干嘛?(实际应用场景)

日常开发中,Redis 几乎是后端必备,核心用在这 6 个场景:

  1. 缓存:把数据库里的热点数据(比如商品详情、用户信息)存到 Redis,用户请求时直接从 Redis 取,不用每次查数据库,网站速度能提几十倍;
  2. 分布式锁:多台服务器抢同一个资源(比如秒杀下单),用 Redis 做 "锁",避免重复操作;
  3. 计数器 / 限流器:文章阅读量、接口请求次数、秒杀库存计数,Redis 能原子性加减,不计数出错;
  4. 消息队列:简单的消息收发(比如订单通知、延时提醒),比专门的 MQ(如 RabbitMQ)轻量;
  5. 会话存储:用户登录后的 token、购物车数据,存在 Redis 里,分布式系统下多台服务器能共享;
  6. 延时任务:比如订单 15 分钟未支付自动取消,用 Redis 的过期键功能就能实现。

三、Redis 的核心特点(为啥这么好用)

  1. 速度快:数据存在内存,单线程模型避免线程切换开销,官方测试读速 11 万 / 秒、写速 8.1 万 / 秒;
  2. 数据类型丰富 :不只是存字符串,还支持哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet),能满足不同场景需求;
    • 比如存用户信息用 Hash(key = 用户 ID,value={name:xx, age:xx}),存排行榜用 ZSet;
  3. 支持持久化 :有两种方式把内存数据存到硬盘:
    • RDB:定时快照(比如每小时存一次),适合备份;
    • AOF:记录所有写操作,重启时重放操作恢复数据,更安全;
  4. 支持集群 / 主从:能搭多台 Redis 服务器,实现高可用(一台挂了另一台顶上)、扩容(存更多数据)。

四、新手入门:Redis 最基础的使用(命令 + 代码示例)

1. 核心命令(终端直接用)

bash

运行

复制代码
# 1. 存字符串(key=name,value=zhangsan)
SET name zhangsan
# 2. 取字符串
GET name  # 输出:zhangsan
# 3. 存哈希(用户信息)
HSET user:1 name lisi age 20
# 4. 取哈希的某个字段
HGET user:1 age  # 输出:20
# 5. 给计数器加1
INCR view:article:1001  # 文章1001的阅读量+1
# 6. 设置过期时间(10秒后失效)
SET code 123456 EX 10
2. Python 代码操作 Redis(需先装 redis 库)

python

运行

复制代码
import redis

# 连接Redis(默认本地、端口6379)
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)

# 存/取字符串
r.set('name', 'zhangsan')
print(r.get('name'))  # 输出:zhangsan

# 存/取哈希
r.hset('user:1', mapping={'name': 'lisi', 'age': 20})
print(r.hget('user:1', 'age'))  # 输出:20

# 计数器+1
r.incr('view:article:1001')
print(r.get('view:article:1001'))  # 输出:1

五、新手避坑点

  1. 别存太多数据:Redis 是内存数据库,内存满了会变慢,只存热点数据;
  2. 注意过期时间:缓存数据要设过期时间,避免数据和数据库不一致;
  3. 避免大 key:别存超大的字符串 / 列表(比如几 MB 的内容),会拖慢 Redis。

总结

  1. Redis 是内存优先 的数据库,核心优势是,主打缓存、计数、分布式锁等场景;
  2. 支持字符串、Hash、List 等丰富数据类型,能适配多种业务需求;
  3. 新手使用重点关注 "数据持久化" 和 "过期时间",避免数据丢失或不一致。
相关推荐
2603_965148116 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl6 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu7 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT7 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData8 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean8 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean8 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X9 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.9 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠9 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle