百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Redis从入门到实战:一篇搞定所有核心知识点

mhr18 2025-04-01 20:02 44 浏览 0 评论

Redis从入门到实战:一篇搞定所有核心知识点

Redis作为一款高性能的Key-Value数据库,凭借其丰富的数据结构、高并发处理能力和灵活的扩展性,已经成为互联网开发中不可或缺的工具。无论是缓存、消息队列,还是排行榜、社交网络,Redis都能大显身手。本文将带你从基础到实战,全面掌握Redis的核心知识点。

一、Redis简介与特性

1.1 Redis是什么?

Redis(Remote Dictionary Server)是一个开源的、基于内存的Key-Value存储系统,支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet)等。它可以用作数据库、缓存和消息中间件,广泛应用于高并发场景。

1.2 Redis的核心特性

  • 高性能
  • :Redis的读写速度极快,读操作可达110,000次/秒,写操作可达81,000次/秒。
  • 丰富的数据结构
  • :支持字符串、哈希、列表、集合、有序集合等多种数据结构,满足不同业务需求。
  • 持久化
  • :支持RDB(快照)和AOF(追加日志)两种持久化方式,确保数据安全。
  • 高可用性
  • :通过主从复制、哨兵(Sentinel)和集群(Cluster)机制,保障系统的高可用性和扩展性。

二、Redis的典型使用场景

2.1 缓存

Redis最常见的用途是作为缓存层,减轻数据库的压力。例如,将用户信息、商品详情等高频访问的数据存储在Redis中,可以显著提升系统的响应速度。

案例:电商平台的商品详情页缓存

# 设置商品详情缓存
SET product:1001 '{"name":"iPhone 15","price":7999}'
# 获取商品详情
GET product:1001

2.2 计数器

Redis的原子操作非常适合实现计数器功能,例如统计网站的访问量、用户的点赞数等。

案例:统计文章阅读量

# 文章阅读量加1
INCR article:1001:views
# 获取阅读量
GET article:1001:views

2.3 消息队列

Redis的列表(List)结构可以实现简单的消息队列,支持生产者-消费者模式。

案例:任务队列

# 生产者推送任务
LPUSH task:queue '{"task_id":1,"content":"process data"}'
# 消费者获取任务
RPOP task:queue

2.4 排行榜

Redis的有序集合(ZSet)非常适合实现排行榜功能,例如游戏积分榜、热搜榜等。

案例:游戏积分排行榜

# 添加用户积分
ZADD game:leaderboard 1000 "user1"
ZADD game:leaderboard 800 "user2"
# 获取前10名
ZREVRANGE game:leaderboard 0 9 WITHSCORES

2.5 社交网络

Redis的集合(Set)和有序集合(ZSet)可以用于实现社交网络中的关注关系、共同好友等功能。

案例:共同好友

# 用户A的好友
SADD user:A:friends "userB" "userC"
# 用户B的好友
SADD user:B:friends "userA" "userC"
# 获取共同好友
SINTER user:A:friends user:B:friends

三、Redis高级功能

3.1 发布订阅

Redis支持发布订阅模式,适用于实时消息推送、通知等场景。

案例:实时消息推送

# 订阅频道
SUBSCRIBE news
# 发布消息
PUBLISH news "Breaking: Redis 7.0 released!"

3.2 事务

Redis支持事务操作,通过MULTI和EXEC命令将多个操作打包执行,确保原子性。

案例:转账操作

# 开启事务
MULTI
# 扣除用户A的余额
DECRBY user:A:balance 100
# 增加用户B的余额
INCRBY user:B:balance 100
# 提交事务
EXEC

3.3 Lua脚本

Redis支持通过Lua脚本执行复杂的逻辑操作,确保原子性和高性能。

案例:限流操作

-- Lua脚本:限制用户每秒最多访问10次
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local current = tonumber(redis.call('GET', key) or 0
if current + 1 > limit then
    return 0
else
    redis.call('INCR', key)
    redis.call('EXPIRE', key, 1)
    return 1
end

四、Redis集群与高可用

4.1 Redis Cluster

Redis Cluster是Redis的分布式解决方案,支持水平扩展和高可用性。通过分片(Sharding)机制,数据被分散存储在多个节点上,每个节点负责一部分数据。

配置示例

# 开启集群模式
cluster-enabled yes
# 设置集群配置文件
cluster-config-file nodes-7000.conf
# 设置节点超时时间
cluster-node-timeout 15000

4.2 哨兵模式

Redis Sentinel用于监控主从节点的健康状态,并在主节点故障时自动进行故障转移。

配置示例

# 哨兵监控主节点
sentinel monitor mymaster 127.0.0.1 6379 2
# 设置故障转移超时时间
sentinel down-after-milliseconds mymaster 5000

五、Redis实战案例

5.1 电商购物车

使用Redis的哈希(Hash)结构存储购物车信息,支持添加商品、修改数量、删除商品等操作。

案例

# 添加商品
HSET cart:1001 10088 1
# 修改数量
HINCRBY cart:1001 10088 1
# 获取购物车所有商品
HGETALL cart:1001

5.2 抽奖活动

使用Redis的集合(Set)结构实现抽奖功能,支持随机抽取中奖用户。

案例

# 添加参与用户
SADD lottery:2025 "user1" "user2" "user3"
# 随机抽取1名中奖用户
SRANDMEMBER lottery:2025 1

5.3 热搜榜单

使用Redis的有序集合(ZSet)实现热搜榜单,支持按点击量排序。

案例

# 增加热点点击量
ZINCRBY hot:20250211 1 "Redis教程"
# 获取当日热搜前10
ZREVRANGE hot:20250211 0 9 WITHSCORES

相关推荐

说说Redis的单线程架构(redis的单线程模型)

一句话总结Redis采用单线程处理命令请求,避免了多线程的上下文切换和锁竞争,保证原子性操作。其基于内存的高效执行和I/O多路复用模型支撑了高并发性能。网络I/O和持久化操作(如RDB/AOF)由后台...

答记者问之 - Redis 的高效架构与应用模式解析

问:极客程序员你好,请帮我讲一讲redis答:redis主要涉及以下核心,我来一一揭幕Redis的高效架构与应用模式解析Redis是一个开源的内存数据存储系统,因其高性能、丰富的数据结构和易用性...

Redis的5种核心数据结构,及其最经典的“应用场景”

Redis凭什么稳坐缓存界头把交椅?全靠这五个“身怀绝技”的数据结构!在分布式系统的江湖里,Redis就像一位身怀绝技的武林高手,而它的五大核心数据结构正是克敌制胜的五套绝学。今天咱们就来拆解这些独门...

精准定位文件包含漏洞:代码审计中的实战思维

前言最近看到由有分析梦想cms的,然后也去搭建了一个环境看了一看,发现了一个文件包含漏洞的点,很有意思,下面是详细的复现和分析,以后代码审计又多了一中挖掘文件包含漏洞的新思路环境搭建下载https...

ARDM:一款国产跨平台的Redis管理工具

ARDM(AnotherRedisDesktopManager)是一款免费开源的Redis桌面管理客户端,支持Windows、Mac、Linux跨平台。功能特性ARDM提供的主要功能如...

SpringBoot的Web应用开发——Web缓存利器Redis的应用!

 Web缓存利器Redis的应用Redis是目前使用非常广泛的开源的内存数据库,是一个高性能的keyvalue数据库,它支持多种数据结构,常用做缓存、消息代理和配置中心。本节将简单介绍Redis的使...

Windows服务器部署CRMEB开源电商系统,详细教程来了!

安装PHP已经安装过PHP的可以跳过首先安装VC运行库下载地址https://docs.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redi...

Windows系统下Redis各个安装包介绍与选择指南

简介Redis作为高性能的键值数据库,广泛应用于缓存、消息队列等场景。在Windows系统中部署Redis时,用户可以选择多种安装包以满足不同的需求。本文将详细介绍以下Redis8.0.3版本的安装...

从面试题入手,深度剖析Redis Cluster原理

揭开RedisCluster的神秘面纱**在当今数字化浪潮中,数据量呈爆炸式增长,应用程序对数据存储和处理的要求也日益严苛。Redis作为一款高性能的内存数据库,凭借其出色的读写速度和丰富的数...

给大家推荐些好的c语言代码的网站

C语言,那就来推荐几个吧,部分含有C++:1、TheLinuxKernelArchives(kernel.org)Linux内核源码,仅限于C,但内核庞大,不太适合新手;2、redis(redi...

Redis String 类型的底层实现与性能优化

RedisString是Redis中最基础也是应用最广泛的数据类型,它能存储文本、数字、二进制数据等多种形式的信息。深入理解其底层实现对构建高性能分布式系统至关重要。Redis字符串的底层结...

阿里面试问:Redis 为什么把简单的字符串设计成 SDS?

分享了一道面阿里的redis题,我看了以后觉得挺有意思。题目大致是这样的面试官:了解redis的String数据结构底层实现嘛?铁子:当然知道,是基于SDS实现的面试官:redis是用C语言开发的,那...

编程语言那么多,为何C语言能成为最成功的语言?

编程语言那么多,为何C语言能成为最成功的语言?2025年嵌入式岗位暴增47%,新人却还在问"C语言过时了吗"。真相是连机器人关节驱动都得靠它写,不会指针连芯片手册都看不懂。见过用Pyt...

go-zero 使用 redis 作为 cache 的 2 种姿势

在go-zero框架内,如在rpc的应用service中,其内部已经预置了redis的应用,所以我们只需要在配置中加入相关字段即可,另外,在svcContext声明redisc...

Redis事务深度解析:ACID特性、执行机制与生产实践指南

一、Redis事务的本质与核心机制Redis事务通过MULTI、EXEC、WATCH等命令实现,其本质是将多个命令序列化后一次性执行,而非传统数据库的严格事务模型。核心特点如下:命令队列化:MULT...

取消回复欢迎 发表评论: