SpringBoot-项目引入Redis依赖

news2024/10/1 7:36:54

在使用Spring Boot开发应用时,可以使用Redis来实现缓存、分布式锁等功能。在编写业务逻辑代码时,可以通过注入RedisTemplate或StringRedisTemplate对象来操作Redis,如存取数据、设置过期时间、删除数据等。同时,还可以使用Redis的发布订阅机制,通过监听器监听消息,实现消息的发布和订阅功能。本文介绍如何在IDEA里将SpringBoot整合Redis。

一、创建SpringBoot项目

创建SpringBoot项目时勾选 Spring Data Redis (Access + Driver),项目创建时会自动导入所需的redis的配置项和包。创建SpringBoot-MyBatis的流程可以参考我的上一篇文章:IntelliJ IDEA搭建SpringBoot-Mybatis项目icon-default.png?t=N7T8https://blog.csdn.net/weixin_41793160/article/details/135363107

和上个项目不同的地方,额外勾选这个:


二、安装启动Redis服务

Redis是一种开源的高性能内存数据库,常用于缓存、消息传递、排行榜和实时统计等应用场景。在Windows系统下安装Redis,可以让开发者更方便地在本地进行开发和测试。首先需要下载最新的Redis安装包,然后解压到指定目录,配置Redis的配置文件,最后启动Redis服务即可。也可以将Redis服务注册为Windows服务,以便在系统启动时自动启动Redis服务。

1、GitHub上下载Redis

下载地址:github.com/tporadowski/redis/releases

 

2、解压到安装目录

把下载的Redis压缩包解压到安装目录。

3、启动Redis服务端

双击redis-server.exe,启动Redis服务端。

4、启动Redis客户端

双击redis-cli.exe,启动Redis客户端。
可以输入ping回车,测试是否连接成功,返回pong则为成功。

5、设置Redis密码

redis.windows-service.conf 里增加一行 requirepass ******,******的内容是密码

6、设置Redis默认启动

将Redis注册为服务,默认启动。

# 切换到Redis安装目录下
cd /dD:/Redis
# 安装Redis为Windows服务
redis-server --service-install redis.windows.conf  --loglevel verbose

 我们再到服务里看,Redis服务已经启动了。


三、编写Reids工具类及调用代码

1、创建RedisUtil工具类

创建访问Redis服务的工具类,命名为RedisUtil.java。

package com.util;
 
import org.springframework.stereotype.Component;
import org.springframework.data.redis.core.RedisTemplate;
 
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
 
@Component
public class RedisUtil {
 
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
 
 
    /**
     * 设置缓存
     *
     * @param key    缓存key
     * @param value  缓存value
     * @param expire 过期时间(单位:秒),传入-1表示永不过期
     */
    public void set(String key, Object value, long expire) {
        redisTemplate.opsForValue().set(key, value);
        if (expire != -1) {
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
    }
 
    /**
     * 获取缓存
     *
     * @param key 缓存key
     * @return 缓存value
     */
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }
 
    /**
     * 判断缓存是否存在
     *
     * @param key 缓存key
     * @return true:存在,false:不存在
     */
    public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
    }
 
    /**
     * 删除缓存
     *
     * @param key 缓存key
     */
    public void delete(String key) {
        redisTemplate.delete(key);
    }
}

2、编写调用Reids工具类的代码

我们新增一个测试接口,通过浏览器访问localhost:8080/redis可以访问到。在UserController里添加代码:

@RequestMapping("redis")
    public String getRedis(HttpServletRequest request)throws Exception{
        redisUtil.set("key", "value", 300); //设置key为value,有效期为300秒
        return redisUtil.get("key").toString();
    }

目前完整的UserController.java代码:

package com.controller;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
 
import com.util.RedisUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import com.entity.User;
import com.service.UserService;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
 
@RestController
public class UserController {
 
    @Resource
    private UserService userService;
    @Resource
    private RedisUtil redisUtil;
 
