【Redis】Java连接Redis及Java操作Redis常用数据类型

一,Java连接Redis

1.1 连接前端服务器

打开RedisDesktopManager并连接Redis

不知道可看我上一篇文章:

【Redis】安装(Linux&window)及Redis的常用命令-CSDN博客

1.2 后端依赖

导入相关的jedis依赖

注意:要在dependencies标签中导入

pom.xml:

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

1.3 Java连接

创建一个类,里面写连接Redis的相关代码

public class Redis {public static void main(String[] args) {//建立与数据库连接Jedis jedis=  new Jedis("localhost",6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());}
}

如果运行显示PONG即可表明连接成功 

二,Java操作Redis常用类型数据

2.1 Redis字符串(String)

package com.zking.ssm.common;import redis.clients.jedis.Jedis;/*** @Name BingBing* @company zking cy* @create 2023-11-03-18:04*/
public class Redis_ml {public static void main(String[] args) {//建立与数据库连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());//String的相关操作//连接第七个数据库jedis.select(3);//        存值jedis.set("uname","帅哥");//        取值System.out.println(jedis.get("uname"));//        设置该hobby多久后自动删除jedis.setex("hobby",25,"game");//        查看剩余时间System.out.println(jedis.ttl("hobby"));//        修改值jedis.set("uname","美男子");System.out.println(jedis.get("uname"));//        删除值//  System.out.println(jedis.del("uname"));}
}

2.2 Redis哈希(Hash)

package com.zking.ssm.common;import redis.clients.jedis.Jedis;/*** @Name BingBing* @company zking cy* @create 2023-11-03-18:04*/
public class Redis_ml {public static void main(String[] args) {//建立与数据库连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());//String的相关操作//连接第七个数据库jedis.select(3);//      存值
//      jedis.hset("man","sname","帅哥");
//      jedis.hset("man","sage","18");
//      jedis.hset("man","sex","男");
//      取指定的字段值
//      System.out.println(jedis.hget("man", "sname"));
//      删除值
//      System.out.println(jedis.hdel("man","sage"));
//      查询指定的key的所有字段
//      System.out.println(jedis.hgetAll("man"));
//      查询指定的key是否存在
//      System.out.println(jedis.hexists("man", "sname"));
//      System.out.println(jedis.hexists("man", "sage"));
//      获取指定key的长度
//        System.out.println(jedis.hlen("man"));}
}

2.3 Redis列表(List)

package com.zking.ssm.common;import redis.clients.jedis.Jedis;/*** @Name BingBing* @company zking cy* @create 2023-11-03-18:04*/
public class Redis_ml {public static void main(String[] args) {//建立与数据库连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());//String的相关操作//连接第七个数据库jedis.select(3);//        lpush key value1 value2 value3          将一个或多个值插入到列表头部jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球");
//        llen key                                获取列表的长度System.out.println(jedis.llen("List_hobby"));
//        lindex key index                        根据索引获取列表中的元素System.out.println(jedis.lindex("List_hobby", 0));
//        lrange key start sop                    查看指定范围内的元素System.out.println(jedis.lrange("List_hobby", 0, 2));}
}

2.4 Redis集合(Set)

package com.zking.ssm.common;import redis.clients.jedis.Jedis;import java.util.Set;/*** @Name BingBing* @company zking cy* @create 2023-11-03-18:04*/
public class Redis_ml {public static void main(String[] args) {//建立与数据库连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());//String的相关操作//连接第七个数据库jedis.select(3);//        Redis集合(Set)//       sadd key value1 [value2]                向集合添加一个或多个元素jedis.sadd("set_user", "哈巴狗", "花猪", "牛马", "joker");
//        scard key                               获取集合中的元素数量System.out.println(jedis.scard("set_user"));
//        exists key                              是否存在System.out.println(jedis.exists("set_user"));}
}

2.5 Redis有序集合(Sorted Set)

package com.zking.ssm.common;import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*** @Name BingBing* @company zking cy* @create 2023-11-03-18:04*/
public class Redis_ml {public static void main(String[] args) {//建立与数据库连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试是否连接上System.out.println(jedis.ping());//String的相关操作//连接第七个数据库jedis.select(3);//        5、Redis有序集合(Sorted Set)
// -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。jedis.zadd("mysort", 1.0, "三国演义");jedis.zadd("mysort", 2.0, "西游记");jedis.zadd("mysort", 3.0, "水浒传");jedis.zadd("mysort", 4.0, "红楼梦");Map<String, Double> map = new HashMap<>();map.put("mutouliu", 5.0);jedis.zadd("mysort", map);//正序排列Set<String> mysort = jedis.zrange("mysort", 0, -1);System.out.println(mysort);//倒序排列Set<String> mysort1 = jedis.zrange("mysort", -1, 0);System.out.println(mysort1);//        命令用于计算集合中元素的数量System.out.println(jedis.zcard("mysort"));
//        命令用于计算有序集合中指定分数区间的成员数量System.out.println(jedis.zcount("mysort", 0, 4));
//        命令在计算有序集合中指定字典区间内成员数量。System.out.println(jedis.zlexcount("mysort", "-", "+"));}
}

三,Redis在项目应用

  1. 缓存:Redis作为一种内存数据库,常用于缓存常用数据,如数据库查询结果、API响应等。通过将数据存储在Redis中,可以快速获取数据,提高系统的性能和响应速度。

  2. 会话管理:Redis可用于存储会话数据,特别是在分布式系统中,可以将用户的会话数据存储在Redis中,以实现多个服务节点之间的会话共享。

  3. 发布/订阅系统:Redis具有发布/订阅功能,可以用于构建实时消息系统。通过发布/订阅功能,可以将消息发送到频道,并由订阅者实时接收并处理消息。

  4. 排行榜/计数器:Redis提供了有序集合、计数器等功能,可以用于实现排行榜、计数器等应用场景。比如实时热门文章排行榜、用户关注数计数器等应用。

  5. 分布式锁:Redis提供了原子操作的能力,可以用于实现分布式锁。在分布式系统中,可以使用Redis的原子操作实现互斥锁,保证在同一时间只有一个进程能够访问共享资源,确保数据的一致性和并发安全性。

  6. 消息队列:Redis的列表结构非常适合用作消息队列。可以将待处理的任务作为消息发布到Redis的列表中,然后通过消费者逐一处理这些任务。

  7. 地理位置的存储与查询:Redis提供了地理位置相关的API,可以将地理信息与特定对象关联起来,并进行查询

