首页 > 数据库 >软件开发 --- redis 之初体验

软件开发 --- redis 之初体验

时间:2024-12-08 20:12:27浏览次数:12  
标签:product 初体验 redis 数据库 Redis 用户 --- leaderboard 1001

一个键值对(Key-Value)的内存数据库

可以用作数据库缓存、消息队列、排行榜等场景。

 

快速上手

Redis 默认有 16 个数据库(索引从 0 到 15),但所有命令默认都会在数据库 0 中执行,除非你显式地使用 SELECT 命令来切换到其他数据库。

安装

 

 

1. 数据缓存:快速存取热点数据

Redis 常用来缓存经常访问的数据,减少数据库的压力。

假设我们有一个商品详情页,每次用户访问都要查询数据库。为了加速访问,可以用 Redis 做缓存:

存储商品信息:

SET product:1001 "{'name': 'iPhone 14', 'price': 5999}"
Key 是 product:1001,表示商品 ID 为 1001 的商品。
product也可以理解为表,库默认是0,1001是key Value 是 JSON 字符串,存储商品的名称和价格。

 

获取商品信息:

GET product:1001
返回:{'name': 'iPhone 14', 'price': 5999}。

 

优势:

数据从 Redis 读取速度非常快(内存存储)。

如果商品数据更新,可以直接更新缓存中的值。

 

2. 分布式锁:控制资源访问

在分布式系统中,多个服务可能会同时操作某一资源,Redis 可以用来实现分布式锁,防止冲突。

假设一个秒杀活动中,所有用户都抢同一个商品库存。为了防止超卖,可以用 Redis 锁。

加锁:

SET lock:product:1001 user123 EX 10 NX
lock:product:1001 是锁的名称,表示商品 1001 的锁。
user123 是持有锁的用户 ID。
EX 10 设置锁的过期时间为 10 秒。
NX 表示“只有锁不存在时才设置”。

 

释放锁:

DEL lock:product:1001

 

优势:

防止多个用户同时扣减库存。

锁有过期时间,防止因程序异常导致锁无法释放。

 

3. 消息队列:异步任务处理

Redis 的 List 数据结构可以用来实现简单的消息队列,多个消费者可以异步处理任务。

例子:
假设用户下单后,需要异步发送订单确认邮件。

生产者添加任务:

LPUSH email_queue "{'user_id': 123, 'email': 'user@example.com'}"

 

主程序把任务信息(用户 ID 和邮箱地址)添加到队列 email_queue。

消费者处理任务:

BRPOP email_queue 0

 

发送邮件的程序,从队列中取出任务,并处理发送邮件的操作。

优势:

异步处理,避免阻塞主流程。

支持多个消费者并行处理任务。

 

4. 排行榜:实时统计和排序

Redis 的 Sorted Set(有序集合)可以用来实现排行榜功能。

例子:
假设一个游戏中需要显示玩家积分排行榜。

记录玩家分数:

ZADD leaderboard 1000 player1
ZADD leaderboard 1200 player2
ZADD leaderboard 900 player3

ZADD 命令将玩家和分数添加到有序集合 leaderboard 中。

获取排行榜:

ZREVRANGE leaderboard 0 2 WITHSCORES

返回:[player2: 1200, player1: 1000, player3: 900]。 

优势:

Redis 自动对分数进行排序,查询效率极高。

支持动态更新分数,实时反映变化。

 

5. 会话管理:记录用户登录状态

Redis 可以用来存储用户的会话信息,比如登录状态、购物车内容等。

例子:

记录用户登录状态:

SETEX session:user123 3600 "logged_in"
  //session:user123 是会话的 Key,表示用户 ID 为 123 的会话信息。SETEX:这是 Redis 的一个命令,用于设置一个键的值,并且设置这个键的过期时间。SETEXSETEXPIRE 命令的结合,允许你同时设置键的值和过期时间。
  //3600 是过期时间(秒),表示会话有效时间为 1 小时。
  //logged_in 是会话的状态信息。

 

