springboot 与 Redis整合

news2025/1/23 3:26:07

SpringBoot 操作数据:Spring-data jpa jdbc mongodb redis!
SpringData 也是和SpringBoot 齐名的项目!
说明:在SpringBoot2.X 之后,原来使用的jedis被替换成了lettuce
jedis: 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool 连接池,更新BIO模式
lettuce: 采用netty ,实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,更想NIO模式

整合步骤

引入依赖

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

在这里插入图片描述

 @Bean
    @ConditionalOnMissingBean(
        name = {"redisTemplate"}
    )  
    我们可以自定义RedisTemplate
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
    // 使用默认的RedisTemplate 没有过多的设置,但是我们实际当中一般都需要进行序列化
    //<Object, Object> 需要强转 <String, Object>
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean
    // 由于String类型是Redis经常使用的类型所以这个地方单独写了一个StringRedisTemplate 
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

配置相关信息

在这里插入图片描述
根据实际中进行配置既可

测试

 */
@RestController
public class HelloController {

    @Resource
    private RedisTemplate redisTemplate;
    @RequestMapping("hello")
    public String hell(){
        redisTemplate.opsForValue().set("javakey","ddd");
        Object javakey = redisTemplate.opsForValue().get("javakey");
        System.out.printf(javakey.toString());
        redisTemplate.opsForValue().set("中文","我也是中文");
        System.out.println(redisTemplate.opsForValue().get("中文").toString());
        return "hello";
    }
}

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

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

相关文章

【Unity3D】UI Toolkit简介

1 前言 UI Toolkit 是一种基于 Web 技术的 GUI 框架&#xff0c;是为了解决 UGUI 效率问题而设计的新一代 UI 系统&#xff08;UGUI 的介绍详见→UGUI概述&#xff09;。与 UGUI 不同&#xff0c;UI Toolkit 没有采用 GameObject 的方式&#xff0c;而是参考了 Web 技术的 XML …

深度学习应用-WeNet语音识别实战01

概括 本文对WeNet声音识别网络的Python API上介绍的Non-Streaming Usage和 Streaming-Usage分别做了测试&#xff0c;两者本质相同。API对应采样的声音帧率、声道都做了限制。效果还可以&#xff0c;但是部分吐字不清晰、有歧义的地方仍然不能识别清晰。 项目地址&#xff1a; …

内部类总结

内部类 1、内部类介绍&#xff1a; 外 2、成员内部类&#xff1a; 3、静态内部类 4、局部内部类&#xff1a; 5、匿名内部类&#xff1a;

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定&#xff0c;对于已经建立的连接&#xff0c;网络双方要进行四次握手才能成功断开连接&#xff0c;如果缺少了其中某个步骤&#xff0c;将会使连接处于假死状态&#xff0c;连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…

使用 Hue 玩转 Amazon EMR(SparkSQL, Phoenix) 和 Amazon Redshift

现状 Apache Hue 是一个基于 Web 的交互式 SQL 助手&#xff0c;通过它可以帮助大数据从业人员&#xff08;数仓工程师&#xff0c;数据分析师等&#xff09;与数据仓库进行 SQL 交互。在 Amazon EMR 集群启动时&#xff0c;通过勾选 Hue 进行安装。在 Hue 启用以后&#xff0…

Scratch 画画的技巧

前言 美术是一种艺术&#xff0c;且不局限于纸张&#xff0c;就像电脑绘图也属于美术。我至今已有三年多的画龄&#xff0c;经验丰富&#xff0c;尤其擅长在scratch造型编辑器上画矢量图。今天给大家分享一些实用的技巧。 1.讲解 用橡皮工具给一个圆擦出“橡皮洞” 橡皮工具&a…

2511. 最多可以摧毁的敌人城堡数目

文章目录 Tag题目来源题目解读解题思路复杂度分析写在最后 Tag 【数组】 题目来源 2511. 最多可以摧毁的敌人城堡数目 题目解读 在数组 forts 中&#xff0c;forts[i] 有三种数值&#xff1a; -1&#xff1a; 表示第 i 个位置没有城堡&#xff0c;是空地&#xff1b;0&…

【计算机知识】Base64 编码说明

一、理论 Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法&#xff0c;由于 2^664&#xff0c;所以每 6 个比特为一个单元&#xff0c;对应某个可打印字符。 Base64 常用于在通常处理文本数据的场合&#xff0c;表示、传输、存储一些二进制数据&#xff0c;包括…

程序员自由创业周记#2:前期准备

