Java --- springboot3整合redis

news2024/10/6 1:36:45

目录​​​​​​​

一、整合redis

1.1、导入pom依赖

1.2、修改springboot配置文件

1.3、代码测试 

二、测试访问redis五大常用数据类型

三、自动配置原理

四、定制化

4.1、解决redis存储序列化乱码问题 

4.2、redis客户端使用jedis


一、整合redis

1.1、导入pom依赖

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

1.2、修改springboot配置文件

1.3、代码测试 

@RestController
public class RedisController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @GetMapping("/count")
    public String count(){
        Long count = stringRedisTemplate.opsForValue().increment("k1");
        return "访问了"+count+"次";
    }
}

二、测试访问redis五大常用数据类型

@SpringBootTest
class Boot3RedisApplicationTests {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 普通字符串
     */
    @Test
    void contextLoads() {
        stringRedisTemplate.opsForValue().set("test1", UUID.randomUUID().toString());
        String k = stringRedisTemplate.opsForValue().get("test1");
        System.out.println(k);
    }

    /**
     * list类型
     */
    @Test
    void testList(){
        stringRedisTemplate.opsForList().leftPush("a1","1");
        stringRedisTemplate.opsForList().leftPush("a1","2");
        stringRedisTemplate.opsForList().leftPush("a1","3");
        String a1 = stringRedisTemplate.opsForList().leftPop("a1");
        Assertions.assertEquals("3",a1);
    }

    /**
     * set类型
     */
    @Test
    void testSet(){
        stringRedisTemplate.opsForSet().add("set1","1","2","3");
        Boolean set1 = stringRedisTemplate.opsForSet().isMember("set1", "2");
        Assertions.assertTrue(set1);
    }

    /**
     * zset类型
     */
    @Test
    void testZSet(){
        stringRedisTemplate.opsForZSet().add("zset1","张三",12);
        stringRedisTemplate.opsForZSet().add("zset1","李四",13);
        stringRedisTemplate.opsForZSet().add("zset1","王五",14);
        ZSetOperations.TypedTuple<String> zset1 = stringRedisTemplate.opsForZSet().popMax("zset1");
        System.out.println(zset1.getValue()+":"+zset1.getScore());
    }

    /**
     * hash类型
     */
    @Test
    void testHash(){
        stringRedisTemplate.opsForHash().put("hash1","name","tom");
        stringRedisTemplate.opsForHash().put("hash1","age","12");
    }
}

三、自动配置原理

四、定制化

@Data
public class Person implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
}
 @GetMapping("/addPerson")
    public void addPerson(){
        Person person = new Person();
        person.setId(1);
        person.setName("tom");
        person.setAge(12);
        //序列化,将对象转为字符串
        redisTemplate.opsForValue().set("person",person);
    }
    @GetMapping("/getPerson")
    public Person getPerson(){
        Person person = (Person) redisTemplate.opsForValue().get("person");
        return person;
    }

4.1、解决redis存储序列化乱码问题 

发现存储在redis中的数据乱码,不可视

 因为RedisTemplate使用的是默认序列化机制,为了方便其他系统交互应使用JOSN数据交互

解决代码如下:

@Configuration
public class AppRedisConfig {
    @Bean
    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //把对象转为json字符串的序列化
        redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
}

4.2、redis客户端使用jedis

 RedisTemplate底层默认使用lettuce

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

 

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

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

相关文章

【考试】2023年5月软件设计师考试感受

前言❤️ 由于考试地点距离住的地方很远&#xff0c;一个南面一个北面&#xff0c;所以BZ选择了提前一天去到考试地点附近&#xff0c;住在考点附近。吃了晚饭后。到住的地方大概9点多&#xff0c;洗漱完&#xff0c;10点左右开始考前过知识点&#xff0c;复习到凌晨3点左右。…

改进的粒子滤波算法及其应用研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【博客660】prometheus默认5min的lookback机制带来查询的影响

prometheus默认5min的lookback机制带来查询的影响 1、prometheus staleness机制 我发过的&#xff1a;【博客616】prometheus staleness对PromQL查询的影响 官方staleness解析 相关文章&#xff1a;do-prometheus-metrics-have-some-sort-of-freshness-lifetime 相关issue…

全面解析数据治理

摘要 数据治理并不是一种简单的操作行为&#xff0c;而是对数据资产管理行使权力和控制的活动集合&#xff0c;是一种管理和保护数据的方法&#xff0c;是确保准确性、完整性、安全性、可靠性和一致性的关键。 通过数据治理&#xff0c;企业可以更好地掌握现有数据&#xff0…

C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

文章目录 前言&#x1f31f;一、为什么存在动态内存分配&#x1f31f;二、动态内存函数的介绍&#x1f30f;2.1.malloc函数free函数&#x1f30f;2.2.calloc函数free函数&#x1f30f;2.3.realloc函数 &#x1f31f;三、常见的动态内存错误&#x1f30f;3.1.对NULL指针的解引用…

SQL(--修改中--)

目录 一、基本介绍 二、常用函数 集合函数 字符串函数 MYSQL的日期和时间函数 SQL重要的内建日期函数 MYSQL重要的内建日期函数 条件判断函数 三、操作 单表查询 多表查询 使用正则表达式查询 添加&#xff1a; 修改&#xff1a; 删除&#xff1a; 四、…

Linux系统实现虚拟内存教程

