【Redis】 Java操作客户端命令——列表操作与哈希操作

文章目录

  • 🍃前言
  • 🌴列表操作
    • 🚩lpush 和 lpop
    • 🚩rpush 和 rpop
    • 🚩lrange
    • 🚩bloop
    • 🚩brpop
    • 🚩lindex
    • 🚩linsert
    • 🚩llen
  • 🎋哈希操作
    • 🚩hset 和 hget
    • 🚩hexists 和 hdel
    • 🚩hkeys 和 hvals
    • 🚩hmget
    • 🚩hlen
    • 🚩hincrby 和 hincrbyfloat
  • ⭕总结

🍃前言

本篇文章重点是,介绍一些Java 操作 Redis 的常见命令的使用。

总体分为以下6个部分进行介绍:

  1. 基础操作
  2. 字符串操作
  3. 列表操作
  4. 哈希表操作
  5. 集合操作
  6. 有序集合操作

本篇演示以下两种用法:

  1. 列表操作
  2. 哈希表操作

🌴列表操作

准备工作代码如下:

public class ListDemo {public static void main(String[] args) {JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");try (Jedis jedis = jedisPool.getResource()){//清空redis数据库jedis.flushAll();//testLpushAndLpop(jedis);//testRpushAndRpop(jedis);//testLrange(jedis);//testBLpop(jedis);//testBRpop(jedis);//testLindex(jedis);//testLlen(jedis);}}
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 关于Redis列表类型

🚩lpush 和 lpop

  • lpush:将⼀个或者多个元素从左侧放⼊(头插)到 list 中。
  • lpoop:从 list 左侧取出元素(即头删)

测试代码如下:

public static void testLpushAndLpop(Jedis jedis) {System.out.println("测试 lpush 和 lpop");long n = jedis.lpush("key", "1", "2", "3", "4");System.out.println(n);String value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);value = jedis.lpop("key");System.out.println(value);
}

执行结果如下:

在这里插入图片描述

🚩rpush 和 rpop

  • rpush:将⼀个或者多个元素从右侧放⼊(尾插)到 list 中
  • rpop:从 list 右侧取出元素(即尾删)

测试代码如下:

private static void testRpushAndRpop(Jedis jedis) {System.out.println("测试 rpush 与 rpop");long n = jedis.rpush("key", "1", "2", "3", "4");System.out.println(n);String value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);value = jedis.rpop("key");System.out.println(value);
}

执行结果如下:

在这里插入图片描述

🚩lrange

  • lrange:获取从 start 到 end 区间的所有元素,左闭右闭。

测试代码如下:

private static void testLrange(Jedis jedis) {jedis.rpush("key", "1", "2", "3", "4");List<String> values = jedis.lrange("key", 1, 3);System.out.println(values);
}

执行结果如下:

在这里插入图片描述

🚩bloop

  • bloop:lpoop的阻塞版本,返回值 List 是个⼆元组.。[0] 表⽰ key, [1] 表⽰ value

超时时间设为 0 表⽰死等,在执⾏同时,起⼀个 redis-cli,插⼊数据,即可看到 blpop的返回结果

测试代码如下:

private static void testBLpop(Jedis jedis) {System.out.println("测试 bloop");while (true) {List<String> values = jedis.blpop(0, "key");System.out.println(values);}
}

另起一个客户端插入数据

在这里插入图片描述

执行结果如下:
在这里插入图片描述

🚩brpop

使用方式与bloop类似

测试代码如下:

private static void testBRpop(Jedis jedis) {System.out.println("开始调⽤ brpop");while (true) {List<String> values = jedis.brpop(0, "key");System.out.println(values);}
}

调用Redis客户端

在这里插入图片描述

执行结果如下:

在这里插入图片描述

🚩lindex

  • lindex:获取从左数第 index 位置的元素

测试代码如下:

private static void testLindex(Jedis jedis) {System.out.println("测试 lindex");jedis.rpush("key", "1", "2", "3", "4");String value = jedis.lindex("key", 2);System.out.println(value);
}

执行结果

在这里插入图片描述

🚩linsert

  • linsert:通过 ListPosition.BEFORE 和 ListPosition.AFTER 标识插⼊位置

测试代码如下:

private static void testLinsert(Jedis jedis) {jedis.rpush("key", "a", "b", "c", "d");jedis.linsert("key", ListPosition.BEFORE, "c", "100");List<String> values = jedis.lrange("key", 0, -1);System.out.println(values);
}

执行结果如下:

在这里插入图片描述

🚩llen

  • llen:获取 list 的长度

测试代码如下:

private static void testLlen(Jedis jedis) {jedis.rpush("key", "a", "b", "c", "d");long n = jedis.llen("key");System.out.println(n);
}

执行结果如下:

在这里插入图片描述

🎋哈希操作

准备工作代码如下:

public class HashDemo {public static void main(String[] args) {JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");try (Jedis jedis = jedisPool.getResource()) {//清空redis数据库jedis.flushAll();//以下为测试方法//testHsetAndHget(jedis);//testHexistsAndHdel(jedis);//testHkeysAndHvalues(jedis);//testHmget(jedis);//testHIncrByAndHincrByFloat(jedis);}}
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 关于 Redis 哈希类型

🚩hset 和 hget

