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. 新手使用重点关注 "数据持久化" 和 "过期时间",避免数据丢失或不一致。
相关推荐
马尔代夫哈哈哈3 小时前
Spring IoC&DI
数据库·sql
液态不合群5 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
计算机毕设VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瀚高PG实验室6 小时前
PostgreSQL到HighgoDB数据迁移
数据库·postgresql·瀚高数据库
打码人的日常分享6 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
三水不滴7 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
-孤存-7 小时前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
2301_822366358 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
万邦科技Lafite10 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐10 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus