【Redis学习笔记04】Jedis客户端(上)

2024-06-10 03:36

本文主要是介绍【Redis学习笔记04】Jedis客户端(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java客户端操作Redis

Java生态丰富,自定义的客户端非常多,常见的有Jedis、Lettuce、以及Spring整合后的RedisTemplate,但是对于初学者而言,从Jedis开始入门学习是非常容易上手的,因为Jedis中的API与原生Redis命令高度一致。

1. 引入Jedis依赖

此处引入如下依赖:

  • Jedis:Java操作Redis客户端
  • Junit:方便编写单元测试
<!-- 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/junit/junit -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>

2. 配置Xshell端口转发

  1. 操作步骤:1. 打开Xshell点击属性 => 2. 配置SSH隧道 => 3. 配置如下端口转发内容

image.png

  1. 打开windows cmd程序输入:netstat -ano | findstr 8888如果观察如下

image.png

  1. 确保redis.conf配置中设置protect-mode为no以及bind为0.0.0.0

3. 编写Demo

使用Jedis的步骤如下:

  1. 创建JedisPool连接池对象(配置redis服务器所在IP地址+端口号)
  2. 从JedisPool连接池中取出连接对象,并操作其中提供的API方法
  3. 解析响应内容
/*** 测试Redis连通性* @author 米饭好好吃*/
@Test
public void testPing() {// 1. 创建JedisPoolJedisPool pool = new JedisPool("tcp://127.0.0.1:8888");// 2. 获取连接对象try(Jedis jedis = pool.getResource();) {// 设置密码(如果有)jedis.auth("xxxxxx");// 3. 调用API-pingString pong = jedis.ping();// 4. 解析响应结果System.out.println(pong);}
}

4. 测试通用命令

  1. 测试SET、GET命令:
    :::success
    注意:此处GET、SET命令是针对string类型的,此处测试通用命令需要借助SET、GET命令
    :::
/*** 测试通用命令* @author 米饭好好吃*/
public class TestCommon {// redis连接池对象private JedisPool pool;@Beforepublic void init() {pool = new JedisPool("tcp://127.0.0.1:6379");}/*** 测试SET、GET命令*/@Testpublic void testGETAndSET() {// 1. 获取连接对象try(Jedis jedis = pool.getResource();) {// 2. 配置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试SET命令jedis.set("k1", "hello");// 5. 测试GET命令String resp = jedis.get("k1");System.out.println("k1: " + resp);// 6. 测试SET 选项NX命令SetParams params = new SetParams();params.nx(); // 不存在才新增jedis.set("k1", "222", params);resp = jedis.get("k1");System.out.println("k1: " + resp);}}
}
  1. 测试EXISTS命令:

/*** 测试EXISTS命令* @author 米饭好好吃*/
@Test
public void testEXISTS() {// 1. 获取到redis连接对象try(Jedis jedis = pool.getResource();) {// 2. 配置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试EXISTS命令jedis.set("k1", "111");boolean exists = jedis.exists("k1");System.out.println("k1: " + exists);jedis.del("k1");exists = jedis.exists("k1");System.out.println("k1: " + exists);}
}
  1. 测试DEL命令:
/*** 测试DEL命令* @author 米饭好好吃*/
@Test
public void testDEL() {// 1. 创建redis连接对象try(Jedis jedis = pool.getResource();) {// 2. 配置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试del命令jedis.set("k1", "111");jedis.set("k2", "222");jedis.set("k3", "333");long delCount = jedis.del("k1", "k2", "k3");System.out.println("delCount: " + delCount);String resp = jedis.get("k1");System.out.println("k1: " + resp);}
}

注意:DEL命令中参数列表为可边长参数,可以同时删除多个key,并且返回值为删除成功的个数,这与命令行中DEL命令一致

  1. 测试KEYS命令:
/*** 测试KEYS命令* @author 米饭好好吃*/
@Test
public void testKEYS() {// 1. 获取redis连接对象try(Jedis jedis = pool.getResource();) {// 2. 配置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试KEYS命令jedis.set("k1", "111");jedis.set("k2", "222");jedis.set("k3", "333");Set<String> keys = jedis.keys("*");System.out.println("keys: " + keys);}
}

注意:KEYS命令返回的是一个Java当中的Set类型,这是因为redis中的key都是不允许重复且对于顺序没有要求的,KEYS方法可以传递一个pattern参数,即KEYS命令后紧跟的匹配模式

  1. 测试EXPIRE、TTL命令:
/*** 测试EXPIRE命令* @author 米饭好好吃*/
@Test
public void testEXPIRE() {// 1. 获取redis连接对象try(Jedis jedis = pool.getResource();) {// 2. 设置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试expire、ttljedis.set("k1", "111");jedis.expire("k1", 10);long ttl = jedis.ttl("k1");System.out.println("ttl: " + ttl);}
}
  1. 测试TYPE命令:
/*** 测试TYPE命令* @author 米饭好好吃*/
@Test
public void testTYPE() {// 1. 获取redis连接对象try(Jedis jedis = pool.getResource();) {// 2. 设置密码(如果有的话)jedis.auth("xxxxxx");// 3. 清空数据库jedis.flushDB();// 4. 测试type命令jedis.hset("k1", "f1", "v1");jedis.lpush("k2", "11", "22", "33");jedis.sadd("k3", "abc");System.out.println("k1: " + jedis.type("k1"));System.out.println("k2: " + jedis.type("k2"));System.out.println("k3: " + jedis.type("k3"));}
}

这篇关于【Redis学习笔记04】Jedis客户端(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047106

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Redis的持久化之RDB和AOF机制详解

《Redis的持久化之RDB和AOF机制详解》:本文主要介绍Redis的持久化之RDB和AOF机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述RDB(Redis Database)核心原理触发方式手动触发自动触发AOF(Append-Only File)核

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务