  • hset:设置 hash 中指定的字段(field)的值(value)。
  • hget:获取hash中指定字段的值

测试代码如下:

private static void testHsetAndHget(Jedis jedis) {System.out.println("测试 hset and hget");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");String name = jedis.hget("key", "name");System.out.println(name);String age = jedis.hget("key", "age");System.out.println(age);
}

执行结果如下:

在这里插入图片描述

🚩hexists 和 hdel

  • hexists:判断 hash 中是否有指定的字段。
  • hdel:删除 hash 中指定的字段

测试代码如下:

private static void testHexistsAndHdel(Jedis jedis) {System.out.println("测试hexists 和 hdel");jedis.hset("key", "name", "zhangsan");boolean ok = jedis.hexists("key", "name");System.out.println(ok);jedis.hdel("key", "name");ok = jedis.hexists("key", "name");System.out.println(ok);
}

执行结果如下:

在这里插入图片描述

🚩hkeys 和 hvals

  • hkeys:获取 hash 所有字段
  • hvals:获取 hash 中的所有的值

测试代码如下:

private static void testHkeysAndHvalues(Jedis jedis) {System.out.println("测试 hkeys 和 hvalues");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");Set<String> keys = jedis.hkeys("key");System.out.println(keys);List<String> values = jedis.hvals("key");System.out.println(values);
}

执行结果如下:

在这里插入图片描述

🚩hmget

  • hmget:⼀次获取 hash 中多个字段的值

测试代码:

private static void testHmget(Jedis jedis) {System.out.println("测试 hmget");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");List<String> values = jedis.hmget("key", "name", "age");System.out.println(values);
}

执行结果如下:

在这里插入图片描述

🚩hlen

  • hlen:获取 hash 中的所有字段的个数。

测试代码如下:

private static void testHlen(Jedis jedis) {System.out.println("测试 hlen");jedis.hset("key", "name", "zhangsan");jedis.hset("key", "age", "20");long n = jedis.hlen("key");System.out.println(n);
}

执行结果如下:

在这里插入图片描述

🚩hincrby 和 hincrbyfloat

