Jedis的简单使用

article/2025/10/13 10:55:28

Jedis的简单使用

    • 创建连接
    • 操作key
    • 操作string
    • 操作list
    • 操作set
    • 操作zset
    • 操作hash
    • Jedis连接池工具类

创建连接

public static Jedis jedis = null;static {// 地址 和 端口jedis = new Jedis("127.0.0.1", 6379);// jedis.auth("helloworld"); // 若你的redis设置了密码,则可以执行该方法,开启密码验证
}

操作key

/*** 操作key*/
@Test
void keyTest() {System.out.println(jedis.flushDB());// 清空数据System.out.println(jedis.echo("hello"));// 判断key否存在System.out.println(jedis.exists("foo"));jedis.set("key", "values");jedis.set("key2", "values");System.out.println(jedis.exists("key"));// 判断是否存在// 如果数据库没有任何key,返回nil,否则返回数据库中一个随机的key。String randomKey = jedis.randomKey();System.out.println("randomKey: " + randomKey);// 设置60秒后该key过期jedis.expire("key", 60);// key有效毫秒数System.out.println(jedis.pttl("key"));// 移除key的过期时间jedis.persist("key");// 获取key的类型, "string", "list", "set". "none" none表示key不存在System.out.println("type: " + jedis.type("key"));// 导出key的值byte[] bytes = jedis.dump("key");System.out.println(new String(bytes));// 将key重命名jedis.renamenx("key", "keytest");System.out.println("key是否存在: " + jedis.exists("key"));// 判断是否存在System.out.println("keytest是否存在: " + jedis.exists("keytest"));// 判断是否存在// 查询匹配的key// KEYS       * 匹配数据库中所有 key 。// KEYS       h?llo 匹配 hello , hallo 和 hxllo 等。// KEYS       h*llo 匹配 hllo 和 heeeeello 等。// KEYS       h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。// 特殊符号用 \ 隔开。Set<String> set = jedis.keys("k*");System.out.println(set);// 删除keyjedis.del("key");System.out.println(jedis.exists("key"));
}

输出结果:
在这里插入图片描述

操作string

/*** 操作String字符串*/
@Test
void stringTest() {// 清空库jedis.flushDB();// 设置 字符串jedis.set("hello", "hello");System.out.println(jedis.get("hello"));// 为某个value拼接字符串jedis.append("hello", " world");// 新增覆盖旧值jedis.set("hello","redis, hello world!");System.out.println(jedis.get("hello"));// 设置过期时间 | expire:失效// arg1:key  arg2:过期时间  arg3:对应value值jedis.setex("expireKey", 10, "一会儿就失效了");// multiple: 多次的// 多次设置jedis.mset("mkey1","hhh", "mkey2","hahaha");System.out.println(jedis.get("mkey1") + " " + jedis.get("mkey2"));// 多次获取List<String> mget = jedis.mget("mkey1", "mkey2");System.out.println(mget);// 批量删除jedis.del("mkey1", "mkey2");System.out.println(jedis.exists("mkey1"));System.out.println(jedis.exists("mkey2"));
}

输出结果:
在这里插入图片描述

操作list

/*** 对列表类型List的操作*/
@Test
void listTest() {// 清空库jedis.flushDB();// 设置链表listString key = "myList";// rpush: 从添加元素到列表 右侧  (r 表示 right)jedis.rpush(key, "1");jedis.rpush(key, "2");// lpush: 从添加元素到列表 左侧  (l 表示 left)jedis.lpush(key, "0");jedis.lpush(key, "-8");// 同时 rpush 和 lpush 都可以插入多个元素jedis.rpush(key, "3","4","5");jedis.lpush(key,"a","b","c");// 获取链表的长度Long length = jedis.llen(key);System.out.println("列表的长度为:"+length);// 打印队列,从索引0开始,到倒数第1个(全部元素)List<String> list = jedis.lrange(key, 0, -1);System.out.println(list);// 获取索引为index的元素String index_1_value = jedis.lindex(key, 1);System.out.println(index_1_value);// 设置索引index位置的元素, 新值覆盖旧值jedis.lset(key, 1, "999");System.out.println(jedis.lrange(key, 0, -1));// 从左边弹出一个元素String lpop = jedis.lpop(key);System.out.println(lpop);System.out.println(jedis.lrange(key, 0, -1));// 从右边弹出一个元素String rpop = jedis.rpop(key);System.out.println(rpop);System.out.println(jedis.lrange(key, 0, -1));// 删除值为xxx的元素// count > 0: 从头往尾移除值为 value 的元素,count为移除的个数。// count < 0: 从尾往头移除值为 value 的元素,count为移除的个数。// count = 0: 移除所有值为 value 的元素。jedis.lrem(key, 1, "a");// 即最右边的那个元素也会被包含在内。 如果start比list的尾部下标大的时候,会返回一个空列表。// 如果stop比list的实际尾部大的时候,Redis会当它是最后一个元素的下标。System.out.println(jedis.lrange(key, 0, 2));System.out.println("all elements: " + jedis.lrange(key, 0, -1));// 删除区间以外的元素System.out.println(jedis.ltrim(key, 0, 2));System.out.println("all elements: " + jedis.lrange(key, 0, -1));
}