    @RequestMapping("user")
    public String getTotal(User user,HttpServletRequest request)throws Exception{
        Map<String,Object> map = new HashMap<>();
        Long userCount =userService.getTotal(map);
        return userCount.toString();
    }
 
    @RequestMapping("redis")
    public String getRedis(HttpServletRequest request)throws Exception{
        redisUtil.set("key", "value", 300); //设置key为value,有效期为300秒
        return redisUtil.get("key").toString();
    }
}

四、测试项目Redis是否正常运行

我们在UserController里把<Key=”key”, Value=”value”>的键值对存入了Redis,然后读取Key为”key”的Value值。

成功运行,返回了正确的Value值。

后面我们就可以根据实际情况在SpringBoot项目里编写调用redis数据库的代码了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯基础知识2 全排列 next_permutation(), prev_permutation()

蓝桥杯基础知识2 全排列 next_permutation()&#xff0c; prev_permutation() #include<bits/stdc.h> using namespace std;int a[10];int main(){for(int i 1; i < 4; i)a[i] i; //4*3*2*1 24bool tag true;while(tag){for(int i1; i < 4; i)cout << a[…

RedisInsight - Redis官方可视化工具

一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#…

【Java EE初阶九】多线程进阶一(锁策略)

前言 锁的策略&#xff1a;加锁过程中&#xff0c;即处理冲突的过程中&#xff0c;需要涉及到的一些不同的处理方式&#xff08;此处锁策略并不是java独有的&#xff09;&#xff0c;本篇内容主要是讲解一下关于锁的相关知识点&#xff1b; 1. 关于锁的分组 1.1 第一组&#x…

【Docker】容器的相关命令

上一篇&#xff1a;创建&#xff0c;查看&#xff0c;进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看&#xff0c;容器 aa…

【Windows】之微软输入法配置小鹤双拼

前言 Windows 自带的输入法微软输入法本身就是个最简洁、最方便的输入法&#xff0c;不需要去安装多余的第三方输入法软件。同时&#xff0c;微软中文拼音输入法支持双拼输入法&#xff0c;但微软自带的双拼输入法不包含小鹤双拼方案的。所以&#xff0c;在这里将会讲解如何配置…

【Redis】非关系型数据库之Redis的介绍及安装配置

目录 前言 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.3两者的区别 1.4非关系型数据库产生的背景 1.5总结 二、Redis介绍 2.1Redis是什么 2.2Redis的优点 2.3Redis的使用场景 2.4那些数据适合放在缓存中 2.5Redis为什么那么快&#xf…

Linux内核组成

Linux内核的组成 /boot/vmlinuz-4.18.0-80.el8.x86_64 &#xff1a;启动时用到的内核 /lib/modules/4.18.0-80.el8.x86_64 &#xff1a;内核模块 /boot/initramfs-4.18.0-80.el8.x86_64.img &#xff1a;启动时提供必要的内核模块 kernel-core安装包里面包含了Linux内核启动…

如何科学地防范冬季流感

如何科学地防范冬季流感 加强对呼吸系统传染病预防的观念 在乘坐地铁、公交、火车、飞机等公共交通工具时&#xff0c;应科学佩戴口罩。要经常洗手&#xff0c;定期通风&#xff0c;咳嗽或打喷嚏时要用手捂住口鼻&#xff0c;不要随地吐痰。 羊大师建议积极接种含有XBB变异株…

用判断对齐大语言模型

1、写作动机&#xff1a; 目前的从反馈中学习方法仅仅使用判断来促使LLMs产生更好的响应&#xff0c;然后将其作为新的示范用于监督训练。这种对判断的间接利用受到无法从错误中学习的限制&#xff0c;这是从反馈中学习的核心精神&#xff0c;并受到LLMs的改进能力的制约。 2…

Java运算符简单介绍

文章目录 1. 算术运算符2. 赋值运算符3. 比较&#xff08;关系&#xff09;运算符4. 逻辑运算符5. 位运算符6. 条件运算符&#xff08;三元运算符&#xff09;7. 运算符优先级 1. 算术运算符 &#xff1a;加法 int a 5; int b 3; int sum a b; // 结果为8-&#xff1a;减…

