Redis 系列-- SpringBoot中redisTemplate 的操作(一)

2023-11-17

SpringBoot中 集成 redisTemplate 对 Redis 的操作(一)

在Java 操作redis 时,有很多工具,redis 官网中,就有很多操作,

目前主流开发框架SpringBoot 中,当然也有集成好的操作redis的工具–redisTemplate,下面就来说一说它的基本操作。

依赖包
 <dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
redisTemplate 序列化规则

Spring Data JPA 提供的序列化 Serializer:

1、GenericToStringSerializer

2、Jackson2JsonRedisSerializer

3、JacksonJsonRedisSerializer

4、JdkSerializationRedisSerializer

5、OxmSerializer

6、StringRedisSerializer

我们通过操作

User user = new User(1, "su", new Date());
redisTemplate.opsForValue().set("name","su");
redisTemplate.opsForValue().set("user",user);

查看 redis 可以发现

redisTemplate 默认的是 JdkSerializationRedisSerializer 序列化方法。

如果说 我们想以json 的方法进行 序列化 可以自定义redisTemplate

@Configuration
public class RedisTemplateConfig {

	[@Bean](https://my.oschina.net/bean)
	public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
		RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
		redisTemplate.setConnectionFactory(redisConnectionFactory);
		//定义key 序列化 方式
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		//定义value 序列化 方式
		redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
		return redisTemplate;
	}
}

操作 可以发现

String 类型的操作

1⃣️ 添加数据

 User user = new User(1, "su", new Date());
 redisTemplate.opsForValue().set("name","su");
 redisTemplate.opsForValue().set("user",user);

2⃣️ 添加数据,并设置过期时间

redisTemplate.opsForValue().set("age",18,10000, TimeUnit.MILLISECONDS);

3⃣️ 批量添加数据

HashMap<Object, Object> map = new HashMap<>();
map.put("name", "susu");
map.put("age", 18);
map.put("address", "shanghai");
redisTemplate.opsForValue().multiSet(map);

4⃣️ 原子操作数据

    Long num = (Long) redisTemplate.opsForValue().getAndSet("num", 1);

5⃣️ 追加数据

    Integer num = redisTemplate.opsForValue().append("name", "susu");

6⃣️ 根据key 获取数据

    User user = (User) redisTemplate.opsForValue().get("user");

7⃣️ 批量获取数据

    List<Object> list = new ArrayList<>();
    list.add("name");
    list.add("address");
    list.add("user");
    List listResult = redisTemplate.opsForValue().multiGet(list);

8⃣️ 自增运算 并设置自增步长 (默认是1)

    Long num = redisTemplate.opsForValue().increment("num", 2);

9⃣️ 自减运算,并设置步长 (默认是1)

    redisTemplate.opsForValue().decrement("num");

OK,redisTemplate 的操作(一)先说到这里,请继续关注Redis 系列