输出结果:
在这里插入图片描述

操作set

@Test
void setTest() {// 清空库jedis.flushDB();String key1 = "set1";String key2 = "set2";// 集合添加元素jedis.sadd(key1, "aaa", "bbb", "ccc");jedis.sadd(key2, "bbb", "ccc", "ddd");// smembers方法: 返回set集合的成员属性,返回类型为 Set<String>。   s表示set,members 表示成员复数Set<String> smembers1 = jedis.smembers(key1);Set<String> smembers2 = jedis.smembers(key2);System.out.println(smembers1);System.out.println(smembers2);// 获取set集合的元素个数Long scard = jedis.scard(key1);System.out.println("key1集合的元素个数为:"+scard);// 获得两个集合的交集,并存储在一个关键的结果集jedis.sinterstore("destination", key1, key2);System.out.println(jedis.smembers("destination"));// 获得两个集合的并集,并存储在一个关键的结果集jedis.sunionstore("destination", key1, key2);System.out.println(jedis.smembers("destination"));// 在key1集合中,key2集合没有的元素,并存储在一个关键的结果集jedis.sdiffstore("destination", key1, key2);System.out.println(jedis.smembers("destination"));// 判断某个元素是否是一个集合的成员System.out.println(jedis.sismember(key1, "aaa"));// 删除并获取一个集合里面的元素System.out.println(jedis.spop(key1));// 从集合里删除一个或多个元素jedis.srem(key2, "ccc", "ddd");System.out.println(jedis.smembers(key2));
}

输出结果:
在这里插入图片描述

操作zset

