Redis 从入门到实战:一篇让你笑着学会的缓存神器教程

MySQL 社招必考题:如何优化特定类型的查询语句? 在 MySQL 面试中,“如何优化特定查询语句”常常让人一头雾水。特别是 count(*),背后暗藏不少性能玄机:MyISAM 引擎的特性、explain 近似值替代、汇总表、缓存……这些思路如果答出来,绝对能让面试官眼前一亮! 阅读详情

💡 如果把 MySQL 比作开着拖拉机的乡村邮递员,那 Redis 就是骑着火箭的特快专递——数据全放内存里,读写延迟轻松做到微秒级,五年蝉联"开发者最喜爱数据库"称号。


一、Redis 到底是啥?为啥程序员都爱它?

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,由 Salvatore Sanfilippo 用 C 语言写成。它不只是简单的 Key-Value 缓存,而是一个支持多种数据结构的"瑞士军刀":字符串、哈希、列表、集合、有序集合、位图、HyperLogLog、地理空间索引、流(Streams),Redis 8 起还内置了向量集、JSON、时间序列、概率数据结构等。

简单来说,Redis 在干什么:

┌─────────────┐    微秒级读写    ┌──────────────┐
│  你的应用   │ ←────────────→ │   Redis      │
│             │                 │  (内存驻留) │
└─────────────┘                 └──────────────┘
       │                               ▲
       │ 偶尔同步                       │ 异步持久化
       ▼                               │
┌─────────────┐                 ┌──────────────┐
│   MySQL     │                 │ 磁盘(RDB/AOF)│
│  (慢但稳)  │                 └──────────────┘
└─────────────┘

它到底有多快、多强?​ Redis 8 官方数据显示:命令延迟比 7.2.5 最高降低 87%,吞吐量提升最高 2 倍,复制内存占用减少 35%。

典型使用场景:

  • 🚀 缓存加速:把 MySQL 查询结果塞进 Redis,TTL 设 1 小时,扛住双十一级别的流量

  • 🔢 计数器 / 限流:INCR 命令天然原子性,做阅读量、接口限流毫无压力

  • 🏆 排行榜:ZSet 一键搞定游戏积分榜、热门文章 Top 10

  • 🔐 分布式锁:SETNX 实现跨服务互斥

  • 💬 消息队列 / 发布订阅:List 的 LPUSH+BRPOP,或更强的 Streams

  • 🤖 AI 向量检索:Redis 8 新增向量集,语义搜索、推荐系统直接搞定

⚠️ 许可小提醒:Redis 8 采用三重许可——RSALv2、SSPLv1、AGPLv3。自己部署完全免费,但云厂商(如 AWS ElastiCache)从 v8.0 起不能直接托管新版 Redis,他们转向了兼容分支 Valkey。自己用?完全没影响。


二、安装 Redis:三种姿势任君挑选

姿势 1:Docker 一键起飞(推荐新手)

Docker 是目前最干净、最 reproducible 的安装方式。Redis 官方镜像 Docker 拉取量已超 40 亿次。

最简启动:

# 一条命令跑起来
docker run --name my-redis -d redis:7-alpine

# 进命令行试试
docker exec -it my-redis redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

带密码 + 暴露端口:

docker run --name my-redis -d -p 6379:6379 \
  redis:7-alpine \
  redis-server --requirepass your_secure_password

姿势 2:Docker Compose 生产级部署(强烈推荐)

创建 redis.conf:

bind 0.0.0.0
port 6379
protected-mode yes

# 安全
requirepass your_secure_password_here

# 内存管理(防雪崩)
maxmemory 256mb
maxmemory-policy allkeys-lru

# 持久化 - AOF
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 持久化 - RDB
save 900 1
save 300 10
save 60 10000

创建 docker-compose.yml:

version: '3.8'
services:
  redis:
    image: redis:7-alpine
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf:ro
    command: redis-server /usr/local/etc/redis/redis.conf
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "your_secure_password_here", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  redis-data:
    driver: local

启动:

docker compose up -d
docker compose logs redis

姿势 3:Linux 裸机安装(Ubuntu/Debian)

# 更新并安装
sudo apt update
sudo apt install redis-server -y

