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

news2024/11/28 11:56:52

一、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.coloradmin.cn/o/1168708.html

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

相关文章

threejs 2. 辅助对象

ArrowHelper 箭头 const arrowHelper new THREE.ArrowHelper(new THREE.Vector3( 1, 2, 0 ).normalize(), // 方向向量必须是单位向量,默认值为(0,0,1)new THREE.Vector3( 0, 0, 0 ), // 起点,默认值为(0,0,0)1, // 长度,默认值为10xffff00, // 颜色,默认值为0xffff00undefine…

JavaSE基础 --- 类与对象

1.类与对象的定义 类是一种抽象的数据类型&#xff0c;它描述了一类对象的行为和状态。例如&#xff0c;我们可以定义一个名为“Dog”的类&#xff0c;它描述了狗这类动物的一般特性&#xff0c;如颜色、品种等状态&#xff0c;以及跑、叫等行为。 对象则是类的实例&#xff0c…

【金TECH频道】企业架构转型组合拳来袭,助力金融机构一臂之力

当前&#xff0c;数字化转型已经成为时代共性课题 在政策和技术的双重指引下 金融机构逐渐走向差异化竞争的格局 面对转型阵痛 以契合、明晰的战略规划及 企业架构调整来辅助业务变革 成为助力企业数字化转型的有效路径 金融机构也纷纷开始探索 企业架构转型的新思路、…

SQL Server2000mdf升级SQL Server2005数据库还原

SQL Server2000数据库还原sqlserver 2000mdf升级 sqlserver 2008数据库还原SQL Server2005数据库脚本 sqlserver数据库低版本升级成高版本 sqlserver数据库版本升级 数据库版本还原 如果本机安装了sqlserver2012或者sqlserver2019等高版本 怎么样才能运行sqlserver2000的数据库…

2003-2022年地级市-财政收支明细数据(企业、个人所得税、科学、教育、医疗等)

2003-2022年地级市-财政收支明细数据&#xff08;企业、个人所得税、科学、教育、医疗等&#xff09; 1、时间&#xff1a;2003-2022年 2、指标&#xff1a;行政区划代码、年份、地区、一般公共预算收入、一般公共预算-税收收入、一般公共预算-税收收入-增值税收入、一般公共…

软件测试面试题及答案2024

1、你们的缺陷等级如何划分的&#xff1f;☆☆☆☆☆ 我们的缺陷一般分为四个等级&#xff0c;致命级&#xff0c;严重级&#xff0c;一般级和轻微级。致命级指能够导致软件程序无法使用的缺陷&#xff0c;比如宕机&#xff0c;崩溃&#xff0c;手机APP的闪退&#xff0c;数据…

【AUTOSAR CANTP】深入理解CAN传输层:N-SDU数据接收与缓冲处理

1. 前言 CanTp是PDU路由器和CAN接口模块之间的那个模块。它的主要作用就是对超过8字节或者CAN FD情况下超过64字节的CAN I-PDU进行分段和重组啦。PDU路由器会把AUTOSAR COM和DCM I-PDU放到不同的通信协议上去,具体是用哪个网络系统类型(比如CAN、LIN和FlexRay)来路由,就看…

python图像处理 ——几种图像增强技术

图像处理 ——几种图像增强技术 前言一、几种图像增强技术1.直方图均衡化2.直方图适应均衡化3.灰度变换4.同态滤波5.对比拉伸6.对数变换7.幂律变换&#xff08;伽马变换&#xff09; 前言 图像增强是指通过各种算法和技术&#xff0c;改善或提高数字图像的质量、清晰度、对比度…

半阵法单脉冲测角

半阵法单脉冲测角 单脉冲测角的类型确知波束形成导向矢量半阵测向原理半阵测向仿真 单脉冲测角的类型 传统的单脉冲测向方法主要有3种&#xff0c;分别是半阵法、加权法和和差比幅法。在了解单脉冲测向之前&#xff0c;首先要知道确知波束形成&#xff0c;确知波束形成就是设计…

python GUI tkinter实战

筛选出列长度不为指定长度的列 from os import path from tkinter import (BOTH, BROWSE, EXTENDED, INSERT, Button, Frame, Label,Text, Tk, filedialog, mainloop, messagebox) import matplotlib.pyplot as plt import pandas as pd from PIL import Image, ImageTk from …

P3398 仓鼠找 sugar

Portal. LCA。 询问树上两条路径是否有交点。 画图发现无非两种情况&#xff1a; 发现一条路径的起点和终点的 LCA 经过另一条路径&#xff0c;是两路径相交的充要条件。 考虑如何判断这个 LCA 在不在路径上。若 d ( s , LCA ) d ( LCA , t ) d ( s , t ) d(s,\text{LCA…

ArmSom---SPI开发指南

1. 简介 RK3588从入门到精通本⽂主要介绍在Rockchip平台配置spi接口并且使用的方法开发板&#xff1a;ArmSoM-W3Kernel&#xff1a;5.10.160OS&#xff1a;Debian11 2. SPI接口概述 SPI&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;即串行外围设备接口&…

2023年辽宁省数学建模竞赛B题思路详细分析

摘要略&#xff0c;2023年辽宁省数学建模竞赛B题代码和论文已经完成&#xff0c;代码为全部3问代码&#xff0c;论文包括摘要、问题重述、问题分享、模型假设、符号说明、模型的建立和求解&#xff08;问题1无监督聚类模型的建立和求解&#xff0c;问题二有监督分类预测模型的建…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点&#xff1a; 1. 硬件设施&#xff1a;包括服务器、存储设备、网络设备等&#xff0c;这是整个系统运行的物理基础。 2. 软件设施&#xff1a;包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等&#xff0c;这些是…

QT在线安装5.15之前的版本(下载速度飞快)

使用最新的QT在线安装器&#xff0c;安装QT版本时只能安装5.15以及之后的版本&#xff0c;安装QT5.15之前的版本只能通过离线安装的方式&#xff0c;离线安装后还要自己去配置QT&#xff0c;离线安装还有个问题的&#xff0c;后续维护比较麻烦&#xff0c;QT的维护工具还要自己…

美联储再度暂停升息:“比特币突破35,000美元!“

今天凌晨举行FOMC 利率会议的结果并不引起意外在意料之中&#xff0c;再次”暂停升息”&#xff0c;基准利率仍然在 5.25% 至 5.5% 区间。 市场反应出对于美联储暂停升息松了一口气&#xff0c;意味着当前的利率基本上是美联储的最高利率&#xff0c;要再继续加息的概率不大。 …

高浓度化工废水处理工艺是怎样的

高浓度化工废水处理工艺主要包括以下步骤&#xff1a; 预处理&#xff1a;通过物理、化学和生物等方法对废水进行预处理&#xff0c;以去除其中的悬浮物、油污、重金属等有害物质。常用的预处理方法包括沉淀、过滤、吸附、氧化等。化学氧化&#xff1a;利用氧化剂&#xff08;…

体验SOLIDWORKS旋转反侧切除增强 硕迪科技

大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强&#xff0c;添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后&#xff0c;点击键盘上的S键并输入旋转切除以搜索该命令&a…

C语言--输出1-100以内的素数

首先要有1-100以内的数字 for(int i1;i<100;i) 素数&#xff1a; 素数是指只能被1和自身整除的正整数。换句话说&#xff0c;素数是大于1的数&#xff0c;它除了1和它本身之外没有其他因数。例如&#xff0c;2、3、5、7、11、13等都是素数。然而&#xff0c;4、6、8、9等不…

浅述边缘计算场景下的云边端协同融合架构的应用场景示例

云计算正在向一种更加全局化的分布式节点组合形态进阶&#xff0c;而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快&#xff0c;海量设备产生的数据&#xff0c;若上传到云端进行处理&#xff0c;会对云端造成巨大压力。如果利用边缘计算来让云端的能…