当前位置: 首页 > news >正文

【从零开始学习Redis | 第三篇】在Java中操作Redis

前言:

        本文算是一期番外,介绍一下如何在Java中使用Reids ,而其实基于Java我们有很多的开源框架可以用来操作redis,而我们今天选择介绍的是其中比较常用的一款:Spring Data Redis57e1217aae4e4dcc8642ab40a3a0fb5c.png

目录

前言:

Spring Data Redis的简单介绍:

使用 Spring Data Redis 的方式:

RedisTemplate操作常用数据类型:

字符串类:

哈希类:

总结:


 

 

Spring Data Redis的简单介绍:

        Spring Data Redis 是 Spring Framework 提供的一个用于简化 Redis 数据库的访问和操作的模块。它为开发人员提供了一种简洁而强大的方式来与 Redis 进行交互,无需编写大量的样板代码。

Spring Data Redis 提供了以下核心功能:

  1. RedisTemplate:该类是 Spring Data Redis 的主要接口之一,它提供了访问 Redis 的基本操作方法,如读取、写入、删除数据以及对数据进行序列化和反序列化等。RedisTemplate 可以处理多种类型的数据,如字符串、哈希、列表、集合和有序集合等。

  2. RedisRepository:该接口是 Spring Data Redis 的另一个重要组件,它提供了一组通用的 CRUD 操作和查询方法,让开发人员能够轻松地进行数据访问和操作。开发人员只需定义一个接口,继承自 RedisRepository,并按照约定命名方法,Spring Data Redis 就会为其生成相应的实现类。

  3. 注解支持:Spring Data Redis 提供了一系列注解,如 @RedisHash、@Indexed、@Expire 和 @EnableRedisRepositories 等,用于简化对象到 Redis 数据的映射以及查询操作的配置。

  4. 事务支持:Spring Data Redis 集成了 Spring Framework 的事务管理机制,使得开发人员可以通过声明式事务的方式来控制 Redis 数据库的事务操作。

  5. 缓存支持:Spring Data Redis 与 Spring Framework 的缓存机制无缝集成,可以将 Redis 作为缓存存储介质,并提供了简单的注解配置方式注解式的缓存配置。

Spring Data Redis 大大简化了与 Redis 数据库的交互过程,可以减少样板代码的编写和维护成本,提高开发效率。同时,Spring Data Redis 还提供了丰富的特性和灵活的扩展机制,可以根据实际需求进行定制和扩展。无论是在简单的键值存储场景下,还是在复杂的数据操作和查询场景下,Spring Data Redis 都是一个强大的工具,可以帮助开发人员更轻松地使用 Redis。

使用 Spring Data Redis 的方式:

1.导入Spring Data Redis的 maven依赖:

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

2.配置redis数据源:

  spring:redis:host: 地址port:端口号password:密码

3.编写配置类,创建RedisTemplate对象:

@Configuration
@Slf4j
public class RedisConfguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板对象....");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);//设置key的序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;}
}

4.使用RedisTemplate 对象操作Redis

 

RedisTemplate操作常用数据类型:

