Jedis
Jedis
使用Java操作redis
Jedis是redis官方推荐的Java连接开发工具! 使用Java操作redis的中间件
测试
-
导入对应的依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.4.3</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.39</version></dependency> -
编码测试
- 连接数据库
- 操作命令
- 断开连接
public class TestPing {public static void main(String[] args) {// 1. new Jedis 对象Jedis jedis = new Jedis("8.130.104.8",6379);System.out.println(jedis.ping());}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EBsSGGG-1693069547398)(D:\Typora\NoteFile\Redis\images\image-20230825234003770.png)]
常用API
对key的操作
public class TestKey {public static void main(String[] args) {Jedis jedis = new Jedis("8.130.104.8", 6379);System.out.println("清空数据:"+jedis.flushDB());System.out.println("判断某个键是否存在:"+jedis.exists("username"));System.out.println("新增<'username','kuangshen'>的键值对:"+jedis.set("username", "kuangshen"));System.out.println("新增<'password','password'>的键值对:"+jedis.set("password", "password"));System.out.print("系统中所有的键如下:");Set<String> keys = jedis.keys("*");System.out.println(keys);System.out.println("删除键password:"+jedis.del("password"));System.out.println("判断键password是否存在:"+jedis.exists("password"));System.out.println("查看键username所存储的值的类型:"+jedis.type("username"));System.out.println("随机返回key空间的一个:"+jedis.randomKey());System.out.println("重命名key:"+jedis.rename("username","name"));System.out.println("取出改后的name:"+jedis.get("name"));System.out.println("按索引查询:"+jedis.select(0));System.out.println("删除当前选择数据库中的所有key:"+jedis.flushDB());System.out.println("返回当前数据库中key的数目:"+jedis.dbSize());System.out.println("删除所有数据库中的所有key:"+jedis.flushAll());}
}
String
public class TestString {public static void main(String[] args) {Jedis jedis = new Jedis("8.130.104.8", 6379);jedis.flushDB();System.out.println("===========增加数据===========");System.out.println(jedis.set("key1","value1"));System.out.println(jedis.set("key2","value2"));System.out.println(jedis.set("key3", "value3"));System.out.println("删除键key2:"+jedis.del("key2"));System.out.println("获取键key2:"+jedis.get("key2"));System.out.println("修改key1:"+jedis.set("key1", "value1Changed"));System.out.println("获取key1的值:"+jedis.get("key1"));System.out.println("在key3后面加入值:"+jedis.append("key3", "End"));System.out.println("key3的值:"+jedis.get("key3"));System.out.println("增加多个键值对:"+jedis.mset("key01","value01","key02","value02","key03","value03"));System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03","key04"));System.out.println("删除多个键值对:"+jedis.del("key01","key02"));System.out.println("获取多个键值对:"+jedis.mget("key01","key02","key03"));jedis.flushDB();System.out.println("===========新增键值对防止覆盖原先值==============");System.out.println(jedis.setnx("key1", "value1"));System.out.println(jedis.setnx("key2", "value2"));System.out.println(jedis.setnx("key2", "value2-new"));System.out.println(jedis.get("key1"));System.out.println(jedis.get("key2"));System.out.println("===========新增键值对并设置有效时间=============");System.out.println(jedis.setex("key3", 2, "value3"));System.out.println(jedis.get("key3"));try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(jedis.get("key3"));System.out.println("===========获取原值,更新为新值==========");System.out.println(jedis.getSet("key2", "key2GetSet"));System.out.println(jedis.get("key2"));System.out.println("获得key2的值的字串:"+jedis.getrange("key2", 2, 4));}
}
List
public class TestList {public static void main(String[] args) {Jedis jedis = new Jedis("8.130.104.8", 6379);jedis.flushDB();System.out.println("===========添加一个list===========");jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap");jedis.lpush("collections", "HashSet");jedis.lpush("collections", "TreeSet");jedis.lpush("collections", "TreeMap");System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));//-1代表倒数第一个元素,-2代表倒数第二个元素,end为-1表示查询全部System.out.println("collections区间0-3的元素:"+jedis.lrange("collections",0,3));System.out.println("===============================");// 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈System.out.println("删除指定元素个数:"+jedis.lrem("collections", 2, "HashMap"));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("删除下表0-3区间之外的元素:"+jedis.ltrim("collections", 0, 3));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("collections列表出栈(左端):"+jedis.lpop("collections"));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("collections添加元素,从列表右端,与lpush相对应:"+jedis.rpush("collections", "EnumMap"));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("collections列表出栈(右端):"+jedis.rpop("collections"));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("修改collections指定下标1的内容:"+jedis.lset("collections", 1, "LinkedArrayList"));System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));System.out.println("===============================");System.out.println("collections的长度:"+jedis.llen("collections"));System.out.println("获取collections下标为2的元素:"+jedis.lindex("collections", 2));System.out.println("===============================");jedis.lpush("sortedList", "3","6","2","0","7","4");System.out.println("sortedList排序前:"+jedis.lrange("sortedList", 0, -1));System.out.println(jedis.sort("sortedList"));System.out.println("sortedList排序后:"+jedis.lrange("sortedList", 0, -1));}
}
Set
public class TestSet {public static void main(String[] args) {Jedis jedis = new Jedis("8.130.104.8", 6379);jedis.flushDB();System.out.println("============向集合中添加元素(不重复)============");System.out.println(jedis.sadd("eleSet", "e1","e2","e4","e3","e0","e8","e7","e5"));System.out.println(jedis.sadd("eleSet", "e6"));System.out.println(jedis.sadd("eleSet", "e6"));System.out.println("eleSet的所有元素为:"+jedis.smembers("eleSet"));System.out.println("删除一个元素e0:"+jedis.srem("eleSet", "e0"));System.out.println("eleSet的所有元素为:"+jedis.smembers("eleSet"));System.out.println("删除两个元素e7和e6:"+jedis.srem("eleSet", "e7","e6"));System.out.println("eleSet的所有元素为:"+jedis.smembers("eleSet"));System.out.println("随机的移除集合中的一个元素:"+jedis.spop("eleSet"));System.out.println("随机的移除集合中的一个元素:"+jedis.spop("eleSet"));System.out.println("eleSet的所有元素为:"+jedis.smembers("eleSet"));System.out.println("eleSet中包含元素的个数:"+jedis.scard("eleSet"));System.out.println("e3是否在eleSet中:"+jedis.sismember("eleSet", "e3"));System.out.println("e1是否在eleSet中:"+jedis.sismember("eleSet", "e1"));System.out.println("e1是否在eleSet中:"+jedis.sismember("eleSet", "e5"));System.out.println("=================================");System.out.println(jedis.sadd("eleSet1", "e1","e2","e4","e3","e0","e8","e7","e5"));System.out.println(jedis.sadd("eleSet2", "e1","e2","e4","e3","e0","e8"));System.out.println("将eleSet1中删除e1并存入eleSet3中:"+jedis.smove("eleSet1", "eleSet3", "e1"));//移到集合元素System.out.println("将eleSet1中删除e2并存入eleSet3中:"+jedis.smove("eleSet1", "eleSet3", "e2"));System.out.println("eleSet1中的元素:"+jedis.smembers("eleSet1"));System.out.println("eleSet3中的元素:"+jedis.smembers("eleSet3"));System.out.println("============集合运算=================");System.out.println("eleSet1中的元素:"+jedis.smembers("eleSet1"));System.out.println("eleSet2中的元素:"+jedis.smembers("eleSet2"));System.out.println("eleSet1和eleSet2的交集:"+jedis.sinter("eleSet1","eleSet2"));System.out.println("eleSet1和eleSet2的并集:"+jedis.sunion("eleSet1","eleSet2"));System.out.println("eleSet1和eleSet2的差集:"+jedis.sdiff("eleSet1","eleSet2"));//eleSet1中有,eleSet2中没有jedis.sinterstore("eleSet4","eleSet1","eleSet2");//求交集并将交集保存到dstkey的集合System.out.println("eleSet4中的元素:"+jedis.smembers("eleSet4"));}
}
Hash
public class TestHash {public static void main(String[] args) {Jedis jedis = new Jedis("8.130.104.8", 6379);jedis.flushDB();Map<String,String> map = new HashMap<String,String>();map.put("key1","value1");map.put("key2","value2");map.put("key3","value3");map.put("key4","value4");//添加名称为hash(key)的hash元素jedis.hmset("hash",map);//向名称为hash的hash中添加key为key5,value为value5元素jedis.hset("hash", "key5", "value5");System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));//return Map<String,String>System.out.println("散列hash的所有键为:"+jedis.hkeys("hash"));//return Set<String>System.out.println("散列hash的所有值为:"+jedis.hvals("hash"));//return List<String>System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 6));System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 3));System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));System.out.println("删除一个或者多个键值对:"+jedis.hdel("hash", "key2"));System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));System.out.println("散列hash中键值对的个数:"+jedis.hlen("hash"));System.out.println("判断hash中是否存在key2:"+jedis.hexists("hash","key2"));System.out.println("判断hash中是否存在key3:"+jedis.hexists("hash","key3"));System.out.println("获取hash中的值:"+jedis.hmget("hash","key3"));System.out.println("获取hash中的值:"+jedis.hmget("hash","key3","key4"));}
}
Zset
事务操作
public class TestMulti {public static void main(String[] args) {//创建客户端连接服务端,redis服务端需要被开启Jedis jedis = new Jedis("8.130.104.8", 6379);jedis.flushDB();JSONObject jsonObject = new JSONObject();jsonObject.put("hello","world");jsonObject.put("name","zs");// 开启事务Transaction multi = jedis.multi();String result = jsonObject.toJSONString();try {multi.set("user1",result);multi.set("user2",result);int i = 1/0; // 代码抛出异常,事务执行失败multi.exec(); // 执行事务} catch (Exception e) {//如果出现异常,回滚multi.discard(); // 放弃事务throw new RuntimeException(e);} finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));//最终关闭客户端jedis.close();}}
}
相关文章:
Jedis
Jedis 使用Java操作redis Jedis是redis官方推荐的Java连接开发工具! 使用Java操作redis的中间件 测试 导入对应的依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId&g…...
Linux 使用TCP_INFO查询TCP连接的状态信息
Linux 上可以使用TCP_INFO查询TCP连接状态信息包括: 发送方拥塞窗口阈值、发送方缓冲区拥塞窗口、advmss(Advertised MSS)、通过 ACK 确认的累计字节数等等 struct tcp_info {__u8 tcpi_state;__u8 tcpi_ca_state;__u8 tcpi_retransmits;__…...
软件测试案例 | 气象探测库存管理系统的集成测试计划
将经过单元测试的模块按照设计要求连接起来,组成规定的软件系统的过程被称为“集成”。集成测试也被称为组装测试、联合测试、子系统测试或部件测试等,其主要用于检查各个软件单元之间的接口是否正确。集成测试同时也是单元测试的逻辑扩展,即…...
vue点击按钮重新加载页面(vue第一次加载页面点击按钮出现页面刷新问题之后一切正常)
问题描述 所开发的vue项目每次跑起来之后就会出现点击按钮后重新加载整个页面的问题,但是只会在第一次点击的时候出现,后面就不会在出现加载整个页面的情况。 原因 在form表单中使用button按钮导致form表单进行了页面刷新。button默认的“type‘submi…...
软件工程(十一) 系统设计分类
我们知道需求规格说明书(SRS)落地之后, 就要开始着手系统设计了,看一下这个系统该如何来设计,并且如何实现。学习系统设计之前,需要先了解系统设计有哪些分类。 系统设计的分类如下 界面设计结构化设计面向对象设计(最重要)1、界面设计 界面设计也叫做人机界面设计,属于…...
数字转中文大写金额
有时候,我们需要显示中文大写金额,比如打印银行付款申请单等。 新建一个工程,加入一个标准模块在模块中加入如下代码,窗口中调用 AmountInChineseWords 函数即可。最大解析到百万亿,小数最多解析两位到分。 模块代码…...
Java——HashMap和HashTable的区别
Java——HashMap和HashTable的区别 Java HashMap和HashTable的区别1. 继承的父类2. 线程安全性3. null值问题4. 初始容量及扩容方式5. 遍历方式6. 计算hash值方式 Java HashMap和HashTable的区别 1. 继承的父类 都实现了Map、Cloneable(可复制)、Seria…...
Docker去除sudo权限
Docker去除sudo权限 使用docker命令时,每次都要sudo提权,否则就会报错提示无权限。 1.查看docker用户组及成员 sudo cat /etc/group | grep docker2.添加docker用户组 sudo groupadd docker3.添加用户到docker组 sudo gpasswd -a ${USER} docker4.增…...
【ROS系统】Ubuntu22.04系统中安装ROS2系统_ubuntu 安装ros2_GoesM
【ROS系统】Ubuntu22.04系统中安装ROS2系统_ubuntu 安装ros2_GoesM Excerpt ROS仿真、专为自动驾驶研发提供的系统平台_ubuntu 安装ros2 参考博客:ROS 安装详细教程 —— Ubuntu22.0.4 LTS 安装 Part 0. 准备 首先,我们需要一个Ubuntu系统。 Part 1. …...
MySQL8.0.22安装过程记录(个人笔记)
1.点击下载MySQL 2.解压到本地磁盘(注意路径中不要有中文) 3.在解压目录创建my.ini文件 文件内容为 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8[mysqld] # 设置端口 port 3306 # 设计mysql的安装路径 basedirE:\01.app\05.Tool…...
Python中pip和conda的爱恨情仇
在使用pip和conda时,是否也有过以下的疑惑??? 目前只总结了以下常见的几种混淆,如有学者还有其它疑惑,欢迎留言讨论,我会解答更新,帮助自己理清的同时,也帮助其他同样困…...
HTTPS协议原理
目录 前言 1.理解加密和解密 2.为什么要加密 3.常见的加密方式 3.1对称加密 3.2非对称加密 4.数据摘要和数据指纹 5. 数字签名 6.HTTPS的加密策略 6.1只使用对称加密 6.2使用非对称加密 6.2.1服务端使用非对称加密 6.2.2双方都使用非对称加密 6.3对称加密非对称加…...
C语言每日一练------Day(6)
本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:整数转换 异或 💓博主csdn个人主页:小小unicorn…...
springboot中使用ElasticSearch
引入依赖 修改我们的pom.xml,加入spring-boot-starter-data-elasticsearch <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>编写配…...
十二、集合(2)
本章概要 添加元素组集合的打印列表 List 添加元素组 在 java.util 包中的 Arrays 和 Collections 类中都有很多实用的方法,可以在一个 Collection 中添加一组元素。 Arrays.asList() 方法接受一个数组或是逗号分隔的元素列表(使用可变参数ÿ…...
【网络设备】交换机的概念、工作原理、功能以及以太网帧格式
个人主页:insist--个人主页 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、认识交换机 二、交换机的主要功能 1、数…...
研磨设计模式day11观察者模式
目录 场景 代码示例 定义 观察者模式的优缺点 本质 何时选用 简单变型-区别对待观察者 场景 我是一家报社,每当我发布一个新的报纸时,所有订阅我家报社的读者都可以接收到 代码示例 报纸对象 package day11观察者模式;import java.util.Observ…...
第八周第二天学习总结 | MySQL入门及练习学习第四天
实操练习: 1.建立一个员工表和与之对应的部门表 2.建立外键约束 3.使用多表查询,直接查询部门表和员工表 发现:有很多多余的因笛卡尔乘积而带来的多余输出内容 我想要的到简单明了的数据结果,要消除多于因笛卡尔乘积带来的输出…...
WPF数据转换
在基本绑定中,信息从源到目标的传递过程中没有任何变化。这看起来是符合逻辑的,但我们并不总是希望出现这种行为。通常,数据源使用的是低级表达方式,我们可能不希望直接在用户界面使用这种低级表达方式。WPF提供了两个工具&#x…...
《Go 语言第一课》课程学习笔记(十三)
方法 认识 Go 方法 Go 语言从设计伊始,就不支持经典的面向对象语法元素,比如类、对象、继承,等等,但 Go 语言仍保留了名为“方法(method)”的语法元素。当然,Go 语言中的方法和面向对象中的方…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