感恩 上次公开了创业的决定后&#xff0c;得到了很多亲朋好友和陌生朋友的鼓励或支持&#xff0c;以不同的形式&#xff0c;感动之情溢于言表。这些都会记在心里&#xff0c;大恩不言谢~ 创业方向 笔者是一名资质平平的iOS开发程序猿&#xff0c;创业项目也就是开发App卖&am…

图的深度优先与广度优先遍历

上篇博客介绍了图的概念与图的存储(邻接矩阵、邻接表)&#xff1a; 接下来就是介绍图的遍历。 图的遍历 给定一个图G和其中任意一个顶点v0&#xff0c;从v0出发&#xff0c;沿着途中各边访问图中的所有顶点&#xff0c;且每个顶点仅被遍历一次。"遍历"即对结点进行…

读SQL学习指南(第3版)笔记09_条件逻辑与事务

1. 条件逻辑 1.1. SQL逻辑根据特定列或表达式转向不同的分支来处理 1.2. 在程序执行时从多个路径中选取一个路径的能力 1.3. case表达式 1.3.1. 所有的主流数据库服务器都提供了旨在模拟大多数编程语言中if-then-else 语句的内建函数 1.3.1.1. Oracle的decode()函数 1.3.…

T113-S3-ov5640摄像头调试

目录 前言 一、ov5640模组介绍 1. 图像传感器特性 2. 接口和控制 3. 图像处理能力 4. 应用领域 二、原理图连接 三、设备树配置 四、驱动配置 五、ov5640使用 六、异常记录 总结 前言 摄像头模块是嵌入式系统中常见的外设&#xff0c;用于捕获图像和视频。在本篇文章…

一不留神就掉坑

乘除顺序问题 在据卡特兰数[1]公式,解决leetcode-96 不同的二叉搜索树[2]时,遇到一个非常诡异的问题, package mainimport "fmt"func main() { for i : 0; i < 40; i { fmt.Printf("第%d个卡特兰数为:%d\n", i, numTrees(i)) }}func numTrees(n int) i…

【超详细~KVM】KVM概述、安装及简单操作-------从小白到大神之路之学习运维第91天

第四阶段提升 时 间&#xff1a;2023年8月30日 参加人&#xff1a;全班人员 内 容&#xff1a; KVM概述、安装及简单操作 目录 一、KVM 概述 二、KVM工作原理 三、KVM应用场景 四、centos7 下安装部署 五、新建虚拟机步骤 1、创建存储池并创建存储卷 2、点击号创建…

MPI之通信模式(标准,缓存,同步,就绪)

MPI缓冲区 由MPI自行维护的一块内存区域&#xff0c;也可由用户(MPI_Bsend)自行维护&#xff1b;发送方 维护一块发送缓冲区&#xff1b; 接收方 维护一块接收缓冲区。 数据收发过程&#xff1a; 当发送端将数据拷贝到自身的数据缓冲区后(注意这里是拷贝&#xff0c;即数据到…

Redis——认识Redis

简单介绍 Redis诞生于2009年&#xff0c;全称是Remote Dictionary Server&#xff0c;远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 特征 键值&#xff08;Key-value&#xff09;型&#xff0c;value支持多种不同数据结构&#xff0c;功能丰富单线程&…

多线程专栏------多线程的实现方式(三)

目录 1、使用线程池1.1、什么是线程池1.2、使用线程池的优点1.3、线程池的核心工作流程1.3、线程池的五种状态生命周期1.3.1、RUNNING1.3.2、SHUTDOWN1.3.3、STOP1.3.4、TIDYING1.3.5、TERMINATED 1.4、创建线程池的方式1.4.1、通过 ThreadPoolExecutor 创建1.4.1.1、线程池的核…

类的静态成员变量 static member

C自学精简教程 目录(必读) 类的静态成员 static member 变量全局只有一份副本&#xff0c;不会随着类对象的创建而产生副本。 static 静态成员 在类的成员变量前面增加static关键字&#xff0c;表示这个成员变量是类的静态成员变量。 #include <iostream> using name…

kaggle赛后总结

1. 宽表 2.缺失值的处理方法 最简单粗暴的就是删除&#xff0c;这种情况是凡是有缺失值行数很少。均值替代。缺失值的行数比较多一点儿的时候&#xff0c;直接删除会影响样本数量&#xff0c;那就均值替代&#xff0c;或者中位数替代等方法。还有复杂的方法&#xff0c;把有缺…

NMS(非极大值抑制)的 Python 实现

文章目录 1. NMS的步骤2. Python代码 非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;NMS&#xff09;是一种在目标检测中常用的技术。 NMS的目的是消除重叠区域中冗余的边界框&#xff0c;并选择最具代表性的目标作为最终结果。通过调整重叠阈值&#xff0c;可…