# 修改配置
sudo vim /etc/redis/redis.conf
# 改这几个关键点:
# bind 0.0.0.0        # 允许远程连接
# requirepass 你的密码
# appendonly yes      # 开启 AOF
# maxmemory 512mb
# maxmemory-policy allkeys-lru

# 重启服务
sudo systemctl restart redis-server
sudo systemctl enable redis-server

📌 Redis 8 尝鲜:如果想体验最新版(含向量集、JSON 等),可以从源码编译:wget https://github.com/redis/redis/archive/8.0.0.tar.gz && make && sudo make install


三、redis-cli 实战:五种核心数据结构玩出花

连接 Redis:

redis-cli -h 127.0.0.1 -p 6379 -a 你的密码

1. String(字符串):缓存与计数利器

# 基础存取 + 过期时间
SET user:1:name "Alice" EX 3600     # 设值并 1 小时后过期
GET user:1:name                      # -> "Alice"
TTL user:1:name                      # 看剩余存活时间

# 原子计数器(阅读量统计神器)
SET article:read:1001 0
INCR article:read:1001               # -> 1
INCR article:read:1001               # -> 2
INCRBY article:read:1001 10          # -> 12

# 分布式锁
SETNX lock:order:42 1                # 抢到锁返回 1,否则 0
EXPIRE lock:order:42 30              # 30 秒自动释放

2. Hash(哈希):存对象的最佳选择

# 存储用户信息
HSET user:1001 name "张三" age 28 city "北京"
HGET user:1001 name                  # -> "张三"
HGETALL user:1001                    # 获取所有字段
HINCRBY user:1001 age 1              # 年龄 +1

# Redis 8 新命令:原子获取并删除字段
HGETDEL user:1001 FIELDS 1 name
# 新命令:获取字段并可选择设置过期
HGETEX user:1001 EX 60 FIELDS 1 age

3. List(列表):轻量级消息队列

LPUSH todo "task-A"                   # 左侧入队
RPUSH todo "task-B"                   # 右侧入队
LRANGE todo 0 -1                      # 查看整个列表
BRPOP todo 0                          # 阻塞弹出,0 表示无限等待

4. Set(集合):去重与标签系统

SADD user:1001:tags "java" "redis" "mysql"
SADD user:1002:tags "java" "python"
SMEMBERS user:1001:tags               # 查看所有标签
SINTER user:1001:tags user:1002:tags  # 共同标签 -> "java"
SISMEMBER user:1001:tags "redis"      # 判断是否包含

5. Sorted Set(有序集合):排行榜王者

ZADD leaderboard 1500 "alice"
ZADD leaderboard 2200 "bob"
ZADD leaderboard 1800 "charlie"

ZRANGE leaderboard 0 -1 WITHSCORES REV   # 从高到低
# 1) "bob" 2) "2200" 3) "charlie" 4) "1800" 5) "alice" 6) "1500"

ZINCRBY leaderboard 100 "alice"          # alice 加分
ZRANK leaderboard "alice" REV            # 查排名

通用键操作

EXISTS user:1:name                    # 是否存在
EXPIRE user:1:name 120                # 重设过期
TTL user:1:name                       # 剩余时间
DEL user:1:name                       # 删除
SCAN 0 MATCH user:* COUNT 10           # 安全遍历(生产禁用 KEYS *)

⚠️ 生产环境铁律:永远不要用 KEYS *!它会阻塞整个 Redis。用 SCAN 替代。


四、实战案例:Cache-Aside 缓存模式

这是最常用的缓存架构,伪代码逻辑:

async def get_user(user_id: int):
    key = f"user:{user_id}"
    # 1. 先查 Redis
    cached = await redis.get(key)
    if cached:
        return json.loads(cached)
    
    # 2. 缓存未命中,查数据库
    user = await db.get_user(user_id)
    
    # 3. 写入缓存,TTL 加随机抖动防集体失效
    if user:
        ttl = int(3600 * random.uniform(0.9, 1.1))
        await redis.set(key, json.dumps(user), ex=ttl)
    return user

真实场景示例(缓存用户热点数据):

# 模拟 MySQL 查出的数据写入 Redis
HMSET user:1 name "zhangsan" age 20
EXPIRE user:1 3600

# 查询时先打 Redis
HGETALL user:1
# 1) "name" 2) "zhangsan" 3) "age" 4) "20"

