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

【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

目录

Jedis

1.jedis是什么

2.jedis的安装配置

3.jedis的基础命令操作展示

1.set和get操作:

2.exists和del操作:

 3.keys和type操作:

4. expire和ttl:


Jedis

        Java 操作 redis 的客⼾端有很多,其中最知名的是 jedis。把下面代码拷贝到Maven项目的pom.xml文件中就可以引入jedis的依赖了。
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version>
</dependency>

1.jedis是什么

       Java操作MySQL的方式我们经常使用JDBC或者Mybatis,同样redis除了命令行操作的方式之外也提供了一组api,可以供我们实现定制化的redis客户端程序,进一步操作redis服务器。jedis就是大佬们基于这套api写出来的供Java操作redis服务器的一个开源库,我们可以使用这个库中封装好的方法来在IDEA中实现对redis服务器的操作。

为什么Redis我们可以定制化实现客户端程序,像我们经常使用的QQ,王者荣耀之类的程序不能定制化客户端呢?

        这是因为redis是一种客户端-服务器结构的程序,客户端和服务器之间的访问是通过网络通信,网络通信的过程中,会用到很多的协议,这些协议可以分为应用层,传输层,网络层,数据链路层,物理层五种,靠下层的四种协议一般都是在系统内核或者驱动程序中实现的,我们在设计应用的过程中只能选择不能修改,但是像应用层的协议,更多的时候,程序的设计者们会自定义协议的内容,Redis此处就是使用自定义的应用层协议,传输层选择的TCP协议。之所以客户端和服务器之间能够使用网络通信,是因为开发客户端的人和开发服务器的人都知道协议的细节,能够很好的实现对通信内容的包装和解析。Redis自定义的应用层协议叫做RESP,可以在Redis官方文档查询到,正是因为Redis把自定义的应用层协议公开了出来,我们才能实现自定义的实现与服务器通信的Redis客户端。

2.jedis的安装配置

0.准备工作,启动云服务器上的redis程序,并利用ssh端口转发将端口映射到主机。在xshell中右键会话属性,选择SSH中的隧道功能,如下图所示:当ssh与服务器连接生效时。本机的8888端口便可以生效了。

可以在本地主机上敲以下命令观察是否生效。

tips:如果大家购买的带有公网ip的云服务器,尽量不要尝试将防火墙关闭把redis的端口对外开放,因为redis自带的防入侵的安全功能很少,极易被黑客入侵。

