Java与Redis的集成以及Redis中的项目应用

一、Java连接Redis

Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。

1.1 导入依赖

打开IDEA,进入Java项目,导入pom依赖,代码如下:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version>
</dependency>

1.2 Redis服务器准备

导入依赖后,找到redis.bat双击启动redis(时常忘记文件位置的可以新开快捷方式置于桌面),如下:

1.3 建立连接

在java项目包下,新建一个名为redis的Package用来存放建立链接的java代码,如下:

 在redis包下,新建java类,并添加以下代码,如下:

 public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");
//      测试链接是否成功System.out.println(jedis.ping());}

然后启动Demo1方法,进行测试链接是否成功,效果如下:

 

二、Java操作Redis的常见类型数据存储

在进行存储数据前,我们先需要将Java链接上Redis,参考第一模块,如上。

链接上Redis之后,才可进行数据存储。

2.1 String(字符串)存取值操作

2.1.1 指定存储数据的数据库与存储入库操作

代码与注释如下:

public class Demo2 {public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");//      String的操作jedis.select(1);//指定数据库jedis.set("KISS","Kisship添加数据了");//往指定的数据库中添加数据}
}

效果如下: 

2.1.2 存储数据的修改与查询

添加以下代码:

jedis.set("KISS","Kisship将原有数据修改了");//将原先存储的数据修改
System.out.println(jedis.get("KISS"));//查询

修改效果如下:

查询效果如下:

2.1.3 数据临时存储

在Demo2中加入以下代码:

jedis.setex("time",20,"设置过期时间为20秒");//为"time"键设置过期时间
System.out.println(jedis.ttl("time"));//获取键的剩余生存时间并且打印返回

代码解释:

  • setex 是 Redis 命令的一部分,示例的方法用于设置一个键值对,并为该键设置一个过期时间。
  • ttl 是 Redis 命令的一部分,它用于获取键的剩余生存时间。

效果展示,如下:

还未过期前的效果:

过期后的效果:

2.2 哈希数据结构存取值操作

案例:

  • 创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值。

2.2.1 存值(新增与修改)

1. Jedis存值

新建Demo3,并添加以下代码:

public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");//      哈希数据结构的操作
//      哈希表是 Redis 中的一种数据结构,它允许你在一个键下存储多个字段和与这些字段相关联的值。jedis.select(1);//指定数据库
//      创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值jedis.hset("user","name","Kissship");//姓名,将 "name" 字段设置为 "Kissship"jedis.hset("user","hobby","Play Computer games");//爱好设置jedis.hset("user","age","18");//年龄设置}

效果如下:

2. 通过Map对象存值

以下是具体实现代码与逻辑详解:

Demo3:

Map map = new HashMap();//创建一个名为map的HashMap对象,用于存储键值对数据
map.put("name","鸭翅牙齿");//名字
map.put("hobby","look girls");//爱好
map.put("age","17");//年龄
RedisUtils.setHashMap(jedis,"user",map);//调用自定义的工具类方法setHashMap,并传递三个参数

RedisUtils:

public class RedisUtils {//通过Java中的Map对象进行数据存储public static void setHashMap(Jedis jedis, String Key, Map<String,String> map) {//空值检查//首先检查传入的map对象是否为非空且包含至少一个键值对。如果map为空或不包含键值对,方法不会执行任何操作,直接返回。if (map != null && map.size() > 0) {//遍历Map并存储数据Set<String> keys = map.keySet();//如果map不为空且包含键值对,方法会通过map.keySet()获取所有的键(字段名)。for (String k : keys) {//在循环中,对于每个键k,map.get(k)获取到对应的值(字段值)。jedis.hset(Key,k,map.get(k));//将当前键值对存储到Redis}}}
}

运行后的效果如下:

2.2.2 取值(查询)

1. 获取哈希表中特定字段的值(单个查询)
System.out.println(jedis.hget("user", "hobby"));//从名为"user"的哈希表中获取键为"hobby"的字段的值,并将其打印到控制台
2. 获取整个哈希表的内容(查询所有)
System.out.println(jedis.hgetAll("user"));//获取名为"user"的哈希表中的所有字段和它们的值,然后将它们打印到控制台

代码执行效果如下:

2.2.3 删除

1. 删除特定字段(单个属性删除)
Long hdel = jedis.hdel("user","age");//删除名为"user"的哈希表中的特定字段"age"及其中的值

单个删除代码执行效果如下:

2. 删除哈希表(删除所有)
jedis.del("user");//删除名为"user"的键以及与之相关的哈希表

删除所有代码执行效果如下:

2.3 列表存取值操作

在Java中操作Redis列表(list)进行取值时,通常会使用Redis的lindexlrange命令,这两个命令有不同的逻辑:

  1. 使用lindex命令

    • lindex命令用于获取列表中指定索引位置的元素。索引从0开始,表示列表的第一个元素。
    • 例如,jedis.lindex("mylist", 1)将返回"mylist"列表中索引为1的元素。
    • 如果索引超出了列表的范围(即索引小于0或大于等于列表的长度),lindex会返回null。
  2. 使用lrange命令

    • lrange命令用于获取列表中指定范围的元素。
    • 你可以指定起始索引和结束索引,从而获取这个范围内的元素,包括起始索引和结束索引。
    • 例如,jedis.lrange("mylist", 0, 2)将返回"mylist"列表中的前3个元素,因为索引0表示第一个元素,索引2表示第三个元素。
    • 如果你希望获取整个列表,可以使用jedis.lrange("mylist", 0, -1),其中-1表示列表的最后一个元素。

2.3.1 存值

//将七首音乐歌曲的名称依次添加到名为"music"的列表的左侧,即列表的开头。如果"music"列表之前不存在,它会被创建,然后这些值会被添加到列表中,形成一个包含这些音乐歌曲名称的有序列表。jedis.lpush("music","《可爱女人》","《晴天》","《稻香》","《夜曲》","《东风破》","《红尘客栈》","《黑色毛衣》");

运行代码结果如下:

2.3.2 取值

 //从"music"列表中获取索引为1的元素,并将其打印到控制台System.out.println(jedis.lindex("music", 1));//从名为"music"的列表中获取索引范围从0到5的所有元素System.out.println(jedis.lrange("music", 0, 5));

运行代码结果如下:

三、Redis中的项目应用


最后Java与Redis的集成以及Redis中的项目应用就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

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

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

相关文章

(复刷) 面试题02.07.链表相交

原题链接&#xff1a;面试题02.07.链表相交 思路&#xff1a; 求相交的起始结点&#xff0c;并不是值相交&#xff0c;而是结点相交&#xff0c;那么也就代表判断条件是指针指向的位置相等即可 A、B链表长度可能不一致&#xff0c;假设他们一定有相交的结点 那么需要做的 就是…

王坚院士:云计算与 GPT 的关系,就是电和电动机的关系

无论是行业&#xff0c;还是阿里&#xff0c;都身处巨变时。已经年过六十的王坚院士&#xff0c;重回阿里&#xff0c;重回大众视野&#xff0c;今年以来&#xff0c;在多个场合都能够看到他的身影。 而每一次他的分享&#xff0c;都值得我们细细品味。 以下为王坚院士在 202…

mysql 元数据

1.概述 数据库元数据&#xff08;DatabaseMetaData&#xff09;&#xff1a;是由Connection对象通过getMetaData方法获取而来&#xff0c;主要封装了是对 数据库本身的一些整体综合信息&#xff0c;例如数据库的产品名称&#xff0c;数据库的版本号&#xff0c;数据库的URL&am…

使用OBS Browser+访问华为云OBS存储【Windows】

背景 项目中使用华为云 S3 存储,java 代码中通过华为云 OBS 提供的esdk-obs-java 来访问文件。 但是,通过 JAVA SDK 方式不太方便运维,所以我们需要一款可视化的客户端软件。 华为云 OBS 自身也提供了一款客户端软件,名为 OBS Browser+。 OBS Browser+简介 OBS Browse…

摩托车商家做展示预约小程序的作用

摩托车与电动车是人们短距离出行的主要工具&#xff0c;而其使用寿命一般是3年左右及以上、一家可能有多个&#xff0c;市场人群庞大且复购属性强&#xff0c;所以其经营商家也非常多。 如今互联网深入&#xff0c;在品牌宣传、客户获取、信息承载、营销等方面需要车辆经营商家…

网络取证-Tomcat-简单