五、持久化:让内存数据"落地"

Redis 提供两种持久化机制,生产环境建议同时开启:

方式

原理

优点

缺点

RDB​

定时快照

恢复快、文件紧凑

可能丢失最后一次快照后的数据

AOF​

记录每条写命令

数据更安全

文件较大、恢复稍慢

推荐配置(redis.conf):

# RDB 快照
save 900 1        # 15 分钟内至少 1 个变更
save 300 10       # 5 分钟内至少 10 个变更
save 60 10000     # 1 分钟内至少 10000 个变更

# AOF
appendonly yes
appendfsync everysec    # 折衷:每秒刷盘

六、可视化监控:Redis Insight

命令行玩腻了?官方推出的 Redis Insight​ 是 GUI 神器,可以:

  • 可视化查看所有 Key 和数据结构

  • 实时监控内存、命令吞吐量

  • 直接执行命令的工作台

  • 支持 Redis 8 的 JSON、向量集等新特性

# Docker 方式安装
docker run -d --name redis-insight -p 8001:8001 redis/redisinsight:latest

浏览器打开 http://localhost:8001 即可。


七、生产环境避坑指南

💡 几个让老司机都翻过车的点,新人务必记下:

  1. 一定要设 maxmemory + 淘汰策略:否则 Redis 内存吃满会触发 OOM,整个进程被杀

    maxmemory 2gb
    maxmemory-policy allkeys-lru
  2. protected-mode 和 requirepass 必须开:裸奔的 Redis 等于给黑客留门

  3. 禁用危险命令:生产环境建议在配置中重命名或禁用 FLUSHALL、FLUSHDB、KEYS

  4. 使用连接池:每次新建连接开销大,应用侧务必复用连接

  5. 监控关键指标:

    redis-cli INFO memory | grep used_memory_human
    redis-cli INFO stats | grep total_connections_received
    redis-cli INFO persistence

八、Redis 8 新特性速览(与时俱进部分)

如果你用 Redis 8,等于白嫖了一整套原本要装模块的"全家桶":

  • 🆕 向量集(Vector Set):高维向量相似性搜索,AI 应用语义检索直接搞定

  • 🆕 JSON 数据结构:原生支持 JSON 文档存储,用 JSONPath 查询

  • 🆕 时间序列:IoT 传感器、股价数据高效压缩存储

  • 🆕 概率数据结构:Bloom Filter、Cuckoo Filter、Count-Min Sketch、Top-K、T-Digest

  • 🆕 哈希字段级过期:HGETEX、HSETEX、HGETDEL 原子操作

  • 🆕 多线程 I/O:设置 io-threads 8 吞吐量提升 112%

  • 🆕 查询引擎:为 Hash 和 JSON 建二级索引,向量搜索吞吐量提升 16 倍

# Redis 8 新玩法:存 JSON
JSON.SET user:1 $ '{"name":"Alice","age":30,"tags":["vip","active"]}'
JSON.GET user:1 $.name

# 向量相似性搜索
VADD vector:items 4 [0.1,0.2,0.3,0.4] "item1"

写在最后

Redis 不是一个"缓存工具"那么简单——它是一个内存数据结构平台。从最简单的 SET/GET 到复杂的向量检索,它几乎能覆盖所有高并发、低延迟的场景。

学习路径建议:

入门:String/Hash/List/Set/ZSet 五大结构
↓
进阶:过期策略、持久化、发布订阅、Streams
↓
高级:Redis Cluster 分片、Sentinel 高可用、Lua 脚本
↓
专家:Redis 8 向量集、JSON、查询引擎、AI 应用

📌 记住一句话:缓存不是银弹,但 Redis 几乎是互联网应用的标配。​ 掌握它,你的系统就能从"拖拉机"升级到"火箭"。

 

Java与.NET双栈开发者的工程实践指南 在现代企业级应用开发中,Java和.NET作为两大主流后端技术栈,其差异已从语言特性转向工程化能力维度。理解IoC容器设计哲学、日志可观测性规范、分布式追踪标准及OpenAPI契约驱动等通用工程原理,比单纯掌握语法更重要。本文基于十年双栈实战经验,解析Spring Boot与ASP.NET Core在DI生命周期、结构化日志、健康检查、配置中心集成等关键环节的技术对齐路径,并揭示框架抽象层级如何塑造开发者对HTTP协议、线程模型与内存管理的认知深度。尤其聚焦混合技术栈项目中的接口定义、跨语言调用链追踪、统一 阅读详情