1.第一步首先创建一个Maven项目,直接把文章开篇的依赖复制进入pom.xml文件中,并点击右上方的刷新按钮,idea就会自动从Maven的中央仓库拉取jedis的相关代码到本地仓库。

 2.第二步建立与Redis服务器的连接,如下所示

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;public class RedisDemo {public static void main(String[] args) {JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");try(Jedis jedis=jedisPool.getResource()){//从redis连接池中取出一个连接,并自动释放。//此时便可以使用jedis对象中的方法来操作redis服务器了。String pong=jedis.ping();System.out.println(pong);}}
}

然后便可以验证程序了。 

 

3.jedis的基础命令操作展示

1.set和get操作:
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");try(Jedis jedis=jedisPool.getResource()){//从redis连接池中取出一个连接,并自动释放。//此时便可以使用jedis对象中的方法来操作redis服务器了。
//            String pong=jedis.ping();
//            System.out.println(pong);testGetSet(jedis);}}private static void testGetSet(Jedis jedis){jedis.flushDB();//清库操作jedis.set("key1","value1");jedis.set("key2","value2");String value1 =jedis.get("key1");System.out.println(value1);String value2=jedis.get("key2");System.out.println(value2);String value3=jedis.get("key3");System.out.println(value3);}

执行上述代码,便可以得到下面结果。 

2.exists和del操作:
    private static  void testExistsAndDel(Jedis jedis){jedis.flushDB();jedis.set("key1","value");jedis.set("key2","value");jedis.set("key3","value");boolean ret = jedis.exists("key1");System.out.println(ret);long n=jedis.del("key1");System.out.println(n);ret=jedis.exists("key1");System.out.println(ret);n=jedis.del("key2","key3");System.out.println(n);ret=jedis.exists("key2");System.out.println(ret);}

 执行上述代码的运行结果:

 3.keys和type操作:
    private static void keysAndType(Jedis jedis){jedis.flushDB();jedis.set("key1", "value");System.out.println(jedis.type("key1"));jedis.lpush("key2", "a", "b", "c");System.out.println(jedis.type("key2"));jedis.hset("key3", "name", "zhangsan");System.out.println(jedis.type("key3"));jedis.sadd("key4", "111", "222", "333");System.out.println(jedis.type("key4"));jedis.zadd("key5", 1, "aaa");System.out.println(jedis.type("key5"));Set<String> keys = jedis.keys("*");System.out.println(keys);keys = jedis.keys("key?");System.out.println(keys);}

执行上述代码: 

4. expire和ttl:
    private static void expireAndTTL(Jedis jedis) throws InterruptedException {jedis.setex("key",60,"value");long ttl=jedis.ttl("key");System.out.println(ttl);Thread.sleep(3000);ttl=jedis.ttl("key");System.out.println(ttl);}

执行上述代码操作: 

❤️😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍

🍔我是小皮侠,谢谢大家都能看到这里!!

🦚主页已更新Java基础内容,数据结构基础,数据库,算法

🚕未来会更新Java项目,SpringBoot,Redis以及各种Java路线会用到的技术。

🎃求点赞!求收藏!求评论!求关注!

🤷‍♀️谢谢大家!!!!!!!

相关文章:

【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

目录 Jedis 1.jedis是什么 2.jedis的安装配置 3.jedis的基础命令操作展示 1.set和get操作&#xff1a; 2.exists和del操作&#xff1a; 3.keys和type操作&#xff1a; 4. expire和ttl&#xff1a; Jedis Java 操作 redis 的客⼾端有很多&#xff0c;其中最知名的是 jedi…...

【 微信机器人+ AI 搭建】

摘要&#xff1a; 各种大模型已经出来好久了&#xff0c;各类app也已经玩腻了&#xff0c;接下来&#xff0c;就在考虑&#xff0c;怎么让大模型&#xff0c;利益最大化。 本人没有显著的家世&#xff0c;没有富婆包养&#xff0c;只能自己抽点时间&#xff0c;研究下技术&…...

VGG16网络介绍及代码撰写详解(总结1)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习只要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。 摘要&#xff1a;本文是介绍V…...

多个excel表数据比对操作

多个excel表数据比对操作 本文主要使用两种方法进行比对,分别使用了openpyxl第三方库和pandas第三方库进行数据比对 两种方法优缺点: openpyxy: 优点:主要是处理xlsx的文件,里面方法简单,易懂 缺点:当数据量大的时候,速度很慢,之前我一条一条数据拿出来比较,两百多条…...

golang学习笔记32——哪些是用golang实现的热门框架和工具

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

ZYNQ:开发环境搭建

资料下载 http://47.111.11.73/docs/boards/fpga/zdyz_qimxing(V2).html Vivado软件是什么&#xff1f; Vivado软件是Xilinx&#xff08;赛灵思&#xff09;公司推出的一款集成设计环境&#xff08;IDE&#xff09;&#xff0c;主要用于FPGA&#xff08;现场可编程门阵列&am…...

一步一步丰富生成式语言模型系统

以下是这套生成式语言模型解决任务的流程图概述&#xff1a; #mermaid-svg-sRHDSMUMV1utrg2F {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sRHDSMUMV1utrg2F .error-icon{fill:#552222;}#mermaid-svg-sRHDSMUMV1u…...

Python中元组的常用方法

# 在Python中&#xff0c;元组&#xff08;tuple&#xff09;是一种不可变的序列类型&#xff0c;用于存储多个元素。元组的特点包括&#xff1a; # # 不可变性&#xff1a;一旦创建&#xff0c;元组的元素不能改变。这意味着不能添加、删除或修改元组中的元素。 # 可以包含任何…...

新版本Android Studio如何新建Java code工程

新版本Android Studio主推Kotlin&#xff0c;很多同学以为无法新建Java工程了&#xff0c;其实是可以的&#xff0c;如果要新建Java代码的Android工程&#xff0c;在New Project的时候需要选择Empty Views Activity&#xff0c;如图所示&#xff0c;gradle也建议选为build.grad…...

2024年世界职业院校技能大赛:全面升级的国际化职业技能竞赛

近日,中华人民共和国教育部发布了《2024年世界职业院校技能大赛实施方案》,宣布从2024年起将全国职业院校技能大赛升级为世界职业院校技能大赛。这一重大决策不仅标志着我国职业教育竞赛平台的全面国际化,更彰显了中国在全球职业教育领域的引领作用和战略眼光&#xff0c;具体内…...

前端vue相关常见面试题,包含MVVM、双向绑定原理、性能优化、vue2和vue3性能对比等

vue面试题 MVVM 概念 model view viewModel 本质上是mvc&#xff08;程序分层开发思想&#xff09; 将viewModel的状态和行为抽象化&#xff0c;viewmodel将视图ui和业务逻辑分开&#xff0c;去除model的数据&#xff0c;同时处理view中需要展示的内容和业务逻辑 view视图层 …...

生信初学者教程(十二):数据汇总

文章目录 介绍加载R包导入数据汇总表格输出结果总结介绍 在本教程中,汇总了三个肝细胞癌(HCC)的转录组数据集,分别是LIRI-JP,LIHC-US/TCGA-LIHC和GSE14520,以及一个HCC的单细胞数据集GSE149614的临床表型信息。这些数据集为科研人员提供了丰富的基因表达数据和相关的临床…...

常用大语言模型简单介绍

LLaMA&#xff08;Large Language Model Meta AI&#xff09;和 Qwen是两个不同的大语言模型&#xff0c;它们在开发背景、设计目标和使用场景等方面有所不同。 1. LLaMA: 开发背景: LLaMA 是由Facebook开发的大语言模型&#xff0c;主要针对学术研究和开源领域。它的设计初衷…...

云计算Openstack

OpenStack是一个开源的云计算管理平台项目&#xff0c;由美国国家航空航天局&#xff08;NASA&#xff09;和Rackspace公司合作研发并发起&#xff0c;以Apache许可证授权。该项目旨在为公共及私有云的建设与管理提供软件支持&#xff0c;通过一系列相互协作的组件实现云计算服…...

ClickHouse复杂查询单表亿级数据案例(可导出Excel)

通过本篇博客&#xff0c;读者可以了解到如何在 ClickHouse 中高效地创建和管理大规模销售数据。随机数据生成和复杂查询的示例展示了 ClickHouse 的强大性能和灵活性。掌握这些技能后&#xff0c;用户能够更好地进行数据分析和决策支持&#xff0c;提升业务洞察能力。 表结构…...

ST-GCN模型实现花样滑冰动作分类

加入深度实战社区:www.zzgcz.com&#xff0c;免费学习所有深度学习实战项目。 1. 项目简介 本项目实现了A042-ST-GCN模型&#xff0c;用于对花样滑冰动作进行分类。花样滑冰作为一项融合了舞蹈与竞技的运动&#xff0c;其复杂的动作结构和多变的运动轨迹使得动作识别成为一个具…...

计算机网络基础--认识协议

目录 前言 一、IP地址与端口 二、网络协议 1.网络体系结构框架 2.网络字节序 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 计算机网络涉及非常广泛&#xff0c;这篇文章主要对计算机网络有个认识 提示&#xff1a;以下是本篇文章正文内容&#x…...

基本控制结构2

顺序结构 程序按照语句的书写次序顺序执行。 选择结构 判断选择结构又称条件分支结构&#xff0c;是一种基本的程序结构类型。 在程序设计中&#xff0c;当需要进行选择、判断和处理的时候&#xff0c;就要用到条件分支结构。 条件分支结构的语句一般包括if语句、if–else…...

php 平滑重启 kill -SIGUSR2 <PID> pgrep命令查看进程号

有时候我们使用nginx 大家都知道平滑重启命令: /web/nginx/sbin/nginx -s reload 但大家对php-fpm 重启 可能就是简单暴力的kill 直接搞起了 下面介绍一个sh 文件名保存为start_php.sh 来对php-fpm 进行平滑重启 #!/bin/bash# 检查 PHP-FPM 是否运行 if ! pgrep php-…...

实时美颜功能技术揭秘:视频美颜SDK与API的技术剖析

当下&#xff0c;用户希望在视频直播中呈现出最佳状态&#xff0c;这推动了视频美颜SDK和API的迅速发展。本文将深入剖析这项技术的核心原理、应用场景以及未来趋势。 一、实时美颜技术的基本原理 在实现这些效果的过程中&#xff0c;视频美颜SDK通常会使用以下几种技术&…...

word2vector训练代码详解

目录 1.代码实现 2.知识点 1.代码实现 #导包 import math import torch from torch import nn import dltools #加载PTB数据集 &#xff0c;需要把PTB数据集的文件夹放在代码上一级目录的data文件中&#xff0c;不用解压 #批次大小、窗口大小、噪声词大小 batch_size, ma…...

Python的风格应该是怎样的?除语法外,有哪些规范?

写代码不那么pythonic风格的&#xff0c;多多少少都会让人有点难受。 什么是pythonic呢&#xff1f;简而言之&#xff0c;这是一种写代码时遵守的规范&#xff0c;主打简洁、清晰、可读性高&#xff0c;符合PEP 8&#xff08;Python代码样式指南&#xff09;约定的模式。 Pyth…...

net core mvc 数据绑定 《1》

其它的绑定 跟net mvc 一样 》》MVC core 、framework 一样 1 模型绑定数组类型 2 模型绑定集合类型 3 模型绑定复杂的集合类型 4 模型绑定源 》》》》 模型绑定 使用输入数据的原生请求集合是可以工作的【request[],Querystring,request.from[]】&#xff0c; 但是从可读…...

python为姓名注音实战案例

有如下数据&#xff0c;需要对名字注音。 数据样例&#xff1a;&#x1f447; 一、实现过程 前提条件&#xff1a;由于会用到pypinyin库&#xff0c;所以一定得提前安装。 pip install pypinyin1、详细代码&#xff1a; from pypinyin import pinyin, Style# 输入数据 names…...

MATLAB中的艺术:用爱心形状控制坐标轴

在MATLAB中&#xff0c;坐标轴控制是绘图和数据可视化中的一个重要方面。通过精细地管理坐标轴&#xff0c;我们不仅可以改善图形的视觉效果&#xff0c;还可以赋予图形更深的情感寓意。本文将介绍如何在MATLAB中使用坐标轴控制来绘制一个爱心形状&#xff0c;并探讨其背后的技…...

基于mybatis-plus创建springboot,添加增删改查功能,使用postman来测试接口出现的常见错误

1 当你在使用postman检测 添加和更新功能时&#xff0c;报了一个500错误 查看idea发现是&#xff1a; Data truncation: Out of range value for column id at row 1 通过翻译&#xff1a;数据截断&#xff1a;表单第1行的“id”列出现范围外值。一般情况下&#xff0c;出现这个…...

Java:Object操作

目录 1、Object转List对象2、Object转实体对象 1、Object转List对象 List<User> userList MtUtils.ObjectToList(objData, User.class);/*** Object对象转 List集合** param object Object对象* param clazz 需要转换的集合* param <T> 泛型类* return*/ public s…...

Java-并发基础

启动线程的方式 只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交给Thread运行 有争议可以可以查看 Thread源码的注释&#xff1a; There are two ways to create a new thread of execution.Callable的方式需要…...

速盾:网页游戏部署高防服务器有什么优势?

在当前互联网发展的背景下&#xff0c;网页游戏的市场需求不断增长&#xff0c;相应地带来了对高防服务器的需求。高防服务器可以为网页游戏部署提供许多优势&#xff0c;下面就详细介绍一下。 第一&#xff0c;高防服务器具有强大的抗DDoS攻击能力。DDoS攻击是目前互联网上最…...

【从0开始自动驾驶】ros2编写自定义消息 msg文件和msg文件嵌套

【从0开始自动驾驶】ros2编写自定义消息 msg文件和msg文件嵌套 详细解答和讨论请私信在工作空间内新建一个功能包在msg内创建对应的msg文件创建名为TestMsg.msg的文件创建名为TestSubMsg.msg的文件&#xff08;在前一个msg文件中引用&#xff09;修改CmakeList.txt修改package.…...

bootstrap 设置 wordpress 背景/手机百度app免费下载

中国到底多少个程序员&#xff1f;每年计算机专业毕业的有多少&#xff1f;而这些人中真正从事it行业的比例是多少呢&#xff1f;中国的程序员中的地域分布状况又如何呢&#xff1f;以及程序员使用的编程语言比重等等&#xff0c;这一个个问题似乎都深刻的说明了我们程序猿是一…...

北京网站制作17页/老鬼seo

[NOIP2016]天天爱跑步 时间限制&#xff1a;2 s 内存限制&#xff1a;512 MB 【题目描述】 小C同学认为跑步非常有趣&#xff0c;于是决定制作一款叫做《天天爱跑步》的游戏。《天天爱跑步》是一个养成类游戏&#xff0c;需要玩家每天按时上线&#xff0c;完成打卡任务。 这个…...

福田莲花北网站建设/网站推广优化排名教程

第72届“世界大学生日”刚刚过去不久&#xff0c;这个节日本是为了在大学生中倡导追求和平、民主、自由和进步&#xff0c;如今&#xff0c;战乱过去已久&#xff0c;现今社会对人才的要求和期待越来越高&#xff0c;大学生也有着属于这个时代的使命与目标。现如今&#xff0c;…...

国外网购网站十大排名/企业网站优化推广

原文链接&#xff1a;http://blog.csdn.net/u012849872/article/details/51035938 maven工程标准目录结构&#xff1a; src -main –bin 脚本库 –java java源代码文件 –resources 资源库&#xff0c;会自动复制到classes目录里 –filters 资源过滤…...

go语言做的网站/北京出大大事了

如果想从头学起Cypress&#xff0c;可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html .focus() 命令 聚焦 DOM 元素 语法格式 .focus() .focus(options) 正确写法 cy.get(input).first().focus() 重点 必须是 DOM 元素才能调用 .focus() 方法&am…...

日本韩国出线了吗/宁波seo推广推荐公司

SPRING循环依赖(circular reference)的解决方法参考文章&#xff1a; &#xff08;1&#xff09;SPRING循环依赖(circular reference)的解决方法 &#xff08;2&#xff09;https://www.cnblogs.com/IcreamPrince/p/4040995.html 备忘一下。...