SpringBoot集成Redis的环境部署以及操作Redis

news2024/11/25 11:23:09

文章目录

  • Spring Boot 集成Redis
    • 1.环境配置
  • redis连接配置信息
  • 不写默认wei6379,数据库为0
    • 2.操作Redis
      • 2.1 代码形式操作Redis
      • 2.2 使用注解方式操作Redis

Spring Boot 集成Redis

1.环境配置

  1. 添加redis依赖
    在老项目添加,可以在pom.xml文件直接添加,通过edit starters插件在plugins可以下载
    在这里插入图片描述
    搜索redis,选择第一个点击add如何点击ok,即可。如果创建新项目,可以直接在创建时搜索redis依赖添加

在这里插入图片描述

  1. 配置连接信息,host为连接的地址,port为端口号默认为6379,database选择的数据库不屑默认为0.

redis连接配置信息

spring.redis.host=124.221.76.124

不写默认wei6379,数据库为0

spring.redis.database=15
spring.redis.port=6379

2.操作Redis

2.1 代码形式操作Redis

首先创建RedisController类进行redis的写操作

package com.example.sp_redis.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author zq
 * @date 2023-07-26 13:15
 */

@RestController
public class RedisContoller {
    //1.引入redis模板(redis本身)
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    @RequestMapping("/set")

    public String setRedis(){
        stringRedisTemplate.opsForValue().set("username","zq");
        return "redis写操作";
    }
}

访问localhost:8080/set,打开我们的redis客户端,发现我们的数据库15成功写入username:zq
在这里插入图片描述
在这里插入图片描述

关于redis客户端,可以在官网下载。我们可以在自己的云服务器上下载redis,然后在redis.conf文件中注释掉bind 127.0.0.1并且将“protected-mode yes” 改为“protected-mode no”;具体操作可以查看我的关于Redis的安装与配置的博客。
关于Redis的安装与配置

接下来进行Redis的读操作:

 @RequestMapping("/get")
    public String getRedis(){
        String res = stringRedisTemplate.opsForValue().get("username");
        return res;
    }

访问地址:
在这里插入图片描述

注意:在我们进行Redis写的操作时,set()存在第三个参数,就是过期时间,我们可以设置存储数据多久过期,所以如果此时你读取不到数据,那么可能就是数据过期了可以尝试重新存储或者设置一个较长的过期时间。

2.2 使用注解方式操作Redis

主要有以下几种注解:

  • @Cacheable:查询/添加,判断redis是否有缓存,如果没有就将当前方法返回值存入redis中,如果存在就直接返回。
  • @CachePut:修改,将方法返回值更新到redis缓存中。
  • @CacheEvict:删除,将redis中对应的缓存删除。

首选我们要开启全局注解缓存,在启动类上加@EnableCaching

然后新建一个类进行注解式操作redis

查询或者添加的操作如下:

package com.example.sp_redis.controller;

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RedisAnnotationController {

    /**
     * 存入或读取缓存
     * @param name
     * @param pnumber
     * @return
     */
    @RequestMapping("/ann-get")
//    注意多个参数时如何设置
    @Cacheable(value = "spring.cache",key = "#name+#pnumber")
    public String get(String name,String pnumber){
        if (!StringUtils.hasLength(name)||!StringUtils.hasLength(pnumber)){
            return null;
        }
        return "name=" +name+"|pnumber=" +pnumber;

    }

}

实现结果如下,成功存入了数据;
在这里插入图片描述

进行删除操作:

 @RequestMapping("/del")
    @CacheEvict(value = "spring.cache", key =  "#name+#pnumber")
    public String del(String name,String pnumber){

        return "delete success";
    }

进行缓存的更新操作:

 @CachePut(value = "spring.cache",key = "#name+'-'+#pnumber")
    @RequestMapping("/put")
    public String put(String name,String pnumber){
        if (!StringUtils.hasLength(name)||!StringUtils.hasLength(pnumber)){
            return null;
        }
        System.out.println("执行了put方法");
        return "name=" +name+"->>"+"pnumber="+pnumber;
    }

我们修改数据存储格式执行put方法之后,再次执行个体方法,可以发现缓存改变了

put方法结果

在这里插入图片描述
get方法结果:

在这里插入图片描述

注意:当我们多次执行get方法时,我们会发现控制台就输出了一次执行get方法,因为我们缓存中已经有了数据。之后的get方法就是直接从缓存中取数据。

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

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

相关文章

DAMO-YOLO 论文学习

1. 解决了什么问题? 工业界追求高性能、低延迟的目标检测算法,研究人员于是聚焦于单阶段目标检测,探索高效的网络结构和训练策略。YOLOv5/v6/v7、YOLOX 和 PP-YOLOE 在 COCO 数据集上实现了不错的精度-速度平衡,得到广泛应用&…

超标量处理器寄存器rename

1.相关性介绍 在CPU中,一段程序会被编译成一连串的汇编指令,指令与指令之间可能会具有相关性(dependency)。所谓相关性,即一条指令的执行会依赖于另一条指令的结果,相关性可以分为:① 数据相关性…

el-table树形表格实现复选框多选效果

2023.7.26今天我学习了如何使用树形表格的时候进行复选框的多选效果。 当我们使用树形结构表格需要进行多选功能操作的时候会发现点击全选的时候,只有一级表格数据会被选中,问题如图: 我们需要实现的是点击全选的不管是几级表格数据都可以被…

ElasticSearch之IK分词器安装以及使用介绍

文章目录 一、IK 分词器简介1. 支持细粒度分词:2. 支持多种分词模式:3. 支持自定义词典:4. 支持拼音分词:5. 易于集成和使用: 二、安装步骤1、下载 IK 分词器插件:2、安装 IK 分词器插件:3. 安装…

各种知名游戏的技术分析

介绍一个GitHub,里面包括了市面上的各种游戏的技术分析,包括渲染管线、工作流、技术文章等等,在做某个类型的游戏的时候,可以针对某个游戏去进行技术参考,特别实用。 GitHub - OTFCG/Awesome-Game-Analysis: a compre…

C++设计模式之模板方法、策略模式、观察者模式

面向对象设计模式是”好的面向对象设计“,所谓”好的面向对象设计“指的是可以满足”应对变化,提高复用“的设计。 现代软件设计的特征是”需求的频繁变化“。设计模式的要点是”寻求变化点,然后在变化点处应用设计模式,从而更好地…

力扣天天练--week3-LeetCode75

topic75-9-t443:压缩字符串 题目描述: 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中。 否则,需…

Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)

一、前提准备 在Spring Boot中整合MyBatis时,你需要导入JDBC(不需要手动添加)和Druid的相关依赖。 JDBC依赖:在Spring Boot中整合MyBatis时,并不需要显式地添加JDBC的包依赖。这是因为,当你添加mybatis-sp…

会捷通云视讯 list 目录文件泄露漏洞

劳动永远是医治精神创伤的良药。 漏洞描述 会捷通云视讯某个文件 list参数 存在目录文件泄露漏洞,攻击者通过漏洞可以获取一些敏感信息 漏洞复现 构造payload访问漏洞url: /him/api/rest/V1.0/system/log/list?filePath../漏洞证明: 文…

Mendix 创客访谈录|综合业务展示大屏应用开发

本期创客 刘书智 西门子工业领域专家 我在西门子工厂自动化工程有限公司工作。一直从事SCADA产品的技术支持工作,已经过去17个年头了。赶上数字化发展的浪潮,不断学习各种IT技术,践行 IT与OT融合,希望借助自己的IT知识助力OT的发…

编程实战班--C语言和Python语言实现五子棋游戏的代码

文章目录 下面分别是C语言和Python语言实现五子棋游戏的代码:C语言实现Python语言实现总结 下面分别是C语言和Python语言实现五子棋游戏的代码: C语言实现 在使用C语言实现五子棋游戏时,可以使用SDL2图形库来实现图形界面和图形绘制等功能&…

华为华三思科 交换机基础配置一览

console密码修改 华为 user-interface console 0 authentication-mode password set authentication password cipher XXXXXXXXX华三 line aux 0 authentication-mode password set auth pass simple XXX思科 en configure terminal line console 0 password 123 login忘记…

打开英雄联盟提示d3dcompiler47.dll缺失怎么修复

1.d3dcompiler_47.dll缺失的原因 损坏的文件:d3dcompiler_47.dll文件可能由于某些原因损坏,如病毒感染、意外删除等。 不兼容的操作系统:某些应用程序要求特定版本的d3dcompiler_47.dll文件,如果操作系统不兼容,则可能…

前端实现导出excel表格(单行表头)

需求:实现勾选行导出为表格 一、安装插件 npm install --save file-saver xlsx运行项目报如下警告的话 运行npm install xlsx0.16.0 --save 来降低版本号(最初我安装的版本号是0.18.16的版本)再次运行项目就不会报如下警告了 二、新建一个ex…

语音分帧简述

目录 1. 分帧 1.1 非整齐分帧 1.2 整齐分帧 2. 示例代码 1. 分帧 问题1:总帧数如何计算? 记符号N为语音总长度,FRAME_LEN为帧长,OVERLAP_LEN为帧与帧之间的重叠部分,STEP_LEN为帧移(步长)。则总帧数N_Frames计算…

kotlin 编写一个简单的天气预报app(二)

增加界面显示openweathermap返回的信息。 在activity_main.xml里增加输入框来输入城市&#xff0c;在输入款旁边增加搜索按钮来进行查询。 然后原来显示helloworld的TextView用来显示结果。 1. 增加输入城市名字的EditText <EditTextandroid:id"id/editTextCity"…

AcrelEMS企业微电网能效管理平台实现用户侧智能配电和智能用电管理-安科瑞黄安南

摘要&#xff1a;随着科技的发展&#xff0c;电力系统正逐步向智能化、数字化、互联网化迈进。智能配电与智能用电是电力产业发展的重要方向&#xff0c;将为传统电力系统带来革命性的变革。本文将对智能配电和智能用电的概念、特点、关键技术及应用进行详细介绍。 1、智能配电…

Rust vs Go:常用语法对比(八)

题目来自 Golang vs. Rust: Which Programming Language To Choose in 2023?[1] 141. Iterate in sequence over two lists Iterate in sequence over the elements of the list items1 then items2. For each iteration print the element. 依次迭代两个列表 依次迭代列表项1…

【linux基础(一)】Linux基本指令(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到开通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 这里写目录标题 1. 前言1. 创…

[vulnhub]DC2

文章目录 [vulnhub]DC2信息收集flag1flag2cewlwpscan flag3什么是rbash&#xff1f; flag4flag5git提权 总结 [vulnhub]DC2 信息收集 扫ip&#xff0c;有两种方式&#xff1a;arp、nmap nmap -sP 192.168.56.0/24 -T4arp-scan -l192.168.56.137 扫端口&#xff1a; nmap -…