字符串类:

  1. 设置字符串值:

    redisTemplate.opsForValue().set("myKey", "myValue");
    
  2. 获取字符串值:

    Object value = redisTemplate.opsForValue().get("myKey");
    
  3. 设置字符串值并指定过期时间(单位:秒):

    redisTemplate.opsForValue().set("myKey", "myValue", 60);
    
  4. 判断键是否存在:

    boolean exists = redisTemplate.hasKey("myKey");
    
  5. 删除键:

    redisTemplate.delete("myKey");
    
  6. 原子递增:

    Long incrementedValue = redisTemplate.opsForValue().increment(

哈希类:

  1. 设置哈希字段值:

    redisTemplate.opsForHash().put("myHash", "field", "value");
    
  2. 获取哈希字段值:

    Object value = redisTemplate.opsForHash().get("myHash", "field");
    
  3. 获取所有哈希字段及值:

    Map<Object, Object> hash = redisTemplate.opsForHash().entries("myHash");
    
  4. 删除哈希字段:

    redisTemplate.opsForHash().delete("myHash", "field");

在这里我们就简单的先介绍这两个,其他的类型其实使用方法与我们介绍的这两种大同小异。

总结:

在Java中操作 Redis 是通过 Spring Data Redis 提供的 RedisTemplate 或 StringRedisTemplate 这两个模板类来实现的。它们提供了丰富的方法来操作 Redis 中的不同数据类型。

通过 RedisTemplate,我们可以方便地进行键值对数据的操作,包括字符串类型、哈希类型、列表类型、集合类型和有序集合类型等。它提供了 set、get、delete 等基本方法来操作数据,并且支持设置过期时间、原子递增等高级功能。

针对字符串类型的操作,可以使用 StringRedisTemplate,它专注于处理字符串数据,提供了更加简洁的 API 来设置和获取字符串值,并且支持设置过期时间、判断键是否存在等功能。

需要注意的是,RedisTemplate 和 StringRedisTemplate 默认使用不同的序列化方式,StringRedisTemplate 使用 StringRedisSerializer 进行序列化,而 RedisTemplate 使用 JdkSerializationRedisSerializer 进行序列化。根据需求,我们可以自定义序列化方式来适应不同的数据存储和读取需求。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

69e9169c980f43e0aad31ff9ada88a9c.png

 

 

相关文章:

【从零开始学习Redis | 第三篇】在Java中操作Redis

前言&#xff1a; 本文算是一期番外&#xff0c;介绍一下如何在Java中使用Reids &#xff0c;而其实基于Java我们有很多的开源框架可以用来操作redis&#xff0c;而我们今天选择介绍的是其中比较常用的一款&#xff1a;Spring Data Redis 目录 前言&#xff1a; Spring Data…...

vim、gcc/g++、make/Makefile、yum、gdb

vim、gcc/g、make/Makefile、yum、gdb 一、Linux编辑器vim1、简介2、三种模式的概念&#xff08;1&#xff09;正常/普通/命令模式(Normal mode)&#xff08;2&#xff09;插入模式(Insert mode)&#xff08;3&#xff09;末行/底行模式(last line mode) 3、三种模式的切换4、正…...

2022最新版-李宏毅机器学习深度学习课程-P13 局部最小值与鞍点

一、优化失败的原因 局部最小值&#xff1f;鞍点&#xff1f; 二、数学推导分析 用泰勒公式展开 一项与梯度&#xff08;L的一阶导&#xff09;有关&#xff0c;一项与海赛矩阵&#xff08;L的二阶导&#xff09;有关 海瑟矩阵 VTHV通过海瑟矩阵的性质可以转为判断H是否是正…...

ARM架构的基本知识

ARM两种授权 体系结构授权, 一种硬件规范, 用来约定指令集, 芯片内部体系结构(内存管理, 高速缓存管理), 只约定每一条指令的格式, 行为规范, 参数, 客户根据这个规范自行设计与之兼容的处理器处理IP授权, ARM公司根据某个版本的体系结构设计处理器, 再把处理器设计方案授权给…...

网络安全(黑客技术)——如何高效自学

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…...

云原生场景下高可用架构的最佳实践

作者&#xff1a;刘佳旭&#xff08;花名&#xff1a;佳旭&#xff09;&#xff0c;阿里云容器服务技术专家 引言 随着云原生技术的快速发展以及在企业 IT 领域的深入应用&#xff0c;云原生场景下的高可用架构&#xff0c;对于企业服务的可用性、稳定性、安全性越发重要。通…...

图论-最短路径算法-弗洛伊德算法与迪杰斯特拉算法

弗洛伊德算法&#xff1a; 弗洛伊德算法本质是动态规划&#xff0c;通过添加点进如可选择的点组成的集合的同时更新所有点之间的距离&#xff0c;从而得到每两个点之间的最短距离。 初始化&#xff1a; 创建一个二维数组 dist&#xff0c;其中 dist[i][j] 表示从节点 i 到节点…...

[23] IPDreamer: Appearance-Controllable 3D Object Generation with Image Prompts

pdf Text-to-3D任务中&#xff0c;对3D模型外观的控制不强&#xff0c;本文提出IPDreamer来解决该问题。在NeRF Training阶段&#xff0c;IPDreamer根据文本用ControlNet生成参考图&#xff0c;并将参考图作为Zero 1-to-3的控制条件&#xff0c;用基于Zero 1-to-3的SDS损失生成…...

深入理解React中的useEffect钩子函数

引言&#xff1a; React是一种流行的JavaScript库&#xff0c;它通过组件化和声明式编程的方式简化了前端开发。在React中&#xff0c;一个核心概念是组件的生命周期&#xff0c;其中包含了许多钩子函数&#xff0c;用于管理组件的不同阶段。其中之一就是useEffect钩子函数&…...

数字化时代的财务管理:挑战与机遇

导语&#xff1a;随着数字化技术的不断发展&#xff0c;财务管理正面临着前所未有的挑战和机遇。数字化不仅改变了财务数据的收集、处理和分析方式&#xff0c;还为财务决策提供了更多的依据和方向。本文将探讨数字化时代财务管理的新特点&#xff0c;以及如何利用数字化技术提…...

网络通信协议-HTTP、WebSocket、MQTT的比较与应用

在今天的数字化世界中&#xff0c;各种通信协议起着关键的作用&#xff0c;以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议&#xff0c;它们各自适用于不同的应用场景。本文将比较这三种协议&#xff0c;并探讨它们的主要应用领域。 HTTP&#xff…...

【深度学习】深度学习实验四——循环神经网络(RNN)、dataloader、长短期记忆网络(LSTM)、门控循环单元(GRU)、超参数对比

一、实验内容 实验内容包含要进行什么实验,实验的目的是什么,实验用到的算法及其原理的简单介绍。 1.1 循环神经网络 (1)理解序列数据处理方法,补全面向对象编程中的缺失代码,并使用torch自带数据工具将数据封装为dataloader。 (2)分别采用手动方式以及调用接口方式…...

DB2分区表详解

一、分区表基本概念 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。分区后的表称为分区表。 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时…...

基本地址变换机构

基本地址变换机构&#xff1a;用于实现逻辑地址到物理地址转换的一组硬件机构。 关于页号页表的定义&#xff0c;放个本人的传送门 1.页表寄存器 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。 1.作用 通常会在系统中设置一个页表寄存器&#xff08;PTR&…...

以单颗CMOS摄像头重构三维场景,维悟光子发布单目红外3D成像模组

维悟光子近期发布全新单目红外3D成像模组,现可提供下游用户进行测试导入。通过结合微纳光学元件编码和人工智能算法解码,维悟光子单目红外3D成像模组采用单颗摄像头,通过单帧拍摄,可同时获取像素级配准的3D点云和红外图像信息,可被应用于机器人、生物识别等广阔领域。 市场…...

Jinja2模板注入 | python模板注入特殊属性 / 对象讲解

在进行模板利用的时候需要使用特殊的属性和对象进行利用&#xff0c;这里对这些特殊属性及方法进行讲解 以下实验输出python3版本为 3.10.4&#xff0c; python2版本为 2.7.13 特殊属性 __class__ 类实例上使用&#xff0c;它用于获取该实例对应的类__base__ 用于获取父类__mr…...

一致性公式证明

首先&#xff0c;假设存在两个不同的聚类假设 f 1 f^1 f1和 f 2 f^2 f2&#xff0c;它们在两个视角上的聚类结果分别为 y 1 ∈ { − 1 , 1 } n y^1\in\{-1,1\}^n y1∈{−1,1}n和 y 2 ∈ { − 1 , 1 } n y^2\in\{-1,1\}^n y2∈{−1,1}n。 证明一致性不等式&#xff1a; ​ …...

allegro中shape的一些基本操作(一)——添加和修改shape

添加shape 简单添加shape的方式有3种&#xff0c;如下图所示 点击选择相应的shape模式后可以在option面板中设置相应的shape参数&#xff08;这里不做过多介绍&#xff0c;里面可以设置shape的大小、静态或动态shape等参数&#xff09;&#xff0c;然后再用鼠标在相应的层上添…...

HBuilder创建uniapp默认项目导入uview(胎教)

1&#xff1a;更新HBuilder 建议更新 2&#xff1a;更新插件 我本人在没有更新插件的情况下报错了&#xff0c;找到了**这个大佬**解决问题&#xff0c;所以建议更新插件 先卸载uni-app&#xff08;Vue2&#xff09;编译 再重新安装 uni-app&#xff08;Vue2&#xff09;…...

C语言基础算法复习

003 斐波那契数列问题 #include<stdio.h> int main() {int i,f11,f21,f3,num;printf("%5d %5d",f1,f2);num2;for(i1; i<18; i){f3f1f2;f1f2;f2f3;num;printf("%5d",f3);if(num%40) printf("\n");}return 0; }//#输数斐波那契数列的前20…...

为什么很多人会误解视频代剪辑

为什么很多人会误解视频代剪辑 你是不是也这样想过&#xff1a;自己拍了几十段素材&#xff0c;找个便宜的剪辑师拼一拼、加个滤镜就行&#xff1f;可发出去后播放量寥寥&#xff0c;朋友说“看不出重点”“节奏拖沓”。其实&#xff0c;问题不在素材本身&#xff0c;而在于你低…...

im2col算法实现:从原理到代码的逐行剖析

1. im2col算法原理揭秘 想象你正在整理一副扑克牌&#xff0c;需要把相邻的几张牌快速组合起来。im2col算法的核心思想与此类似——它将图像中相邻的像素区域重新排列成矩阵的列&#xff0c;从而将卷积运算转化为高效的矩阵乘法。这个"image to column"的转换过程&am…...

物联网设备安全:硅基硬件防护方案解析

1. 物联网设备安全现状与挑战在智能家居、工业自动化、医疗监测等领域&#xff0c;物联网设备正以惊人的速度普及。根据IDC的调研数据&#xff0c;超过27%的企业在选择物联网供应商时将安全能力作为首要考量标准。然而现实情况是&#xff0c;大多数物联网设备仍在使用软件层面的…...

网络安全协议验证不求人:手把手教你用VirtualBox导入SPAN虚拟机跑AVISPA

网络安全协议验证实战&#xff1a;VirtualBoxSPAN虚拟机快速搭建AVISPA实验环境 在网络安全研究领域&#xff0c;协议验证是确保通信安全性的关键环节。AVISPA&#xff08;Automated Validation of Internet Security Protocols and Applications&#xff09;作为自动化验证工…...

ARM调试异常与调试状态机制详解

1. ARM调试异常机制深度解析调试异常是ARM处理器调试体系中的核心机制&#xff0c;当处理器在监控调试模式(Monitor debug-mode)下发生特定调试事件时触发。理解这一机制对于嵌入式系统开发至关重要&#xff0c;它直接影响着断点设置、单步调试等基础调试功能的实现效果。1.1 调…...

Pearcleaner技术深度解析:macOS应用清理的架构设计与实现原理

Pearcleaner技术深度解析&#xff1a;macOS应用清理的架构设计与实现原理 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner Pearcleaner是一款面向技术开发者和…...

终极指南:如何使用Gulf of Mexico轻松实现TCP/UDP网络通信

终极指南&#xff1a;如何使用Gulf of Mexico轻松实现TCP/UDP网络通信 【免费下载链接】GulfOfMexico perfect programming language 项目地址: https://gitcode.com/GitHub_Trending/dr/GulfOfMexico Gulf of Mexico&#xff08;原DreamBerd&#xff09;是一种创新的编…...

Taotoken CLI工具一键配置团队开发环境实战指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken CLI工具一键配置团队开发环境实战指南 1. 场景与需求 在团队协作开发中&#xff0c;统一管理大模型调用环境是一个常见且…...

VMware Unlocker:免费解锁VMware的macOS虚拟机支持终极指南

VMware Unlocker&#xff1a;免费解锁VMware的macOS虚拟机支持终极指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想在Windows或Linux电脑上运行macOS虚拟机&#xff0c;却发现VMware根本不提供苹…...

MATLAB仿真实战:手把手绘制LFM信号的模糊函数,看懂“斜刀刃”形状的由来

MATLAB仿真实战&#xff1a;手把手绘制LFM信号的模糊函数&#xff0c;看懂“斜刀刃”形状的由来 雷达信号处理中&#xff0c;模糊函数是理解信号分辨特性的关键工具。对于初学者而言&#xff0c;仅通过数学公式往往难以直观把握其物理意义。本文将通过MATLAB实战&#xff0c;从…...