相关推荐

手把手教你用TUSB2E22中继器实现eUSB2与USB 2.0互转(附实测数据对比)

本文详细介绍了如何利用TUSB2E22中继器实现eUSB2与USB 2.0的高效互转,包括技术背景、硬件设计要点、信号完整性测试方法及故障排查策略。通过实测数据对比,展示了TUSB2E22在信号延迟、功耗和眼图性能上的显著优势,为工程师提供了实用的工程方案。

weixin_29199873的博客 283

Redis面试通关秘籍:从入门到吊打面试官的高频考点解析(实战经验版)

(拍桌子)现在但凡是个互联网公司,Redis基本成了标配缓存中间件!!!根据2024最新统计,超89%的Java工程师岗位都要求掌握Redis(数据来源:某勾网年度报告)。但很多小伙伴在面试时,经常被连环夺命问怼得怀疑人生。今天我就把自己5年踩坑经验揉碎了,给大家整点硬核干货!先啃完《Redis设计与实现》(黄健宏著)动手搭集群(Docker一把梭)结合业务场景思考(比如用Streams做消息队列)关注新特性(像7.0的Function功能)

qq_21422587的博客 900

海思Hi3519AV100 sensor移植实战:IMX586驱动调试与硬件验证全流程

本文详细解析了在海思Hi3519AV100平台上移植索尼IMX586传感器的全流程实战。内容涵盖从硬件I2C通信验证、驱动代码移植与修改,到内核配置、时钟设定,以及使用示波器进行硬件信号深度验证和ISP图像调优等关键步骤,为开发者提供了一套清晰、可复现的sensor移植与调试方法。

weixin_29168393的博客 395

《说一说MyBatis里面的缓存机制:从“懒人神器”到“性能陷阱”,程序员必知的缓存生存法则!》

END—

DKPT的博客 970

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

模块七:分布式场景与Java实战

《Redis分布式锁翻车实录与实战指南》摘要 凌晨3点的库存超卖事故,揭示了SETNX+EXPIRE非原子操作的风险。本文深入剖析Redis分布式锁的正确姿势: 锁方案演进: 错误示范:非原子SETNX+EXPIRE(P0事故制造机) 基础方案:原子SETNXEX(仍有误删/续期问题) 终极方案:Redisson(含看门狗自动续期)+ Redlock多节点 其他实战场景: 限流:推荐令牌桶替代固定窗口 消息队列:Stream>List/PubSub 延时队列:ZSet轮询实现 Session共享:Sprin

qq_37878585的博客 327

CST仿真实例001:圆极化平板天线仿真

CST仿真实例001:圆极化平板天线仿真实例

weixin_47638568的博客 1万+

Java求职面试:互联网大厂的技术挑战与解答

面试官微笑着对谢飞机说:“今天的面试就到这里吧,我们会在一周内给你答复。”谢飞机心里一阵轻松,笑着离开了面试室。

a945063547b的博客 331

《QGIS快速入门与应用基础》294:双地图框布局(真彩色+假彩色对比)

摘要 本文详细介绍了在QGIS中创建专业级遥感影像对比地图的完整流程。作者作为时空智能领域专家,重点讲解了双地图框布局的实现方法,通过真彩色与假彩色影像的同步对比,满足学术研究和工程应用需求。文章包含三个核心部分:1) 前期准备工作,包括图层复制、标准化命名和参数校验;2) 布局创建与页面设置,详细说明了A4横向布局的参数配置;3) 双地图框同步技术,提供了复制粘贴法和手动设置两种实现方案。教程特别强调图层锁定、比例尺固定等关键操作,确保对比图的专业性和准确性,适合GIS从业人员和遥感研究者学习参考。

LuckyHanMo的博客 358

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8050

程序员越懒越值钱?揭秘DeepSeek不为人知的逆袭法则