Linux系统实现虚拟内存有两种方法&#xff1a;交换分区&#xff08;swap分区&#xff09;和交换文件&#xff0c; 一、交换文件 查看内存&#xff1a;free -m , -m是显示单位为MB&#xff0c;-g单位GB free -g 创建一个文件&#xff1a;touch命令用于修改…

【2023电工杯】A题 电采暖负荷参与电力系统功率调节的技术经济分析 30页论文及python代码

【2023电工杯】A题 电采暖负荷参与电力系统功率调节的技术经济分析 30页论文及python代码 1 题目 A题:电采暖负荷参与电力系统功率调节的技术经济分析 建设以新能源为主体的新型电力系统是应对全球气候变化挑战的重要举措。高比例新能源接入导致电力系统调节能力稀缺&#x…

电厂人员定位管理系统,厂区人员及车辆轨迹可循

随着科技的不断发展&#xff0c;室内定位技术已经逐渐成为电厂管理中不可或缺的一部分。在传统的变电站管理中&#xff0c;由于缺乏有效的定位技术&#xff0c;很难对设备、人员和物资进行精确的管理&#xff0c;导致了效率低下、成本高昂的问题。而现在&#xff0c;通过引入室…

企业必须知道:数字化官网已成为新发展格局

​如今我们生活在一个数据驱动发展的时代&#xff0c;不能顺应时代发展进步的企业就会落后和淘汰。一个新技术时代应运而生&#xff0c;一个数据主导的数字企业时代也必将应声而至。 社交媒体、移动设备、物联网和大数据引发的数字化趋势不仅改变了人们的生活方式而且要求企业…

工厂模式(四)

过气的&#xff0c;终究是过气了 上一章简单介绍了单例模式(三), 如果没有看过,请观看上一章 一. 工厂模式 引用 菜鸟教程里面的单例模式介绍: https://www.runoob.com/design-pattern/factory-pattern.html 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常…

输电线路可视化监拍装置硬件解决方案

老旧输电线路可视化监控装置 随着我国人口的增长&#xff0c;电力设施的规模也变得越发庞大&#xff0c;人工运检的负担也越来越沉重&#xff0c;而且巡检的时效性也是痛点&#xff0c;于是电网提出智慧可视化管理通道运检的方案&#xff0c;线路在线监测装置成为其基础&#x…

前端开发环境部署问题(高级程序员必备)

很多开发者到了一家新公司&#xff0c;公司发了一台新电脑&#xff0c;对环境安装比较困惑。今天带大家还原&#xff0c;拿到公司电脑&#xff0c;如何安装你需要的各种环境。 一、node安装 官网下载地址&#xff1a; http://nodejs.cn/download/ 根据自己需要下载对应的版…

电脑多久重装一次系统比较好

在长时间使用电脑后&#xff0c;一些用户可能会考虑重装系统来提升性能和稳定性。然而&#xff0c;电脑重装系统的频率是一个有争议的问题。本文将探讨电脑重装系统的最佳频率&#xff0c;以帮助您做出明智的决策。 工具/原料&#xff1a; 系统版本&#xff1a;win7旗舰版 品…

如何使用Leangoo领歌敏捷工具管理Sprint Backlog

什么是Sprint Backlog&#xff1f; Sprint Backlog是Scrum的主要工件之一。在Scrum中&#xff0c;团队按照迭代的方式工作&#xff0c;每个迭代称为一个Sprint。在Sprint开始之前&#xff0c;PO会准备好产品Backlog&#xff0c;准备好的产品Backlog应该是经过梳理、估算和优先…

编译原理期末速成-自上而下分析、消除文法的左递归问题

文章目录 自上而下分析面临的问题文法左递归问题回溯问题 构造不带回溯的自上而下分析算法消除文法的左递归 自上而下分析 自上而下就是从文法的开始符号出发&#xff0c;向下推导&#xff0c;推出句子。 面临的问题 文法左递归问题 左递归在语法分析过程中可能会导致无限循环…

测试员,自己都不上心,就不要抱怨别人对你冷眼旁观

昨日表哥恳请帮他的学生投递一下开发岗的简历&#xff0c;举手之劳&#xff0c;这忙必须得帮。但当发来学生的简历后&#xff0c;我吐槽了“这简历平平无奇&#xff0c;没有任何亮点&#xff0c;如何令人另眼相看&#xff1f;”表哥说&#xff0c;学生经历不多&#xff0c;总不…

Echarts 显示指定区域内容 + 不允许控制缩放

需求 在开发中&#xff0c;遇到如下一个需求&#xff0c;要展示指定区域的图形&#xff0c;并控制其不允许缩放 分析 第一想到的就是控件 dataZoom 中设置指定展示的区域&#xff0c;总结如下 解决 示例 源码 option: {xAxis: {type: "category",data: ["A…

医疗设备都在用哪些晶振?

医疗设备是指用于医疗诊断、治疗、监测等方面的各种设备。随着科技的不断发展&#xff0c;医疗设备的功能不断增强&#xff0c;精度和稳定性也得到了大幅提升。在这些医疗设备中&#xff0c;晶振是非常重要的元件之一。本文将介绍医疗设备中常用的晶振类型及其特点。 一、晶振…

Apache Kafka学习

目录 一、简介 1.概念&#xff1a; 2.kafka四大API&#xff1a; 3.Kafka消费模式 4.Kafka的基础架构 5.kafka文件存储方式 二、特性 三、优点 1.解耦 2.异步处理 3.流量削峰 4.数据持久化 5.顺序保证 6.可恢复性 四、名词解释 五、QA Q:如何保证数据高可靠、不…