【Redis】Redis的应用场景

📝个人主页:五敷有你
🔥系列专栏:Redis
⛺️稳中求进,晒太阳

Redis的应用场景:
限流
要求10s内只能访问一次
@RequestMapping("xian")public String xianLiu(String sign){String sign1 = redisTemplate.opsForValue().get("sign");if(!StringUtils.isBlank(sign1)){return "我不可以访问";}redisTemplate.opsForValue().set("sign",sign,10, TimeUnit.SECONDS);return "我可以访问";}

10s内只能访问5次
@RequestMapping("/access")public String access(String id){Long increase= redisTemplate.opsForValue().increment(id);redisTemplate.expire(id,10,TimeUnit.SECONDS);if(increase>5){return "我不可以访问,10s内访问次数"+increase;}return "我可以访问"+increase;}


抢红包
要求
- 所有人抢到金额之和等于红包金额,不能少于10元。
- 每个人至少抢到1快钱。
- 保证所有人抢到金额的几率相等
实现思路:
给每个红包一个保底1元,让后将剩下的钱进行随机分配
如果restTime<0,表示红包过期
如果redis返回null 表示抢完了,返回已抢完
注意:红包过期时间。
@RequestMapping("/sendRedBags")public String sendRedBags(Integer uid,Integer money,Integer bags){Random random = new Random();Integer[] redBags=new Integer[bags];Arrays.fill(redBags,1);int restMoney= money-bags;for(int i=0;i<bags-1;i++){int bound= restMoney+1;//最少1元int mon= random.nextInt(bound);redBags[i]+=mon;restMoney=restMoney-mon;if(restMoney<=0){break;}}redBags[bags-1]+=restMoney;System.out.println("uid"+uid+"发送红包: "+Arrays.toString(redBags));String key="redBags:"+uid;for (int i = 0; i < bags; i++) {redisTemplate.opsForList().leftPush(key,redBags[i].toString());}redisTemplate.expire(key,20,TimeUnit.SECONDS);return "ok";}@RequestMapping("/getRedBags")public String getRedBags(Integer uid){String key="redBags:"+uid;Long restTime = redisTemplate.getExpire(key,TimeUnit.SECONDS);System.out.println("红包剩余时间: "+restTime);if(restTime<=0){return "红包过期了";}String redBags = redisTemplate.opsForList().leftPop(key);if(StringUtils.isBlank(redBags)){return "红包抢光了";}System.out.println("你抢到的金额: "+redBags);return "你抢到的金额: "+redBags;}
运行结果:

看似没有问题,但在redBags中没有东西后,key也就没了,如下:
当第6次获取红包,就会返回-2,表示没有这个key了,可明明还有时间啊,是value为nil了,key也就没了??

验证:

经过验证,确实如果list结构中的value没了之后,key也没了。不用等到过期。
所以上面判断时间的代码好像就没意义了,修改,简单点!
@RequestMapping("/getRedBags")public String getRedBags(Integer uid){String key="redBags:"+uid;String redBags = redisTemplate.opsForList().leftPop(key);if(StringUtils.isBlank(redBags)){return "红包过期了或被抢光了";}System.out.println("你抢到的金额: "+redBags);return "你抢到的金额: "+redBags;}相关文章:
【Redis】Redis的应用场景
📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的应用场景: 限流 要求10s内只能访问一次 RequestMapping("xian")public String xianLiu(String sign){String sign1 …...
计算机网络—以太网接口和链路配置
目录 1.拓扑图 2.以太网交换机基础配置 3.配置手动模式的链路聚合 4.配置静态 LACP 模式的链路聚合 5.配置文件 1.拓扑图 2.以太网交换机基础配置 华为交换机接口默认开启了自协商功能,需要手动配置S1与 S2上G0/0/9和G0/0/10接口的速率。 首先修改交换机的设…...
关于做副业、做自媒体:说几句扎心的话
今天在某乎看到一个问题:想尝试自媒体,想了一个月了,都没想好怎么起步,咋整呀? 恰好昨天陪退休老妈去探店,有感而发,就来唠一唠。 一、退休老妈的副业经历 老妈去年年初开始,在某…...
精通SpringBoot单元测试
引言 单元测试是软件开发中不可或缺的一部分,它对保障代码质量和软件的可靠性起着至关重要的作用。而SpringBoot作为一个流行的Java框架,为开发高效、易于部署的微服务提供了强大的支持。 单元测试的重要性: 确保代码正确性:通过…...
HAProxy 简单介绍
一 HAProxy介绍 (一)发展历史 HAProxy是法国开发者威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换…...
SpringBoot集成Swagger3.0
一:前言 Swagger 是一个 RESTful API 的开源框架,它的主要目的是帮助开发者设计、构建、文档化和测试 Web API。Swagger 的核心思想是通过定义和描述 API 的规范、结构和交互方式,以提高 API 的可读性、可靠性和易用性,同时降…...
计算机网络-第5章 运输层(1)
主要内容:进程之间的通信与端口、UDP协议、TCP协议、可靠传输原理(停止等待协议、ARQ协议)、TCP报文首部、TCP三大题:滑动窗口、流量控制、拥塞控制机制 5.1 运输层协议概述 运输层向它上面的应用层提供通信服务,真正…...
性能优化-卡牌项目渲染优化
优化的方向 CPU 影响帧率 GPU 影响帧率 内存 超了会崩 显存 显存超了画面会异常,甚至可能导致游戏崩溃 带宽 影响耗电 分辨率 设备性能不行又要求流畅,降低目标渲染分辨率,立竿见影,但是会牺牲画质 场景 1 使用烘焙…...
STM32FreeRTOS任务通知(STM32cube高效开发)
文章目录 一、任务通知(一)任务通知概述1、任务通知可模拟队列和信号量2、任务通知优势和局限性 (二) 任务通知函数1、xTaskNotify()发送通知值不返回先前通知值的函数2、xTaskNotifyFromISR()发送通知函数ISR版本3、x…...
基于element-plus的Dialog选择控件
翻看之前工程师写的vue2的代码,很多都是复制、粘贴,也真是搞不懂,明明可以写一个控件,不就可以重复使用。很多前端总喜欢element搞一下,ant-design也搞一下,有啥意义,控件也不是自己写的&#x…...
手把手教使用静默 搭建Oracle 19c 一主一备ADG集群
一、环境搭建 主机IPora19192.168.134.239ora19std192.168.134.240 1.配置yum源 1.配置网络yum源 1.删除redhat7.0系统自带的yum软件包; rpm -qa|grep yum >oldyum.pkg 备份原信息rpm -qa|grep yum|xargs rpm -e --nodeps 不检查依赖,直接删除…...
使用协程库httpx并发请求
httpx和aiohttp都是比较常用的异步请求库,当然requests多线程或requestsgevent也是不错的选择。 一个使用httpx进行并发请求的脚本如下: import functools import sys import timeimport anyio import httpxasync def fetch(client, results, index) -…...
js的同步异步
JavaScript(JS)是一门单线程的编程语言,这意味着它一次只能处理一个任务。然而,JS 支持同步和异步操作。 同步操作是指代码按照顺序执行,每个操作必须在前一个操作完成后才能进行。这意味着当一个操作在执行时&#x…...
C# MG.CamCtrl 工业相机库(开源) 海康 大恒
C# MG.CamCtrl 相机库(开源) 海康 大恒 介绍工厂模式创建实例选取对应SN号的相机,初始化启动相机取图注销相机参数设置/获取接口 介绍 c# 相机库,含海康、大恒品牌2D相机的常用功能。 底层采用回调信号量模式封装 ,最…...
【Redis】redis的基本使用
📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的概述 为什么要有redis? redis是数据库,mysql也是数据库,redis做缓存的意义就是为了减轻数据库压力 数据库为什么…...
植物病害识别:YOLO水稻病害识别数据集(3000多张,3个类别,yolo标注)
YOLO水稻病害识别数据集,包含细菌性枯萎病,水稻瘟疫,褐斑病3个常见病害类别,共3000多张图像,yolo标注完整,可直接训练。 适用于CV项目,毕设,科研,实验等 需要此数据集或…...
Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战
上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码,针对测试链进行自测开发,准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址,我们不需要在线进行创建,直接可以通过第一节的离…...
010-$nextTick
$nextTick 1、问题2、$nextTick3、应用场景 1、问题 Vue 实现响应式,在 data 更新后,一定时间内,没有继续操作DOM,然后会触发浏览器渲染引擎去更新DOM,更新DOM也是需要时间的,所以 data 更新引起的 DOM更新…...
[IAGC] Kafka消费者组的负载均衡策略
在Apache Kafka中,负载均衡是通过将主题的每个分区分配给消费者组中的一个消费者来实现的。Kafka的负载均衡算法会尽可能平均地将分区分配给每个消费者。 文章目录 分配策略Kafka的重新平衡扩展性参考资源 分配策略 在Kafka中,有两种内置的分区分配策略…...
2024年会声会影 迎接来了七大新功能
我喜欢Corel VideoStudio 会声会影2024旗舰版,因为它使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。VideoStudio让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触及它的表面,我可以做大量的编辑…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