题干&#xff1a; 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况&#xff0c;团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动&#xff0c;这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…

若依笔记(四):代码生成器

已知使用MyBatisPlus代码生成器可以自动生成Entity、Mapper、Service、Controller代码&#xff0c;前提是数据库中有数据表&#xff0c;生成pojo类以及对于该数据表的增删改查命令的代码&#xff0c;若依更进一步能选择表后生成代码、预览、下载&#xff0c;同时可以生产前端代…

【equals比较方法 和 内部类】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言对象比较equals方法内部类实例内部类静态内部类总结 前言 对象比较equals方法 三种比较相等方法&#xff1a; 第一种&#xff0c;如果两侧是基本数据类型&…

使用 C# 在Word中插入图表

Word中的图表功能将数据可视化地呈现在文档中。这为展示数据和进行数据分析提供了一种方便且易于使用的工具&#xff0c;使作者能够以直观的方式传达信息。要通过C#代码来实现在Word中绘制图表&#xff0c;可以借助 Spire.Doc for .NET 控件&#xff0c;具体操作参考下文。 目录…

关于GLibC

查看使用的编译器依赖glibc库位置&#xff1a; gcc --print-file-namelibc.a gcc --print-file-namelibc.so

Qt扫盲-QFont理论总结

QFont 理论总结 一、概述二、使用三、字体匹配算法 一、概述 QFont类指定用于绘制文本的时候来描述字体的工具类。QFont可以看作是对系统上一个或多个字体的查询。 当我们创建QFont对象时&#xff0c;我们可以指定希望字体具有的各种属性。Qt将使用具有指定属性的字体&#x…

初学Redis简介以及入门

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…

详解Java经典数据结构——HashMap

Java 的 HashMap 是一个常用的基于哈希表的数据结构&#xff0c;它实现了 Map 接口&#xff0c;可以存储键值对。下面我们进行详细介绍&#xff1a; 基本结构&#xff1a;HashMap 底层是基于哈希表来实现的&#xff0c;每次插入一个键值对时&#xff0c;会先对该键进行 Hash 运…

ARM传输数据以及移位操作

3.2.2 数据传送指令 LDR/STR指令用来在寄存器和内存之间输送数据。如果我们想要在寄存器之间传送数据&#xff0c;则可以使用MOV指令。MOV指令的格式如下。 MOV {cond} {s}Rd, oprand2 MOV {cond} {s}Rd, oprand2 其中&#xff0c;{cond}为条件指令可选项&#xff0c;{s}用来表…

Android Studio创建项目后Gradle(构建)项目很慢问题解决

Android Studio创建项目后Gradle(构建)项目很慢问题解决 在使用Android Studio创建项目时&#xff0c;会自动从网上下载相关依赖。由于是访问国外服务器&#xff0c;会出现构建项目时下载依赖很慢的问题。为了解决该问题&#xff0c;需要在settings.gradle(或者settings.gradl…

Android 交叉编译openssl 、libxml2静态库

openssl: Android下openssl编译和使用&#xff08;一&#xff09;_安卓编译openssl 交叉编译 for arch in armeabi-v7a arm64-v8a-CSDN博客 libxml2: LIBXML2 2.9.11 build for Android_libxml2 android静态库_fredhurui的博客-CSDN博客

EthernetIP主站转EtherCAT协议网关采集电力变压器的 Ethernet IP 数据

怎么通过捷米JM-EIPM-ECT网关把ABB电力变压器的 Ethernet IP 数据&#xff0c;连接到欧姆龙PLC上&#xff0c;通过plc去监控电力设备的数据呢&#xff0c;下面是介绍简单的连接方法&#xff0c;采集Ethernet IP从站数据和EtherCAT协议 1 &#xff0c;捷米JM-EIPM-ECT网关连接Et…

11.3 知识总结(jQuery入门)

一、 jQuery入门 1.1 介绍 jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互&#xff0c;能够极大地简化JavaScript编程。它的宗旨就是&#xff1a;“Write less, do more.“ 1.2 优…

C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日&#xff0c;第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家&#xff0c;共同探讨如何通过数字化转型赋能企业自身成长&#xff0c;实现信息化向数字化的升级转型。 在本次盛会上&#xff0c;纷享销客以其卓越的基本面、…