想和博主交流,欢迎关注博主公众号
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis 系列-- SpringBoot中redisTemplate 的操作(一) 的相关文章

  • Java - 如何将特殊字符放入字符串中

    Java 似乎有很好的字符串处理能力 尽管如此 我还是遇到了最简单的问题 我需要动态字符串 它们在运行时更改 因此字符串类型不是一个好的选择 因为它们是不可变的 所以我使用字符数组 设置起来有点痛苦 但至少它们是可以修改的 我想创建一个字符
  • JavaFX 图像未在舞台中显示

    我尝试了很多次 尝试了很多方法 但都无法让自己的形象在舞台上如我所愿 我认为这可能与java寻找资源的路径有关 但我不确定 因为我刚刚开始使用视觉库 在本例中为JavaFX 这是我的目录结构 MyProject assets img myI
  • jvm 次要版本与编译器次要版本

    当运行使用具有相同主要版本但次要版本高于 JVM 的 JDK 编译的类时 JVM 会抛出异常吗 JDK 版本并不重要 类文件格式版本 http blogs oracle com darcy entry source target class
  • Google App Engine with Java - 运行 javac.exe 编译器时出错

    在 Windows XP 上 刚刚下载并解压谷歌应用程序引擎java sdk to C Program Files appengine java sdk 我已经安装了jdk C Program Files Java jdk1 6 0 20
  • 在哪里可以获得有关 Java FitNesse 和 Slim 的一些教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • Intellij 中的 Google OR-Tools:UnsatisfiedLinkError

    我正在建立一个应该使用 Google OR Tools 的 java 框架 下面的代码编译成功 但在运行时抛出异常 Exception in thread main java lang UnsatisfiedLinkError com go
  • 发生错误。请参阅日志文件 - eclipse juno

    每当我启动 Eclipse Juno 时 都会出现错误 发生错误 请查看日志文件 C Program Files eclipse configuration 1362989254411 log 有的网站说卸载jdk重新安装 我这样做了 但没
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • 如何在Java媒体框架中学习.wav持续时间?

    我正在尝试使用 java 媒体框架将 mov 文件与 wav 文件合并 因此我需要知道它们的持续时间 我怎样才能做到这一点 任何想法 将不胜感激 您可以使用以下方式了解声音文件的持续时间 即 VitalyVal 的第二种方式 import
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 春季 CORS。在允许的来源中添加模式

    查看CORS的弹簧指南 以下代码启用所有允许的来源 public class MyWebMVCConfigurer extends WebMvcConfigurerAdapter Override public void addCorsMa
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne

随机推荐

  • Python方便又强大的日志记录器——loguru

    Python方便又强大的日志记录器 loguru Loguru是一个旨在使Python日志记录变得愉快的库 该库通过添加一系列有用的功能来解决标准记录器的警告 从而减少Python日志记录的痛苦 日志记录对每个应用程序都是基本的 它简化了调
  • rosserial_arduino

    rosserial arduino 一级目录 二级目录 三级目录 wiki tutorials 1 安装arduino IDE 2 Installing the Software 2 1 Installing on the ROS work
  • linux charg修改目录,Thinkpad在GUN/linux(ubuntu)下修改电池充电阈值

    详见 http www thinkwiki org wiki Tp smapi 安装tp smapi aptitude install tp smapi dkms modprobe tp smapi 更改充电阈值 设置开始充电阈值 如从 6
  • 02

    1 克隆镜像 前提 centos 7 选择 管理 gt 克隆 选择 下一步 选择 虚拟机中的当前状态 选择 创建完整克隆 设置 虚拟机名称 和 位置 克隆完成界面 2 导入镜像 打开虚拟机 选择对应的克隆文件 导入后的结果 3 网络设置 3
  • 铨顺宏RFID:根据UWB技术性的矿山开采人员精准定位系统

    计划方案环境及总体目标 伴随着智能技术的持续发展趋势 矿山开采生产模式不断创新 翠绿色 绿色生态 智能化慢慢变成煤业的追求完美 煤业智能化系统 智能化针对矿山开采而言十分关键 不但可以产生生产量的提升 还能够协助减少资金投入和产品成本 提高
  • 科技云报道:震惊!4K、8K画质背后,竟然少不了AI的助力

    科技云报道原创 对于视频的画质 我现在最低只能够接受720P 最好是1080p 早五年前 身边就已经有人提出了这样的要求 随着科技的进步 我们进入了一个视频内容快速增长的时代 从社交媒体到在线教育 从直播购物到虚拟会议 视频正逐渐成为主流的
  • Jiu Yuan Wants to Eat【2018焦作网络赛】【树链剖分】

    题目链接 树链剖分学习笔记 可以看这里 这道题还真挺好的 以前不会做 现在想了发现 学过树链剖分之后 剩下的部分就是处理去反那块比较的不容易些了 但是想了一下午 现在还是给我敲出来了 我们主要难处理的就是关于求反 那么怎么处理求反 一开始读
  • antd-select下拉框如何同时获取所选值ID和名字属性

    其中传过去的e为 从antd官网可以看到select组件的onchange属性传参 第一个参数为value 第二个参数可为所选中的那一项的所有信息 其中的props属性内有一个children属性 即存储了所选项的名称
  • JWT快速入门及所需依赖

    目录 1 JWT 1 1什么是JWT 1 2JWT的构成 jwt的头部 payload signature 1 3JWT快速入门案例 2Jwt认证 微服务 2 1微服务下统一权限认证 2 2应用认证 3 无状态的JWT令牌如何实现续签功能
  • 蓝桥杯2022年第十三届省赛真题-最优清零方案--java语言

    题目链接 https www dotcpp com oj problem2689 html 一开始没仔细看题目 以为是自然连续数 搞得我还发了篇提问 怪尴尬的 https ask csdn net questions 7913935 spm
  • MongoDB、Elasticsearch分组统计性能比较

    环境参数 CentOS 7 6 虚拟机 4核 8GB Elasticsearch 5 6 16 MongoDB 5 0 9 数据结构 userId rkyao searchId 6e1c409ed7484a6a8a795e750bef9e2
  • 空间向量及值插值相关函数

    1 两个向量之间插值 float3 slerpBetweenVector float3 from float3 to float delta quatf model start quatf fromDirectedRotation norm
  • 算法分析与设计编程题 回溯法

    装载问题 题目描述 解题代码 递归回溯 goods i 表示货物i的重量 c1 c2分别表示货船1和货船2的载重量 vector
  • 关于项目报错Error:Cannot build Artifact :war exploded because it is included into a circular depency

    报个这个错的意思 你大概在编译项目的时候 你构建项目的时候 你点的是build project 而不是选择rebuild project 导致重复的依赖 这时候找到项目目录中的 idea目录 在进入artifacts文件目录 发现里面有两个
  • siammask_e 安装和使用

    基于siammask e的成绩 验证下demo效果 https paperswithcode com sota visual object tracking on vot2019 p fast visual object tracking
  • 值得拥有的5 款功能强大的免费 PDF 编辑器

    编辑 PDF 文件可能是一个真正的挑战 尤其是当您找不到合适的工具时 此外 如今大多数工具都需要大量订阅 这意味着您必须在口袋里烧一个洞才能对 PDF 文件进行更改 但是等等 这是一个转折点 有一些免费使用的 PDF 编辑器可以帮助您毫无后
  • 微信好友大数据分析

    微信好友数据分析 这里很多工作量 参考了该篇博客 在此致谢 传送门如下 一件有趣的事 我用 Python 爬了爬自己的微信朋友 不过原博客代码不是特别全 有些没有放出来 而且代码都是图片截图 比较模糊 所以我来整理一下我的代码 贴上来 同时
  • 【订阅消息】微信小程序发送服务通知

    前言 由于上次的公众号测试消息推送次数太多被官方认为是推销或者是广告之类的 被微信官方给禁了 然后偶然在一次吃饭的时候扫码点餐下单之后有个弹窗勾选订单完成通知 勾选之后就餐之后就会发送一个服务通知告诉您的订单已完成 其实基于这种消息提醒也是
  • keil5选择ST-Link Debugger时候setting点击不了问题

    分享一个自己用keil5的ST Link Debugger时候遇到的一个问题 就是在我选择用ST Link来进行调试时候 发现setting选择不了 如图所示 弹出来了一个提示我 说无法加载驱动程序 少了一个ST LINKIII KEIL
  • Redis 系列-- SpringBoot中redisTemplate 的操作(一)

    SpringBoot中 集成 redisTemplate 对 Redis 的操作 一 在Java 操作redis 时 有很多工具 redis 官网中 就有很多操作 目前主流开发框架SpringBoot 中 当然也有集成好的操作redis的工