/*** 对sorted set的操作(有序的集合)*/
@Test
void zsetTest() {// 清空库jedis.flushDB();String key = "sortedSet";// 添加元素,方式1:// arg1:key    arg2:分数(越小越靠前)    arg3:valuejedis.zadd(key,6.0, "aaaa");// 添加元素,方式2:添加一个map集合// 2.1 首先创建一个map集合, key为zset中的值, value为对应的分数HashMap<String, Double> zsetMap = new HashMap<>();zsetMap.put("bbbb", 8.0);zsetMap.put("cccc", -1.0);zsetMap.put("dddd", 1.0);jedis.zadd(key, zsetMap);// 获取一个排序的集合中的成员数量System.out.println(jedis.zcard(key));// 返回的成员在指定范围内的有序集合,以0表示有序集第一个成员,以1表示有序集第二个成员,以此类推。// 负数下标,以-1表示最后一个成员,-2表示倒数第二个成员Set<String> zset = jedis.zrange(key, 0, -1);System.out.println(zset);// 返回的成员在指定范围内的逆序集合zset = jedis.zrevrange(key, 0, -1);System.out.println(zset);// 返回zset集合的Tuple元素, 该对象包含 分数和对应的值Set<Tuple> tuples = jedis.zrangeWithScores(key, 0, -1);for (Tuple item: tuples) {System.out.println(item.getScore()+" : "+ item.getElement());}// 获取某个元素的分数Double aaaaScore = jedis.zscore(key, "aaaa");System.out.println(aaaaScore);// 给定分数值范围内的成员数System.out.println(jedis.zcount(key, 0, 7));}

输出结果:
在这里插入图片描述

操作hash

/*** 对hash的操作*/
@Test
void hashTest() {// 清空库jedis.flushDB();String key = "myhash";// 添加元素,方式1:jedis.hset(key, "aa", "11");// 添加元素,方式2:添加一个map集合HashMap<String, String> hashMap = new HashMap<>();hashMap.put("bbb","22");hashMap.put("cc","33");jedis.hmset(key, hashMap);// 获取hash的所有元素(key值)System.out.println(jedis.hkeys(key));// 获取hash中所有的key对应的value值System.out.println(jedis.hvals(key));// 获取hash里所有元素的数量System.out.println(jedis.hlen(key));// 获取hash中全部的域和值,以Map<String, String> 的形式返回Map<String, String> map = jedis.hgetAll(key);System.out.println(map);// 判断给定key值是否存在于哈希集中System.out.println(jedis.hexists(key, "bbb"));// 获取指定的值System.out.println(jedis.hget(key, "aaa"));// 删除指定的值System.out.println(jedis.hdel(key, "aaa"));// 为key中的域 field 的值加上增量 incrementSystem.out.println(jedis.hincrBy(key, "bbb", 100));System.out.println(jedis.hgetAll(key));
}

输出结果:
在这里插入图片描述

Jedis连接池工具类

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** todo jedis-pool 连接池** @author coderzpw.zhang* @version 1.0* @date 2022/7/16 18:19*/
public class JedisPoolUtils {public static final JedisPool jedisPool;static {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();// 资源池中的最大连接数jedisPoolConfig.setMaxTotal(8);// 资源池允许的最大空闲连接数jedisPoolConfig.setMaxIdle(8);// 资源池确保的最少空闲连接数jedisPoolConfig.setMinIdle(0);jedisPoolConfig.setMaxWaitMillis(1000); // 最多等待1000ms// 创建连接池对象jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);}/*** 获取一个redis连接对象* @return*/public static Jedis getJedis() {return jedisPool.getResource();}}

http://chatgpt.dhexx.cn/article/pVk9sMJh.shtml

相关文章

【国产开源】兼容redis协议的内存数据库

背景 jredis是一个高性能、高可用、低延迟的内存数据库&#xff0c;服务端源码请移步这里 编写目的 加深对底层网络传输&#xff0c;文件存储&#xff0c;文件索引的认知&#xff0c;同时也巩固自身的知识点。 协议特征 兼容redis原生协议 set get lpush rpush lrange blp…

Jedis 入门

Jedis官网快速跳转 Jedis 的 Github 官方网站跳转&#xff1a;redis/jedis 1. Jedis的基本使用 1.1 引入Jedis依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.2.3</version> </d…

Redis Java客户端Jredis

JRedis 是一个高性能的 Java 客户端&#xff0c;用来连接到Redis分布式哈希键-值数据库。提供同步和异步的连接。 项目地址&#xff1a;https://github.com/alphazero/jredis 由于jreds的jar包不在公网的maven仓库中&#xff0c;所以需要下载源码使用如下命令&#xff0c;将j…

4.jedis

1.pom依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency>2.客户端连接redis

JDK: JRE

序言 这个跟类加载有关. 其它的没啥好说的,直接说重点吧 重点 我们安装JDK后会有两个目录一个是JDK,一个是JRE.如下图所示: JDK: 这个是我们开发时需要往Eclipse或者Idear中引入的,里面主要包含了编译器,即把Java文件编译成Class文件的相关Jar.以及开发的过程所需要的一些工…

Jedis详解

因为工作的需要&#xff0c;底层同事对Redis进行了部分改造&#xff0c;增加了几个命令&#xff0c;对应着也就需要对Jedis进行部分修改&#xff0c;于是就把Jedis相关的代码读了一遍&#xff0c;发现其设计还是非常简单但又巧妙使用。 通常而言&#xff0c;我们对于Redis集群…

Jedis简介

Jedis用于java语言连接redis服务&#xff0c;并提供对应的操作API 一、准备工作 (1)jar包导入 下载地址&#xff1a;https://mvnrepository.com/artifact/redis.clients/jedis 基于maven <dependency> <groupId>redis.clients</groupId> <artifactId&…

jedis介绍

jedis是redis的java版本的客户端实现。下面演示jedis的相关操作&#xff1a;      首先在eclipse新建动态web工程&#xff1a;            将jedis所需的jar包导入到工程中&#xff1a;            编写Java代码测试连通性&#xff1a; import …

jedis相关详解

一、jedis是什么&#xff1f; Jedis是redis的java版本的客户端实现&#xff0c;使用Jedis提供的Java API对Redis进行操作&#xff0c;是Redis官方推崇的方式&#xff1b;并且&#xff0c;使用Jedis提供的对Redis的支持也最为灵活、全面&#xff1b;不足之处&#xff0c;就是编…

Redis 客户端:Jredis 和 spring-data-redis 整合

因为我使用的是 java &#xff0c;所以我学习的是java 的客户端 &#xff1a;Jredis 。整合结合自己的项目&#xff0c;把 Jredis 的客户端整合一下。 我们整合需要的工具&#xff1a; Redis Serviceredis.clients.jedis 2.9.0 &#xff08;java 客户端链接redis&#xff09;…

Redis使用教程(一)

Redis:单线程、高读写 redis数据库初识 Redis 简介 Redis 的安装配置 Redis 的常见操作 Redis 的数据类型 Redis 的事务控制 Java 操作 Redis 数据库 Redis简介 redis的作用 Redis:REmote DIctionary Server( 远程字典服务器 ) 是完全开源免费的&#xff0c;用 C 语言编写的…

html如何隐藏input,html如何让input隐藏

隐藏方法&#xff1a;1、设置input标签 type属性的值为“hidden”&#xff1b;2、利用input标签的style属性&#xff0c;添加“display:none”样式&#xff1b;3、利用input标签的style属性&#xff0c;添加“visibility:hidden”样式。 本教程操作环境&#xff1a;windows7系统…

使用java实现杨辉三角的输出

案例&#xff1a;杨辉三角 实现代码 结果输出

【Java】 杨辉三角 二维数组打印杨辉三角

Tips 打印三角的操作 : 每行打印前预留空格打印指定数量的星号后换行重复循环打印直至完成所有打印结果 杨辉三角: 三角规律空格最大对称值为 5 大于 5 则会变形三角规律为当前值为上一个值加上前一个值 首尾的数字值相等参考二维数组的规律生成数值 import java.util.Sca…

java输出杨辉三角(等腰三角形版)

网上转了一圈&#xff0c;各种形式都有&#xff0c;给出一种不用那些啥制表符的等腰三角形版本 杨辉三角 杨辉三角形各行的系数满足以下的规律&#xff1a; ①各行第一个数都是1&#xff1b; ②各行最后一个数都是1&#xff1b; ③从第3行起&#xff0c;除上面指出的第一个数…

用Java编写杨辉三角的几种实现方式

一、前言 最近在学习java&#xff0c;遇到了杨辉三角的编程代码题&#xff0c;这是一道经典的面试题&#xff0c;在经过网上搜索和老师的讲解之后&#xff0c;于是想把代码贴出来&#xff0c;分析一下思路。 二、杨辉三角 1.直角杨辉三角 2.等腰杨辉三角 这就是两种杨辉三角…

JAVA杨辉三角的详细解释

近期java面试题中总会出现算法题&#xff0c;最近我看到了很多杨辉三角的面试题&#xff0c;自己当时手写也没分析好思路&#xff0c;在网上听老师一讲于是就写出来了&#xff0c;今天把代码贴出来看下&#xff0c;思路分析下; 首先看下排列的结果&#xff1a; 可以很清楚的看…

Java实现杨辉三角形

一&#xff1a;前言 实现杨辉三角&#xff0c;需要知道什么是杨辉三角。如下图&#xff0c;就是两种杨辉三角。这两种杨辉三角形是目前最常见的&#xff1a; &#xff08;1&#xff09;等边形状的杨辉三角 &#xff08;2&#xff09;直角形状的杨辉三角 二、杨辉三角形的规…

Java代码实现杨辉三角

一、杨辉三角的概念 杨辉三角是二项式系数在三角形中的一种几何排列&#xff0c;南宋数学家杨辉在《详解九章算法》中有记载&#xff0c;欧洲的帕斯卡也发现这一规律&#xff0c;故又称帕斯卡三角形&#xff0c;比杨辉晚几百年发现该规律 二、杨辉三角的特性 他的两条斜边都是…

杨辉三角形Java实现

一、杨辉三角形的特点 &#xff08;1&#xff09;每个数等于它上方两数之和。 &#xff08;2&#xff09;每行数字左右对称&#xff0c;由1开始逐渐变大。 &#xff08;3&#xff09;第n行的数字有n项。 &#xff08;4&#xff09;前六行的杨辉三角形如图&#xff1a; 二、J…