当前位置: 首页 > news >正文

Redis:java中redis的基本使用(springboot)

文章目录

  • springboot中使用redis
    • springboot 连接 redis三种方式
    • 导入依赖
    • 增删改查
    • 小练习

springboot中使用redis

springboot 连接 redis三种方式

  1. jedis (redis官方提供的)
  2. springboot自带的
  3. redisson (基于jedis优化的,性能最好,使用最多)

本文以springboot自带为例

导入依赖

导入springboot自带的redis依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

controller中注入即可。

    @Resourceprivate RedisTemplate<String, String> redisTemplate;

增删改查

基本的增删改查,很简单。

    @GetMapping("/test")public String test() {// 增redisTemplate.opsForValue().set("lpy", "123", 1, TimeUnit.HOURS);// 查String lpy = redisTemplate.opsForValue().get("lpy");System.out.println(lpy); // 123// 改redisTemplate.opsForValue().set("lpy", "456", 1, TimeUnit.HOURS);lpy = redisTemplate.opsForValue().get("lpy");System.out.println(lpy); // 456// 删redisTemplate.delete("lpy");lpy = redisTemplate.opsForValue().get("lpy");System.out.println(lpy); // nullreturn "success";}

在这里插入图片描述

小练习

需求:防止用户频繁访问,10s内只能访问一次。

    @GetMapping("/access")public String access(String id) {String exit =  redisTemplate.opsForValue().get("user" + id);if (exit == null || "".equals(exit)) {redisTemplate.opsForValue().set("user" + id, "true", 10, TimeUnit.SECONDS);return "可以访问";}return "访问过于频繁";}

在这里插入图片描述


需求:用户10s内只能访问5次。

    @GetMapping("/test2")public String test2(String id) {Long increment = redisTemplate.opsForValue().increment(id, 1);redisTemplate.expire(id, 10, TimeUnit.SECONDS);if (increment > 5) {return "你不能访问,近10秒访问次数是" + increment;} else {return "欢迎使用,访问次数是" + increment;}}

在这里插入图片描述


需求:发红包,指定金额和数量(保证数量 <= 金额)单位元。 抢红包,每个红包最少为一元。利用list。 拆分的红包入队,抢红包出队。

这里只是简单写的,实际肯定是要记录发红包的人,抢红包的人等等各种情况,也不可能有这么多小数点。可以自行尝试。 这里主要是练习list的使用。

    /*** 发红包* @param money* @param count* @return*/@GetMapping("/sendRedEnvelope")public String sendRedEnvelope(double money, int count) {if (count > money) return "金额过小或个数过多,请保证每个包最少可以有一元";Random rand = new Random();double sum = 0; // 检验一下是否分配正确for (int i = 0; i < count; i++) {double max = money - (count - i - 1) * 1; // 确保后面的钱够,所以预留出足够的最小金额// 如果是最后一个包,把剩余的钱全部放入if (i == count - 1) {redisTemplate.opsForList().rightPush("redList", String.valueOf(max)); // 插入队列sum += max;continue;}double redMoney = rand.nextDouble() * (max - 1) + 1.0; // 每个红包的金额money -= redMoney; // 减去已经包好的红包金额redisTemplate.opsForList().rightPush("redList", String.valueOf(redMoney)); // 插入队列sum += redMoney;}System.out.println(sum);return "发放成功";}/*** 抢红包* @return*/@GetMapping("/grabRedEnvelope")public String grabRedEnvelope() {Long redListSize = redisTemplate.opsForList().size("redList");// 红包已经抢完if (redListSize == 0) {return "此红包已经抢完";}// 获取红包double money = Double.parseDouble(redisTemplate.opsForList().leftPop("redList"));return "抢红包成功,你抢了" + money + "元";}

发红包
在这里插入图片描述

抢红包
在这里插入图片描述

相关文章:

Redis:java中redis的基本使用(springboot)

文章目录 springboot中使用redisspringboot 连接 redis三种方式导入依赖增删改查小练习 springboot中使用redis springboot 连接 redis三种方式 jedis &#xff08;redis官方提供的&#xff09;springboot自带的redisson (基于jedis优化的&#xff0c;性能最好&#xff0c;使…...

微型计算机技术

摘要&#xff1a;微型计算机是通用计算机的一个重要发展分支,自1981年美国IBM公司推出第一代商用微型计算机以来,微型计算机迅速进入社会各个领域,且技术不断更新、产品快速换代,已成为人们工作和生活中不可缺少的基本工具。 一、微型计算机技术发展历史 1.第一代微处理器(19…...

mysql下载教程

什么是mysql MySQL是一种开源的关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;现在由Oracle公司维护。MySQL支持多个操作系统&#xff0c;包括Linux、Windows、macOS等。它是一种客户端/服务器模式的数据库&#xff0c;提供高效、可靠、稳定的数据存储和…...

ResponseStatusException

目录 概述&#xff1a; 综合实例&#xff1a; 继承 ResponseStatusException-自定义异常类 继承 ResponseStatusException-自定义响应头信息 继承 ResponseStatusException-定制更多异常处理逻辑 继承 ResponseStatusException-根据异常发生的上下文动态改变 HTTP 状态码…...

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术&#xff0c;于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经&#xff0c;于是到了二仙山&#xff0c;并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州&#xff0c;公孙胜说听师傅的。罗真人说出家人不管闲事&a…...

CSAPP-程序的机器级表示

文章目录 概念扫盲思想理解经典好图安全事件 概念扫盲 1.汇编代码使用文本格式&#xff0c;相较于汇编的二进制可读性更好 2.程序内存包括&#xff1a;可执行的机器代码、操作系统需要的信息、管理过程调用和返回的运行时栈、用户分配的内存块 3.链接器为函数调用找到匹配的可…...

TCP传输收发

TCP通信: TCP发端: socket connect send recv close TCP收端: socket bind listen accept send recv close 1.connect int connect(int sockfd, const struct sockaddr *addr, socklen_t ad…...

OJ习题之——圆括号编码

圆括号编码 1.题目描述2.完整代码3.图例演示 1.题目描述 题目描述 令Ss1 s2 …sn是一个规则的圆括号字符串。S以2种不同形式编码&#xff1a; &#xff08;1&#xff09;用一个整数序列Pp1 p2 … pn编码&#xff0c;pi代表在S中第i个右圆括号的左圆括号数量。&#xff08;记为…...

Android耗电分析之Battery Historian工具使用

Battery-Historian是谷歌推出的一款专门分析Bugreport的工具&#xff0c;是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具&#xff0c;是一款对于分析手机状态&#xff0c;历史运行情况很好的可视化分析工具。 …...

vue el-avatar 使用require提示无法找到图片

报错信息 错误代码 问题分析 vue初始化DOM树时没有挂载数据,导致无法找到模块 解决方案...

深入理解 C# 中的 Task:异步编程的利器

深入理解 C# 中的 Task&#xff1a;异步编程的利器 前言一、Task 的基本概念什么是 Task&#xff1f;为什么要使用 Task&#xff1f; Task 的使用方法创建 Task等待 Task 完成Task 返回结果 Task 的进阶用法Task 异常处理Task 同步执行Task 并发限制 Task 的实际应用场景并行计…...

YOLOv9电动车头盔佩戴检测,详细讲解模型训练

向AI转型的程序员都关注了这个号&#x1f447;&#x1f447;&#x1f447; 一、YOLOv9简介 YOLOv9是YOLO系列算法的最新版本。YOLO系列算法自2015年首次提出以来&#xff0c;已经在目标检测领域取得了显著的进展&#xff0c;以其快速和准确的特点而广受欢迎。 论文地址&#xf…...

OpenStack之Nova

一 、Nova 使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务 &#xff08;IaaS&#xff09;系统的主要部分。 主要模块在Python中实现&#xff1a; 1因为认证&#xff0c;与OpenStack 身份认证keystone 交互。 2因为磁盘和服务器镜像&#xf…...

虽说主业搞前端,看到如此漂亮的网页UI,也是挪不开眼呀。

漂亮的网页UI能够吸引人的眼球&#xff0c;给人留下深刻的印象。作为前端开发人员&#xff0c;可以通过不断学习和掌握设计技巧和工具&#xff0c;提升自己的UI设计能力&#xff0c;为用户提供更好的视觉体验。 以下是一些提升网页UI设计能力的建议&#xff1a; 学习设计基础知…...

嵌入式学习第二十六天!(网络传输:TCP编程)

TCP通信&#xff1a; 1. TCP发端&#xff1a; socket -> connect -> send -> recv -> close 2. TCP收端&#xff1a; socket -> bind -> listen -> accept -> recv -> send -> close 3. TCP需要用到的函数&#xff1a; 1. co…...

【LeetCode】升级打怪之路 Day 14:二叉树的遍历

今日题目&#xff1a; 144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102. 二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节点指针117. …...

[Unity实战]使用NavMeshAgent做玩家移动

其实除了Character Controller, Rigidbody&#xff0c;我们还可以使用NavMeshAgent去做。这么做的好处是能避免玩家去莫名其妙的地方&#xff08;毕竟基于烘焙过的导航网格&#xff09;&#xff0c;一般常见于元宇宙应用和mmo。 根据Unity手册&#xff0c;NavMeshAgent 也有和…...

官网:随便搞个?那不如不搞,搞不好就给公司减分了。

官网建设确实需要认真对待&#xff0c;不能随便搞。一个粗制滥造的官网可能会给公司带来负面影响&#xff0c;降低品牌形象和用户体验。以下是一些官网建设的重要原则&#xff1a; 专业性&#xff1a;官网应该展示公司的专业性和专业知识。它应该以专业的设计、内容和功能来展示…...

Ansible 基础入门

2&#xff09;Ansible 介绍 Ansible 基本概念 Ansible 是一种自动化运维工具&#xff0c;基于 Paramiko 开发的&#xff0c;并且基于模块化工作&#xff0c;Ansible 是一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台&#xff0c;它是基于 Python 语言&#xf…...

讨论:5万官网是建站界的劳斯莱斯了吧,到了软件开发领域呢?

如题&#xff0c;所以赛道选择很重要&#xff0c;当然难度系数也不一样。能花5万元做官网的&#xff0c;凤毛麟角&#xff0c;如果是做软件开发&#xff0c;5万元顶多算个起步价&#xff0c;老铁们&#xff0c;是这样吗&#xff1f;...

城通网盘解析工具:3步获取高速直连下载地址的终极方案

城通网盘解析工具&#xff1a;3步获取高速直连下载地址的终极方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否还在为城通网盘的蜗牛下载速度而烦恼&#xff1f;每次下载大文件都要经历漫长的…...

Unlock Music Electron:3步解锁你的加密音乐文件,重获音乐自由终极指南

Unlock Music Electron&#xff1a;3步解锁你的加密音乐文件&#xff0c;重获音乐自由终极指南 【免费下载链接】unlock-music-electron Unlock Music Project - Electron Edition 在Electron构建的桌面应用中解锁各种加密的音乐文件 项目地址: https://gitcode.com/gh_mirro…...

从分布式到可分发:大规模软件制品分发架构设计与实践

1. 项目概述&#xff1a;从“分布式”到“可分发”的思维跃迁最近在梳理团队内部的基础设施时&#xff0c;又翻出了distr-sh/distr这个项目。说实话&#xff0c;第一次看到这个仓库名&#xff0c;我下意识地把它归类为又一个“分布式系统”框架。但当我真正点进去&#xff0c;花…...

LVGL在无显存TFT屏上的驱动适配:双缓冲与DMA优化实践

1. 项目概述&#xff1a;当TFT屏幕遇上LVGL最近在做一个嵌入式GUI项目&#xff0c;核心任务是把LVGL这个轻量级图形库&#xff0c;适配到一块分辨率不算高但接口比较“个性”的TFT屏幕上。这活儿听起来像是把标准插头插到非标插座上&#xff0c;得自己动手改改线序。LVGL这几年…...

告别答辩PPT焦虑:百考通AI智能生成,高效搞定毕业答辩全流程

毕业季悄然来临&#xff0c;随着毕业论文定稿&#xff0c;答辩PPT成了不少同学面临的下一个挑战。不懂设计、不会梳理逻辑、找不到合适的学术模板……许多同学花费大量时间在排版调整、修改打磨上&#xff0c;不仅效率低下&#xff0c;还常常做出结构混乱、风格不统一的PPT&…...

量子控制中的动态校正门与SCQC几何方法

1. 量子控制中的噪声挑战与动态校正门在超导量子处理器上实现高保真度的量子门操作&#xff0c;最大的障碍来自环境噪声。这些噪声主要分为两类&#xff1a;失谐噪声&#xff08;δz&#xff09;和幅度噪声&#xff08;ϵ&#xff09;。失谐噪声源于量子比特频率的漂移&#xf…...

Cursor编辑器性能优化:精准重置缓存与进程的开发者效率工具

1. 项目概述&#xff1a;一个被低估的开发者效率工具如果你是一名开发者&#xff0c;尤其是深度使用 Cursor 这类 AI 驱动的代码编辑器&#xff0c;那么你一定遇到过这样的场景&#xff1a;编辑器突然变得卡顿、代码补全失灵、AI 建议变得驴唇不对马嘴&#xff0c;或者插件行为…...

如何在Windows上无缝安装安卓应用:APK安装器终极指南

如何在Windows上无缝安装安卓应用&#xff1a;APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在电脑上羡慕安卓应用的便利&#xff0c;却苦…...

AI驱动命令行工具:用自然语言生成Shell命令,提升开发运维效率

1. 项目概述&#xff1a;一个能“读懂”你意图的智能命令行工具如果你和我一样&#xff0c;每天有大量时间泡在终端里&#xff0c;那么对命令行工具的效率追求几乎是永无止境的。敲命令、查参数、记路径、处理错误……这些琐碎的操作虽然基础&#xff0c;却实实在在地消耗着我们…...

为什么92%的设计师调不出正宗铂金印相?3个被忽略的色彩科学陷阱与CIE LAB空间修正公式

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;铂金印相的视觉本质与历史语境 铂金印相&#xff08;Platinum Print&#xff09;并非一种数字图像处理技术&#xff0c;而是一种19世纪末诞生于摄影化学工艺巅峰的物理显影体系。其视觉本质在于——铂金…...