上周我试着用它重构老旧的前端项目,原本需要三天才能理清楚的组件关系,DeepSeek用思维导图+代码示例的组合拳,两小时就让我看懂了五年前的祖传屎山。比如那次做高并发订单系统,我问的是"如何在高吞吐量和数据一致性之间找到最佳实践",结果得到的方案居然考虑到了我们服务器所在机房的网络延迟特性。我在做微服务拆分时深有体会,当工具帮你搞定80%的重复劳动,你就有余力去琢磨怎么设计更优雅的限流策略,或者如何用更巧妙的缓存机制提升性能。这种像有个严厉但靠谱的搭档在代码审查的感觉,彻底治好了我的"过度自信综合征"。

weixin_50019283的博客 531

还在纠结二层交换机和三层交换机的区别?这篇文章帮你讲明白!

你好,这里是网络技术联盟站,我是瑞哥。公众号后台有小伙伴想要写一篇文章具体介绍一下二层交换机和三层交换机,此类的文章,之前写过几篇,今天瑞哥再写一篇,希望对大家有所帮助!

网络技术联盟站 4441

Java接口P99含义解析

现在是不是觉得P99就像奶茶店的等待计时器?下次面试官问起,你可以笑着说:“这就像关注奶茶店最长等待的客人,我们程序员要让最慢的1%请求也能喝到顺滑的代码奶茶!“P99就像班级里的学霸成绩,不能只看平均分。我们团队曾用线程池优化把P99从2秒降到200ms,就像给奶茶店加了10个自动封口机,让最慢的1%订单也能飞速完成!

了凡 533

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[特殊字符] 嘘!别声张!我用这 10 个“查无此人“的免费开发神器,把 5000 块月账单干到了 0,故事完整版

摘要:独立开发者阿杰如何用10个免费工具实现零成本运营 本文讲述了一位27岁的独立开发者阿杰如何通过发掘10个鲜为人知的免费工具,将他月支出5000多元的云计算账单降为0元的故事。阿杰开发的短链工具FlashBuck面临高昂的云服务费用,迫使他踏上"GitHub考古"之旅,发现了包括Zeabur(万能部署平台)和Turso(边缘数据库)在内的优质免费替代方案。这些工具不仅解决了他的成本问题,还带来了性能提升。文章以生动细节展现了草根开发者对抗科技巨头的"账单霸权"的实战经验,为预算有限的技术创业者提供了极具

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 497

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

互联网大厂Java求职者面试实录:严肃面试官VS搞笑后端小白

在某知名互联网大厂的一间面试室里,严肃的面试官与一位搞笑的后端小白展开了一场Java技术的大比拼。面试官抛出了一个又一个技术难题,而后端小白则用自己独特的方式回应着,既展示了基础功底,又时不时爆出令人忍俊不禁的“创新答案”。

hywzxy的博客 323

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

混元Hy3preview多模态统一建模技术解析

多模态大模型正从‘模态拼接’迈向‘语义统一’,其核心在于构建跨文本、图像、代码等模态的联合表征空间。这一能力依赖于单塔架构、动态模态门控与多专家协同推理等关键技术突破,显著提升跨模态理解一致性与生成可控性。在工程落地中,它支撑图文联合理解、截图即分析、语义权重图像生成等高价值场景,成为AI从工具向认知协作者跃迁的关键基础设施。本文聚焦混元Hy3preview的统一多模态表征空间与混合专家推理(MoE)两大核心技术,结合元宝应用实测,解析其如何实现语义级对齐与轻量高效推理。

weixin_33755557的博客 376

DNS 不是把域名翻译成 IP:递归解析、TTL 缓存、CNAME 与报文排错实战

本文通过离线Python实验,拆解DNS递归解析、缓存机制与报文结构,揭示“DNS不是全局映射表”的本质。重点解析递归器角色、TTL衰减、CNAME链处理、负缓存隔离及修改记录延迟生效等核心问题,结合实战排错案例,阐明缓存层级、事务匹配、截断处理与安全边界,强调从应用到权威的逐层排查逻辑,实现可复现、可验证的DNS教学系统。

此人很懒,什么都没有写~~ 348

Spring Boot 工程通用能力建设:声明式事务定制与 Redis 缓存实践

