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,一经查实,立即删除!

相关文章

使用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;同时可以生产前端代…

使用 C# 在Word中插入图表

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

初学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 运…

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

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

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…

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

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

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

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

EasyFlash移植使用- 关于单片机 BootLoader和APP均使用的情况

目前&#xff0c;我的STM32单片机&#xff0c;需要在BootLoader和APP均移植使用EasyFlash&#xff0c;用于参数管理和IAP升级使用。 但是由于Flash和RAM限制&#xff0c;减少Flash占用&#xff0c;我规划如下&#xff1a; BootLoader中移植EasyFlash使用旧版本&#xff0c;因为…

centos7-lamp

目录 一、安装 1.关闭防火墙关闭selinux 2.安装apache 3.配置主页 二、部署mariadb&#xff08;mysql&#xff09; 1.用yum安装 2.启动数据库 3.看下端口是否listen 4登录mysql 5.修改下密码 三、安装php 1.安装依赖包 2.安装php解释器和php连接mysql驱动 3.配置…

GPT引发智能AI时代潮流

最近GPT概念爆火&#xff0c;许多行业开始竞相发展AI &#xff0c;工作就业也将面临跳转&#xff0c;目前测试就业形势就分为了两大类&#xff0c;一类是测试行业如功能、性能、自动化综合性人才就业技能需求&#xff0c;另一类便是AI测试行业的需求普遍增长&#xff0c;原本由…

linux 上flink单机安装详解

目录 一 准备安装包 二 解压 三 配置环境变量 四 验证是否部署成功 一 准备安装包 官网地址&#xff1a; Downloads | Apache Flink 百度网盘资源&#xff1a; 链接: https://pan.baidu.com/s/15aXmF3JLxnOlPiDxId637Q?pwdsqsx 提取码: sqsx 这里准备的版本是flink1.13…

C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。

矩阵形式&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 完整代码&#xff1a; /*编写以下函数 1&#xff0e;在一个二维数组中形成如以下形式的 n 阶矩阵&#xff1a; 1 1 1 1 1 2 1 1 1 1 3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 2&#xff0e;去掉…

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…

天猫商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

要获取天猫商品评论接口&#xff0c;您需要使用天猫开放平台提供的API接口。以下是一些可能有用的步骤&#xff1a; 注册并登录天猫开放平台&#xff0c;获取开发者账号。在开发者中心创建一个应用&#xff0c;获取应用的App Key和App Secret。使用天猫开放平台的API接口&…

微服务之负载均衡使用场景

在如见常见微服务系统中&#xff0c;负载均衡组件是一种将流量分配到多个服务的技术&#xff0c;目的是提高系统的性能和可用性。负载均衡有两种常见的模式&#xff1a;服务端模式和客户端模式。服务端模式使用独立的应用程序&#xff08;如 Nginx&#xff09;来转发请求&#…

MySQL的基本建表及操作

MySQL的基本建表及操作 文章目录 MySQL的基本建表及操作一、表的结构二、建库和建表1.建库2.建表 三、复制表四、查表和删表 一、表的结构 数据库表的结构由表名、列名、列数据类型、列约束和索引等元素组成。具体来说&#xff0c;下面是数据库表的结构元素的详细解释&#xf…