    总的来说,Redis在项目中的主要应用包括缓存、会话管理、发布/订阅系统、排行榜/计数器、分布式锁、消息队列以及地理位置的存储与查询等方面。这些应用可以提高系统性能、实现实时消息传递和数据共享等功能。

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

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

相关文章

A股风格因子看板 (2023.11第01期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴露等。 今日为该因子跟踪第01期&#xff0c;指数组合数据截止日2023-10-31&#xff0c;要点如下 近1年A股风格因子收益走…

Apache HttpClient库编写的Scala程序

Apache HttpClient库编写的Scala下载器程序&#xff0c;用于下载图片。代码如下&#xff1a; import org.apache.http.HttpHost import org.apache.http.client.HttpClients import org.apache.http.client.methods.HttpHead import org.apache.http.impl.client.CloseableHtt…

Python:PDF转长图像和分页图像

简介&#xff1a;随着电子化文档的普及&#xff0c;PDF文件的使用频率越来越高。有时我们需要将PDF中的内容转化为图片格式进行分享或编辑&#xff0c;那么如何才能轻松地完成此任务呢&#xff1f;本文将为你展示一个Python工具&#xff1a;如何将PDF文件转化为图片&#xff0c…

JumpServer开源堡垒机与万里安全数据库完成兼容性认证

近日&#xff0c;中国领先的开源软件提供商FIT2CLOUD飞致云宣布&#xff0c;JumpServer开源堡垒机已经与万里安全数据库软件GreatDB完成兼容性认证。针对产品的功能、性能、兼容性方面&#xff0c;经过双方共同测试&#xff0c;万里安全数据库软件&#xff08;简称&#xff1a;…

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

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

SNAP打开影像失败No appropriate reader found

SNAP打开影像失败No appropriate reader found 问题描述 原因 这是我前几周用的&#xff0c;还有这些模块&#xff0c;但不知道何时&#xff0c;这些模块就少了 重装一下吧&#xff0c;可能是误删东西了 解决方案 重装了一下&#xff0c;就能够打开了 装完之后又有这些模…

【3D图像分割】基于 Pytorch 的 VNet 3D 图像分割3(3D UNet 模型篇)

在本文中&#xff0c;主要是对3D UNet 进行一个学习和梳理。对于3D UNet 网上的资料和GitHub直接获取的代码很多&#xff0c;不需要自己从0开始。那么本文的目的是啥呢&#xff1f; 本文就是想拆解下其中的结构&#xff0c;看看对于一个3D的UNet&#xff0c;和2D的UNet&#x…

项目实战:修改水果库存系统特定库存记录

1、在edit.html修改库存页面添加点击事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script s…

AI:51-基于深度学习的电影评价

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

【计算机网络】网络层:数据平面

一.网络层概述 每台路由器的数据平面的主要功能时从其输入链路向其输出链路转发数据报&#xff0c;控制平面的主要功能是协调这些本地的每路由转发动作&#xff0c;使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。 网络层不运行运输层和应用层协议。 转发是…

性能优于BERT的FLAIR:一篇文章入门Flair模型

文章目录 What is FLAIR&#xff1f;FLAIR ModelContextual String Embedding for Sequence Labelingexample FLAIR Application AreaSentiment AnalysisNamed Entity RecognitionText Classification FLAIR一、什么是FLAIR&#xff1f;二、FLAIR Library的优势是什么&#xff…

基于51单片机电子秤-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;HX711模块&#xff0c;按键设置单价&#xff0c;计算总价&#xff0c;超量程报警&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 I…

界面控件DevExpress WinForms Gauge组件 - 实现更高级别数据可视化

DevExpress WinForms控件包含了超过150个随时可用的仪表盘预设&#xff0c;包括圆形&#xff0c;数字&#xff0c;线性和状态指示器等&#xff0c;来帮助用户实现更高级的数据可视化。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业…

H5ke9

上次fetvh就一个参数url,,就是get请求 fetch还可以第二个参数对象,可以指定method:改为POST 请求头header :发送txt,servlet,json给客户端,,异步请求图片 1 这节客户端传到服务器端 2异步文件上传,两三行代码把文件传输 mouseover事件 .then()的使用 是Promise对象的一个方法…

HT6818 低 EMI 音频功率放大器

HT6818是一款具有低EMI、防削顶失真功能的立体声免输出滤波器D类音频功率放大器。AROC辐射和传导干扰抑Z电路使HT6818具有全带宽低辐射性能&#xff0c;在不加辅助滤波设计、输出喇叭线长20cm时的辐射水平远在FCC Part15Class B 标准之下。 HT6818的防削顶失真功能可检测并抑Z由…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点&#xff1a; UDP框架: UDP函数学习 发送端代码案例如下&#xff1a; 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;…

C++定义一个 Student 类,在该类定义中包括:一个数据成员 score(分数)及两个静态数据 成员 total(总分)和学生人数 count

完整代码&#xff1a; /*声明一个Student类&#xff0c;在该类中包括一个数据成员score&#xff08;分数&#xff09;、两个静态数据成员total_score&#xff08;总分&#xff09;和count&#xff08;学生人数&#xff09;&#xff1b;还包括一个成员函数account&#xff08;&…

03、最长连续数列:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度

文章目录 1、题目描述1.1 移动所有零至数组末尾1.2 示例 2、解题思路2.1 思路讲解2.2 动画演示&#xff08; 待补充&#xff09; 3、答案3.1 Java 代码3.2 运行结果 4、视频讲解&#xff08; 待补充&#xff09; 1、题目描述 1.1 移动所有零至数组末尾 给定一个未排序的整数数…

离散数学实践(2)-编程实现关系性质的判断

*本文为博主本人校内的离散数学专业课的实践作业。由于实验步骤已经比较详细&#xff0c;故不再对该实验额外提供详解&#xff0c;本文仅提供填写的实验报告内容与代码部分&#xff0c;以供有需要的同学学习、参考。 -------------------------------------- 编程语言&#xff…

Hive On Spark 概述、安装配置、计算引擎更换、应用、异常解决

文章目录 Hadoop 安装Hive 安装Hive On Spark 与 Spark On Hive 区别Hive On SparkSpark On Hive 部署 Hive On Spark查询 Hive 对应的 Spark 版本号下载 Spark解压 Spark配置环境变量指定 Hadoop 路径在 Hive 配置 Spark 参数上传 Jar 包并更换引擎 测试 Hive On SparkYarn 资…