本文探讨Spring Boot中声明式事务的进阶实践,通过解耦“切点”与“事务属性”,实现灵活控制。核心包括:基于方法名的只读规则(如get*、find*自动设为只读),组合事务属性源确保@Transactional注解优先于命名规则,以及自定义切点实现事务统一织入。该方案提升代码可维护性,避免误写,同时支持特殊场景覆盖,构建更健壮的事务治理体系。

BADAO_LIUMANG_QIZHI的博客 243

缓存该删还是该改,LLM 服务里的双写问题

给答案加缓存之后,命中率上去了,账单下来了。然后开始出现一类很难查的问题,同一个问题,五分钟后问一次得到新答案,再问一次又回到旧答案。用户以为系统在抽风。这类问题的根源在双写。数据变了,数据库和缓存都要动,两个地方不是原子的,中间那段窗口就会出不一致。而缓存这种不一致一旦形成,可能一直存在,直到过期。

m0_58155849的博客 186

输送线节拍与缓存设计:线体平衡计算、积放系数与上下游能力匹配方法

输送系统的能力由瓶颈段决定,设计目标是让各段节拍匹配并留出可控缓存。三个核心计算:①段能力 C = 3600·v/(s + l)(件/h,v 线速度 m/s,s 货物间距 m,l 货物长度 m);②上下游匹配要求 C下游 ≥ 1.1·C上游;③缓存容量 B ≥ (Q峰 - C下游)·t,用于吸收短时高峰。缺了缓存,短时波动会直接转化为上游停线与货物顶推。

NaiLiShuXie的博客 227

Token工厂技术拆解(11月9日)|多付218块的那个月:提示词开头写了日期,缓存一次没命中

6 万字里只留真正被问到的 2 万字,约 13,000 个 token,其余做成按需检索。每次 0.039 元,一天 330 次是 12.87 元,月 283 元。注意,283 元和第二条的 287 元差不多,可它花的人力是第二条的好几倍。这条最贵,要搭检索、要试两周,人比钱贵。别踩的三个坑:坑一,以为开关一开就有缓存。多数平台要你在内容里标出"从哪断开",不标就整段硬碰,碰不上就是零。坑二,忘了 5 分钟就过期。隔半小时再问,等于重新写一次,还是 1.25 倍。坑三,把用户的问题也塞进缓存段。

李文慧 中国开源充电桩平台第一人;李文慧 国内知名开源工作者 全栈工程师 华为云最具价值专家 16

WooCommerce 运费不显示或结账运费为 0:先核配送区域与运费类,再查缓存与主题/插件覆盖

—购物车能加购、结账表单也能填,就是算不出该有的运费——这和今日写过的 Cloudflare Flexible SSL /、后台极慢 Heartbeat / 修订 / autoload、

20年技术经验|专注小程序+外贸独立站|已服务500家企业,分享创业中有趣的产品和技术经验。 261

Java开发中,redis除了缓存和分布式锁,还有哪些实际业务用到?

很多 Java 后端开发小伙伴聊到 Redis,脱口而出的就是缓存和分布式锁。这两个场景确实是项目中最常用的,网上相关文章也非常多。但 Redis 真正强大的地方,在于它内置了丰富多样的数据结构,很多高并发业务需求,利用这些原生结构就能简单高效实现,还能极大减轻 MySQL 的压力。本文整理了生产项目中落地较多、面试也经常问到的 Redis 业务场景,每个场景包含业务需求、实现思路、核心 Java 示例代码、优点以及生产环境需要注意的局限和坑点,最后补充重要避坑提醒和选型思路。

2401_86983677的博客 280

WooCommerce 优惠券输入后提示无效或不打折:先核使用限制与商品适用范围,再查缓存与插件冲突

后台明明建好了优惠券,前台结账输入券码却提示,或显示已应用却——这和今早写过的 WordPress 站点地图404/空白、体验版白屏 /,以及昨日的 Cloudflare Flexible SSL /、Allowed memory size exhausted、Shopify 库存售罄、、小程序支付回调、WXR、REST 401、无法创建目录、

20年技术经验|专注小程序+外贸独立站|已服务500家企业,分享创业中有趣的产品和技术经验。 368
上一篇: 【后渗透-Windows篇】Windows 域渗透基石:从本地管理员到域控(DC)的跨越
一拳一个娘娘腔
博客等级 码龄9年 14粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值