Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 时序数据库
  • Postgres
  • MongoDB入门与实践
  • NewSQL数据库:关系型与NoSQL的完美结合
  • Redis入门与实践:高性能键值数据库指南
  • Redis入门与实践
    • 前言
    • 为什么是Redis?
    • 快速上手
      • 安装配置
      • 基本操作
    • 五大数据类型
      • 1. 字符串(String)
      • 2. 哈希(Hash)
      • 3. 列表(List)
      • 4. 集合(Set)
      • 5. 有序集合(Sorted Set)
    • 高级特性
      • 持久化机制
      • 高可用架构
    • 实战应用场景
      • 1. 缓存层优化
      • 2. 分布式锁
      • 3. 实时排行榜
    • 结语
  • SQL基础:关系型数据库的语言
  • 关系型数据库基础
  • 关系型数据库基础与SQL入门
  • 关系型数据库基础理论
  • 关系数据库设计与SQL基础
  • 数据库分类与选型指南
  • 数据库性能优化与调优实战指南
  • 数据库索引与性能优化
  • 数据库索引原理与优化
  • 数据库设计与数据建模:从概念到实践
  • 数据库事务与并发控制:保证数据一致性的核心技术
  • 数据库事务与并发控制:保证数据一致性的核心机制
  • 数据库安全与权限管理-保护数据的基石
  • 数据库备份与恢复策略-确保数据安全的最后一道防线
  • 数据库分布式架构:从CAP理论到分片策略的全面解析
  • 数据库监控与运维-确保数据库健康运行的守护者
  • 数据库高可用方案-构建永不掉线的数据库架构
  • 数据库连接池技术:提升应用性能的关键组件
  • 数据库查询优化与执行计划分析-提升SQL性能的关键技术
  • 数据库迁移策略:平滑过渡的关键步骤与技术实现
  • 数据库缓存策略:提升系统性能的关键武器
  • 数据库性能问题诊断与排查-从现象到根源的系统化方法
  • 数据库版本管理与演进-构建平滑升级的技术路径
  • 数据库分片与分布式数据管理-构建可扩展数据架构的核心技术
  • 数据库云服务与托管解决方案-构建现代化数据架构的必经之路
  • database
Jorgen
2023-11-15
目录

Redis入门与实践

# 前言

在数据库技术栈中,我们已经探讨了时序数据库、关系型数据库PostgreSQL和文档数据库MongoDB。但还有一个重要的角色常常被忽略——键值数据库(Key-Value Store)。今天我们来聊聊这个高性能领域的王者——Redis!🚀

提示

Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值数据库,常被用作数据库、缓存和消息中间件。

# 为什么是Redis?

在微服务架构盛行的今天,我们经常面临这样的痛点:

  • 数据库查询成为性能瓶颈
  • 会话存储需要高并发支持
  • 实时排行榜需要快速读写

Redis凭借以下特性完美解决这些问题:

  1. 🏃‍♂️ 超高性能:基于内存操作,读写速度可达10万+/秒
  2. 📦 丰富数据结构:支持5种基本数据类型和多种高级数据结构
  3. 🔄 持久化能力:既保证内存速度,又支持数据持久化
  4. 🌐 原子操作:所有操作都是原子性的,适合高并发场景

# 快速上手

# 安装配置

Linux系统下一键安装:

wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
1
2
3
4

启动Redis服务:

src/redis-server
1

# 基本操作

Redis使用命令行客户端操作,先连接服务器:

src/redis-cli
1

最简单的键值操作:

# 设置键值
SET name "Jorgen"
# 获取值
GET name
# 设置过期时间(秒)
SET session:123 "abc" EX 3600
1
2
3
4
5
6

# 五大数据类型

Redis支持五种基本数据结构,每种都有独特应用场景:

# 1. 字符串(String)

SET counter 100
INCR counter  # 101
INCRBY counter 5  # 106
1
2
3

适用场景:计数器、缓存对象、分布式锁

# 2. 哈希(Hash)

HSET user:1001 name "Jorgen" age 30
HGETALL user:1001
1
2

适用场景:存储用户信息、对象属性

# 3. 列表(List)

LPUSH messages "Hello"
RPUSH messages "World"
LRANGE messages 0 -1
1
2
3

适用场景:消息队列、最新动态列表

# 4. 集合(Set)

SADD tags "redis" "database" "nosql"
SMEMBERS tags
SISMEMBER tags "redis"
1
2
3

适用场景:标签系统、共同好友计算

# 5. 有序集合(Sorted Set)

ZADD leaderboard 100 "Alice"
ZADD leaderboard 200 "Bob"
ZREVRANGE leaderboard 0 2  # 按分数降序
1
2
3

适用场景:排行榜、优先级队列

# 高级特性

# 持久化机制

Redis提供两种持久化方式:

  1. RDB(Redis Database)

    • 定时生成数据快照
    • 恢复速度快,但可能丢失数据
    # 配置示例
    save 900 1     # 15分钟内至少1个key变化
    save 300 10    # 5分钟内至少10个key变化
    
    1
    2
    3
  2. AOF(Append Only File)

    • 记录所有写操作命令
    • 数据安全性高,但文件较大
    # 配置示例
    appendonly yes
    appendfsync everysec  # 每秒同步一次
    
    1
    2
    3

# 高可用架构

生产环境常用三种部署方式:

  1. 主从复制

    • 一主多从架构,读写分离
    • 实现数据备份和负载均衡
  2. 哨兵模式

    • 自动故障转移
    • 监控主节点状态
  3. 集群模式

    • 分片存储,支持水平扩展
    • 每个节点分片存储部分数据

# 实战应用场景

# 1. 缓存层优化

# 缓存查询结果
GET user:1001
# 缓存不存在时回源
if not exists:
  user_data = db.query("SELECT * FROM users WHERE id=1001")
  SET user:1001 user_data EX 3600
1
2
3
4
5
6

# 2. 分布式锁

# 尝试获取锁
SET lock:resource "unique_id" NX PX 30000
# 业务逻辑处理...
# 释放锁
if Redis.call("GET", KEYS[1]) == ARGV[1] then
  return Redis.call("DEL", KEYS[1])
end
1
2
3
4
5
6
7

# 3. 实时排行榜

# 比赛结束更新分数
ZADD game:leaderboard 95 "PlayerA"
# 获取Top 10
ZREVRANGE game:leaderboard 0 9 WITHSCORES
1
2
3
4

# 结语

Redis作为键值数据库的标杆,凭借其卓越的性能和丰富的功能,已成为现代架构中不可或缺的组件。从简单的缓存到复杂的分布式系统设计,Redis都能大显身手。

"Redis就像瑞士军刀,简单却强大,总能在关键时刻帮你解决棘手问题。"

建议读者从本地环境开始实践,逐步探索Redis的高级特性。记住,技术最好的学习方式就是动手实践!🛠️

—— Jorgen的数据库探索笔记

#NoSQL#Redis#缓存
上次更新: 2026/01/28, 15:36:58
Redis入门与实践:高性能键值数据库指南
SQL基础:关系型数据库的语言

← Redis入门与实践:高性能键值数据库指南 SQL基础:关系型数据库的语言→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式