SpringBoot-项目引入Redis依赖

在使用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数据库的代码了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

西电期末1027.判断同构数

一.题目 二.分析与思路 不用把他转成字符串再转成数字之类的&#xff0c;用数学解决就好&#xff01;找出一个数的最后位就是将其对求余啊&#xff0c;找一个数有几位以前也有过啊&#xff0c;那不就过了嘛&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 in…

Windows.OpenSSL生成ssl证书配置到nginx

一、下载OpenSSL程序安装 到E:\soft\OpenSSL-Win64 二、打开一个CMD控制台窗口&#xff0c;设置好openssl.cnf路径 E: cd E:\soft\OpenSSL-Win64\bin set OPENSSL_CONFE:\soft\OpenSSL-Win64\bin\openssl.cnf 三、在当前目录 E:\soft\OpenSSL-Win64\bin 里创建两个子目录 m…

MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces(临时表空间)

文章目录 MySQL 8.0 InnoDB Tablespaces之Temporary Tablespaces&#xff08;临时表空间&#xff09;会话临时表空间会话临时表空间的磁盘分配和回收会话临时表空间的创建创建临时表和查看临时表信息会话临时表空间相关的设置参数innodb_temp_tablespaces_dir 全局临时表空间查…

CentOS安装gcc及g++

目录 一、在线安装 二、离线安装 1、收集对应.rpm文件 2、rpm文件上传 3、在该目录下执行安装命令 3、测试 一、在线安装 联网安装比较简单只需使用如下命令即可 yum install gcc yum install gcc-c 二、离线安装 1、收集对应.rpm文件 &#xff08;1&#xff09;、解压…

OS_lab——保护模式之GDT、 Descriptor、Selector、GDTR 及其之间关系

1. 保护模式的相关数据结构 保护模式必要的数据结构定义 • GDT&#xff1a;即为 Global Descriptor Table&#xff08;全局描述符表&#xff09;&#xff0c;又称段描述符表&#xff0c; 为保护模式下的一个数据结构。其中包含多个 descriptor&#xff0c;定义了段的起始地…

pyinstaller生成的exe文件启动时间漫长的原因

加-F慢的原因是&#xff0c;pyinstaller把所有资源文件包括python解释器的依赖文件和库都打包到exe一个文件中&#xff0c;用户打开时&#xff0c;pyinstaller需要先执行一边解压操作&#xff0c;把依赖文件全部解压出来。慢就慢在这里。 如果不加-F&#xff0c;你会发现那些文…

STL标准库与泛型编程(侯捷)笔记3

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

常用服务器管理面板整理汇总

服务器管理面板是用于管理和控制服务器的软件&#xff0c;可以帮助管理员更轻松地进行服务器管理和维护。以下是几种常用的服务器管理面板&#xff1a; 1、宝塔面板【官网直达】 宝塔面板是一款服务器运维管理软件&#xff0c;支持Windows和Linux等操作系统&#xff0c;提供了…

《动手学深度学习》学习笔记 第6章 卷积神经网络

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知道&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

TypeScript 从入门到进阶之基础篇(六) 类型(断言 、推论、别名)| 联合类型 | 交叉类型

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇TypeScript 从入门到进阶…

鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法

一、介绍 鱼类识别系统。使用Python作为主要编程语言开发&#xff0c;通过收集常见的30种鱼类&#xff08;‘墨鱼’, ‘多宝鱼’, ‘带鱼’, ‘石斑鱼’, ‘秋刀鱼’, ‘章鱼’, ‘红鱼’, ‘罗非鱼’, ‘胖头鱼’, ‘草鱼’, ‘银鱼’, ‘青鱼’, ‘马头鱼’, ‘鱿鱼’, ‘鲇…

如何批量自定义视频画面尺寸

在视频制作和编辑过程中&#xff0c;对于视频画面尺寸的调整是一项常见的需求。有时候&#xff0c;为了适应不同的播放平台或满足特定的展示需求&#xff0c;我们需要对视频尺寸进行批量调整。那么&#xff0c;如何实现批量自定义视频画面尺寸呢&#xff1f;本文将为您揭示这一…

github action

https://www.bilibili.com/video/BV1PM411B7um/?spm_id_frompageDriver&vd_sourcefd0f4be6d0a5aaa0a79d89604df3154a workflow pipeline

PyTorch 进阶指南,这个宝典太棒了

最新写了很多关于 Pytorch 的文章&#xff0c;主要针对刚刚接触 Pytorch 的同学&#xff0c;文章我给大家列出来了&#xff0c;喜欢可以从0开始学习&#xff1a; 小白学 PyTorch 系列&#xff1a;这一次&#xff0c;我准备了 20节 PyTorch 中文课程小白学 PyTorch 系列&#x…

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk&#xff0c;tomcat&#xff0c;Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统&#xff0c;基于Linux内核&#xf…

学完 Pinia 再也不想用 vuex 真香啊!!!!

&#x1f495;Pinia 注册 ✔ vue3 与 Pinia 注册 import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst app createApp()app.use(createPinia()) app.mount(#app)✔ vue2 与 Pinia 注册 import Vue from vue import App from …

java推荐系统:好友推荐思路

1.表的设计 表里面就两个字段&#xff0c;一个字段是用户id&#xff0c;另外一个字段是好友id&#xff0c;假如A跟B互为好友&#xff0c;那在数据库里面就会有两条数据 2.推荐好友思路 上面的图的意思是&#xff1a;h跟a的互为好友&#xff0c;a跟b&#xff0c;c&am…

Python笔记04-数据容器列表、元组、字符串、集合、字典

文章目录 listtuple 元组str序列&#xff08;切片&#xff09;setdict集合通用功能 Python中的数据容器&#xff1a; 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素 每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等…

JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻删除

java-ee项目结构设计 1.dao:对数据库的访问&#xff0c;实现了增删改查 2.entity:定义了新闻、评论、用户三个实体&#xff0c;并设置对应实体的属性 3.filter&#xff1a;过滤器&#xff0c;设置字符编码都为utf8&#xff0c;防止乱码出现 4.service:业务逻辑处理 5.servlet:处…

Qt/QML编程学习之心得:Linux下USB接口使用(25)

很多linux嵌入式系统都有USB接口,那么如何使用USB接口呢? 首先,linux的底层驱动要支持,在linux kernal目录下可以找到对应的dts文件,(device tree) usb0: usb@ee520000{compatible = "myusb,musb";status = "disabled";reg = <0xEE520000 0x100…