检查用户是否登录:

GET session:user123
  //返回:logged_in(表示用户已登录)。
  //如果返回 nil,表示会话已过期或用户未登录。 

优势:

使用 Redis 可以高效管理用户的会话,支持大规模并发访问。

会话有过期机制,无需手动清理过期数据。

 

总结

1. 高性能: Redis 数据存储在内存中,读写速度非常快。

2. 丰富的数据结构: 支持字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)、哈希(Hash)等多种数据类型。

3. 支持持久化: 虽然 Redis 是内存数据库,但支持将数据保存到磁盘,防止数据丢失。

4. 灵活扩展: 支持分布式部署,适合高并发场景。

 

标签:product,初体验,redis,数据库,Redis,用户,---,leaderboard,1001
From: https://www.cnblogs.com/GKLBB/p/18593704

相关文章

  • H5-32 媒体查询
    媒体查询能使页面在不同在终端设备下达到不同的效果媒体查询会根据设备的大小自动识别加载不同的样式1、设置meta标签使用设备的宽度作为视图宽度并禁止初始的缩放。在<head>标签里加入这个meta标签。<metaname="viewport"content="width=device-width,initial-scal......
  • [Tricks-00006]CF1558E 如何处理无向图中的任意环?tourist 题,太神啦。
    题意:自己看去。不过有个限制别忘了:每个点的度数都至少为\(\geq2\)。我写这些Trick题解还是要说清思考方法。不过这个题确实有点难以观察到了/ll还是从简单到难地去讲吧:第一件事。如果没有后面那个不能返回的条件的限制。那么其实可能有很多种想法,不过大体思路都是统一的:每......
  • 泷羽sec-shell编程(3)
    shell(3)声明!学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主......
  • SSM网上书店管理系统etk91--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的飞速发展,线上购物已成为主流消费模式之一。网上书店作为图书销售的重要渠道,其管理系统的优化与升级至关重要。......
  • 国城杯-misc-Tr4ffIc_w1th_Ste90 [WP]
    打开流量包,发现主要是UDP流量,然后还有H264的视频数据直接追踪UDP流,复制原始Hex数据,用Cyberchef转换一下然后下载到本地改后缀为.264然后用把笔记本打开,得到压缩包的解压密码:!t15tH3^pAs5W#RD*f0RFL@9打开压缩包是一个文件和一个图片importnumpyasnpimportcv2impor......
  • Aeal-time inventory System
    11/20/2024IntroductiontoSoftwareEngineeringandProgrammingCoursework2rogramRequirementsDevelopaCprogramasthereal-timeinventorysystemforanewlyopenedsupermarket.Theprogramshouldcompletethe3tasksbelow.Task1.Beforethesupermarket......
  • 2024-2025-1 20241416 《计算机基础与程序设计》第十一周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11这个作业的目标计算机网络网络拓扑云计算网络安全WebHTML,CSS,JavascriptXML作业正文https://www.cnblogs.com/rockytyh/p/1......
  • 如2024-2025-1 20241320 《计算机基础与程序设计》11周学习总结
    2024-2025-120241320《计算机基础与程序设计》第11周学习总结作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11|这个作业的目标|计算机网络网络拓扑云计算网络安全Web......
  • 2024-2025 20241323 第十一周学习任务总结
    这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01• 这个作业的目标计算机网络• 网络拓扑• 云计算• 网络安全• Web• HTML,CSS,Javascript• XML作业正文https://www.cnblogs.com......
  • 【MIT-OS6.S081作业1.4】Lab1-utilities find
    本文记录MIT-OS6.S081Lab1utilities的find函数的实现过程文章目录1.作业要求find(moderate)2.实现过程2.1代码实现1.作业要求find(moderate)WriteasimpleversionoftheUNIXfindprogram:findallthefilesinadirectorytreewithaspeci......