  • hincrby:将 hash 中字段对应的数值添加指定的值
  • hincrbyfloat:hincrby的浮点数版本

测试代码如下:

private static void testHIncrByAndHincrByFloat(Jedis jedis) {System.out.println("测试 hincrby 与 hincrbyfloat");jedis.hset("key", "age", "20");long n = jedis.hincrBy("key", "age", 10);System.out.println(n);String value = jedis.hget("key", "age");System.out.println(value);double dn = jedis.hincrByFloat("key", "age", 0.5);System.out.println(dn);value = jedis.hget("key", "age");System.out.println(value);
}

执行结果如下:

在这里插入图片描述

⭕总结

关于《【Redis】 Java操作客户端命令——列表操作与哈希操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

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

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

相关文章

java面试题及答案2024,java2024最新面试题及答案(之二)

四、反射 57. 什么是反射&#xff1f; 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 Java反射&#xff1a; 在Java运行时环境中&#xff0c;对于任意一个类&#xff0c;能否知道这个类有哪些属性和方法&#xff1f;对于任意一个对象&#xff0c;能否调…

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.JMatlab实现TCN-BiLSTM-MATT时间卷积双…

html+CSS+js部分基础运用12

一、显示列表项的内容 编写javaScript代码实现用户登录时数据合法性校验功能&#xff0c;界面如图教材P338 第2题&#xff0c;效果如下图所示&#xff1a; 图1 显示列表项内容 二、日期的处理 实时显示当前时间及累计登录时间&#xff0c;如下图2所示。[提示window.setInt…

鸿蒙开发接口资源调度:【@ohos.workScheduler (延迟任务调度)】

延迟任务调度 本模块提供延迟任务注册、取消、查询的能力。 开发者在开发应用时&#xff0c;通过调用延迟任务注册接口&#xff0c;注册对实时性要求不高的延迟任务&#xff0c;该任务默认由系统安排&#xff0c;在系统空闲时根据性能、功耗、热等情况进行调度执行。 说明&am…

【开源三方库】Fuse.js:强大、轻巧、零依赖的模糊搜索库

1.简介 Fuse.js是一款功能强大且轻量级的JavaScript模糊搜索库&#xff0c;支持OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;操作系统&#xff0c;它具备模糊搜索和排序等功能。该库高性能、易于使用、高度可配置&#xff0c;支持多种数据类型和多语…

大模型ChatGLM的部署与微调

前言&#xff1a;最近大模型太火了&#xff0c;导师让我看看能不能用到自己的实验中&#xff0c;就想着先微调一个chatGLM试试水&#xff0c;微调的过程并不难&#xff0c;难的的硬件条件跟不上&#xff0c;我试了一下lora微调&#xff0c;也算跑通了吧&#xff0c;虽然最后评估…

【问题随记】tightvnc 连接后灰屏

问题描述 刚刚入手了官方发的 OrangePi AI Pro&#xff0c;想用 tight vnc 来连接开发板&#xff0c;就不用连接屏幕那么麻烦了。结果连接后&#xff0c;没能显示 OrangePi AI Pro 桌面。 问题解决 看一下现有的桌面环境。 apt list --installed | grep desktop从中可以看到…

语言模型解构——Tokenizer

1. 认识Tokenizer 1.1 为什么要有tokenizer&#xff1f; 计算机是无法理解人类语言的&#xff0c;它只会进行0和1的二进制计算。但是呢&#xff0c;大语言模型就是通过二进制计算&#xff0c;让你感觉计算机理解了人类语言。 举个例子&#xff1a;单1&#xff0c;双2&#x…

【传知代码】探索视觉与语言模型的可扩展性(论文复现)

前言&#xff1a;在数字化时代的浪潮中&#xff0c;我们见证了人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其中视觉与语言模型作为两大核心领域&#xff0c;正以前所未有的速度改变着我们的生活和工作方式。从图像识别到自然语言处理&#xff0c;从虚拟现实…

无人机推流/RTMP视频推拉流EasyDSS无法卸载软件是什么原因?

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务&#xff0c;在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外&#xff0c;平台还支持用户自行上传视频文件&#xff0c;也可将上传的点播…

大话设计模式解读01-简单工厂模式

本系列的文章&#xff0c;来介绍编程中的设计模式&#xff0c;介绍的内容主要为《大话设计模式》的读书笔记&#xff0c;并改用C语言来实现&#xff08;书中使用的是.NET中的C#&#xff09;,本篇来学习第一章&#xff0c;介绍的设计模式是——简单工厂模式。 1 面向对象编程 …

Mixly 开启WIFI AP UDP收发数据

一、开发环境 软件&#xff1a;Mixly 2.0在线版 硬件&#xff1a;ESP32-C3&#xff08;立创实战派&#xff09; 固件&#xff1a;ESP32C3 Generic(UART) 测试工工具&#xff1a;NetAssist V5.0.1 二、实现功能 ESP32开启WIFI AP&#xff0c;打印接入点IP地址&#xff0c;允许…

模拟堆-java

模拟堆也是对堆的一次深入理解和一些其它操作&#xff0c;可以了解一下。 文章目录 前言 一、模拟堆 二、算法思路 1.结点上移 2.结点下移 3.插入一个数 4.输出当前集合的最小值 5.删除当前集合的最小值&#xff08;数据保证此时的最小值唯一&#xff09; 6.删除第k个插入的数 …

Springboot健身房管理系统-计算机毕业设计源码44394

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在健身房管理的要求下&#xff0c;开发一款整体式结构的健身房管理系统…

代理 模式

一、什么是代理模式 代理模式指代理控制对其他对象的访问&#xff0c;也就是代理对象控制对原对象的引⽤。在某些情况下&#xff0c;⼀个对象不适合或者不能直接被引⽤访问&#xff0c;⽽代理对象可以在客⼾端和⽬标对象之间起到中介的作⽤。 二、为什么使用代理模式 模式作…

HW面试常见知识点2——研判分析(蓝队中级版)

&#x1f340;文章简介&#xff1a;又到了一年一度的HW时刻&#xff0c;本文写给新手想快速进阶HW蓝中的网安爱好者们&#xff0c; 通读熟练掌握本文面试定个蓝中还是没问题的&#xff01;大家也要灵活随机应变&#xff0c;不要太刻板的回答&#xff09; &#x1f341;个人主页…

揭秘下载数据背后的秘密,Xinstall助你掌握市场脉搏

在当下这个移动互联网时代&#xff0c;应用推广已成为各大企业竞争的重要战场。然而&#xff0c;如何有效地获取并分析应用下载数据&#xff0c;却成为了许多推广者面临的难题。今天&#xff0c;我们将为大家介绍一款强大的应用推广助手——Xinstall&#xff0c;它能够帮助你轻…

隐藏 IP 地址的重要性是什么?

在当今的数字时代&#xff0c;保护我们的在线身份至关重要。从保护个人信息到保护隐私&#xff0c;互联网用户越来越多地寻求增强在线安全性的方法。保持匿名和保护敏感数据的一个关键方面是隐藏您的 IP 地址。在这篇博文中&#xff0c;我们将深入探讨隐藏 IP 地址的重要性&…

人脸识别技术与人证合一智能闸机的剖析

人脸识别技术&#xff0c;作为一种先进的生物认证手段&#xff0c;依据个体面部独有的特征信息来进行身份验证。这项技术通过捕获图像或视频中的面部数据&#xff0c;执行一系列精密步骤&#xff0c;包括图像获取、面部定位、预处理、特征提取与比对&#xff0c;以确认个人身份…

【JMeter接口自动化】第2讲 Jmeter目录结构

JMeter的目录结构如下&#xff1a; bin目录&#xff1a;可执行文件目录&#xff0c;启动jmeter时&#xff0c;就是启动bin目录下的ApacheJmeter.jar&#xff0c;jmeter.bat&#xff0c;jmeter.sh ApacheJmeter.jar:启动文件 jmeter.bat&#xff1a;Windows 的启动命令。 jmeter…