Docker安装WebRTC下TURN服务

详细实现方式以及代码下载请前往 https://www.passerma.com/article/90 实现效果 一、手动构建镜像 1.新建Dockerfile文件 文件用于编译镜像 以alpine为基础镜像 添加coturn需要的依赖库 获取coturn并进行编译 通过start.sh启动turnserver服务 Dockerfile FROM alpineRUN ap…

安卓Android Studioy读写NXP ICODE2 15693标签源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.4391789eCLwm3t&id615391857885 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xm…

零售EDI:Metro EDI项目案例

麦德龙Metro 总部位于杜塞尔多夫&#xff0c;在全球范围内经营批发和零售业务。在2018/2019 财年&#xff0c;麦德龙Metro 的全球销售额约为 270 亿欧元。从2016年开始&#xff0c;麦德龙Metro就开始对其当时约230家门店和20,000多家分销合作伙伴进行数字化整合&#xff0c;借助…

针对人工智能的攻击并发布策略和建议

人工智能系统已经渗透到现代社会的各个领域。从自动驾驶到疾病诊断以及作为在线聊天机器人与客户互动。 为了学习如何执行这些任务&#xff0c;聊天机器人需要接受大量数据的训练。然而&#xff0c;主要问题之一是这些数据可能不可靠。攻击者有很多机会破坏它们。这都是在AI系…

第121场双周赛题解:揭秘算法竞赛中的数位挑战与解题策略

需要多掌握解题套路 比赛地址 100157. 大于等于顺序前缀和的最小缺失整数 class Solution:def missingInteger(self, nums: List[int]) -> int:# Step 1: Find the longest consecutive prefixi 0 for i in range(1, len(nums)):if nums[i] ! nums[i - 1] 1:breakelse:…

while猜数字实例——C++版

案例描述&#xff1a;系统随机生成一个1到100之间的数字&#xff0c;玩家进行猜测&#xff0c;如果猜错&#xff0c;提示玩家数字过大或过小&#xff0c;如果猜对恭喜玩家胜利并退出游戏。 逻辑框图&#xff1a; #include<bits/stdc.h> using namespace std; int main()…

Redis 持久化——AOF

文章目录 为什么需要AOF?概念持久化查询和设置1. 查询AOF启动状态2. 开启AOF持久化2.1 命令行启动AOF2.2 配置文件启动 AOF 3. 触发持久化3.1 自动触发3.3 手动触发 4. AOF 文件重写4.1 什么是AOF重写&#xff1f;4.2 AOF 重写实现4.3 AOF 重写流程 5. 配置说明6. 数据恢复6.1…

数据结构和算法-交换排序中的快速排序(演示过程 算法实现 算法效率 稳定性)

文章目录 总览快速排序&#xff08;超级重要&#xff09;啥是快速排序演示过程算法实现第一次quicksort函数第一次partion函数到第一次quicksort的第一个quicksort到第二次quicksort的第一个quicksort到第二次quicksort的第二个quicksort到第一次quicksort的第二个quicksort到第…

UnityVR入门之六 如何让3DUI层级在场景模型之上

一、问题来源 根据 UnityVR入门之五 射线检测交互-CSDN博客 这一章节我们了解到VR要与UI交互需要将Canvas设置为World Space属性&#xff0c;然后使用碰撞盒的方式进行射线交互。 正常我们ui是始终叠加在3d场景之上的&#xff0c;如此设置当ui与场景模型相交就会遮挡穿模 二、解…

【Java集合篇】负载因子和容量的关系

负载因子和容量有什么关系 ✔️典型解析✔️loadfactor为啥默认是0.75F&#xff0c;不是1呢?✔️为什么HashMap的默认负载因子设置成0.75✔️0.75的数学依据是什么✔️0.75的必然因素 ✔️HashMap的初始值设为多少合适? ✔️典型解析 HashMap 中有几个属性&#xff0c;如 cap…