jedis和redisTemplate

article/2025/10/13 9:57:23

使用原生jedis和spring的redisTemplate调用连接池,发现差别巨大:

redis配置:

  redis:database: 0host: 127.0.0.1port: 6379password: 123456timeout: 5000lettuce:shutdown-timeout: 200pool:max-active: 500max-idle: 100min-idle: 50max-wait: 2000

jedis单元测试:

  public void testJedis() throws IOException {GreExam greExam = new GreExam();greExam.setId(997);String greExamStr = JacksonUtil.bean2Json(greExam);long time = 0;for (int i = 0; i < 100; i++) {try (Jedis jedis = jedisPool.getResource()) {// 1、推送long time1 = System.currentTimeMillis();jedis.lpush("jedis-mq", greExamStr);// 2、接收String msg = jedis.brpoplpush("jedis-mq", "jedis-mq_bak", 0);jedis.lrem("jedis-mq_bak", 1, msg);long time2 = System.currentTimeMillis();time += time2 - time1;} catch (Exception e) {e.printStackTrace();}}System.out.println("总时间:" + time);}

redisTemplate单元测试:

  public void testRedisTemplate() throws IOException {GreExam greExam = new GreExam();greExam.setId(997);String greExamStr = JacksonUtil.bean2Json(greExam);long time = 0;for (int i = 0; i < 100; i++) {// 1、推送long time1 = System.currentTimeMillis();redisTemplate.opsForList().leftPush("redisTemplate-mq", greExamStr);// 2、接收String msg = (String) redisTemplate.opsForList().rightPopAndLeftPush("redisTemplate-mq", "redisTemplate-mq_bak", 1, TimeUnit.SECONDS);redisTemplate.opsForList().remove("redisTemplate-mq_bak", 1, msg);long time2 = System.currentTimeMillis();time += time2 - time1;}System.out.println("总时间:" + time);}

时效对比:

结论:原生jedis效率优于redisTemplate。另外,测试种发现,使用了100次请求,每次不进行业务操作,执行速度很快,redis只保持了几个连接,但是若是加上自己的业务处理或者休眠几秒,会发现redis持续保持了连接池的配置50+连接,由于是单线程,上一个jedis执行完毕后,貌似没有关闭,而且下次调用也没有分派空闲连接,而是打开新连接,直到最小连接数饱和,才分配空空闲连接给下一个(按理说单线程应该保证新调用的时候,上一个已经完全空闲,所以不再开新连接),具体原因位置,保持疑问,可能和线程池的原理有关。

手动休眠,模拟业务过程:

添加休眠前:

添加休眠后:


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

相关文章

16.Jedis

目录 一、Jedis知识点总览。 二、连接池配置&#xff1a; 三、测试类&#xff1a; 一、Jedis知识点总览。 public class ProvinceServiceImpl implements ProvinceService {private ProvinceDao dao new ProvinceDaoImpl();Overridepublic List<Province> findAll(…

Jedis的配置和使用

什么是jedis 是官方推荐的java连接开发工具&#xff0c;使用java操作Redis的中间件&#xff0c;如果要使用java操作redis&#xff0c;那么要对jedis十分熟悉 测试 导入对应的依赖(Jedis和fastjson)&#xff1a; <dependencies><dependency><groupId>redi…

Jredis操作redis的入门级例子

redis入门级例子&#xff1a; Java代码 package com.liuxinglanyue.test; import java.util.ArrayList; import java.util.List; import org.jredis.JRedis; import org.jredis.RedisException; import org.jredis.ri.alphazero.JRedisClient; import org.…

jedis入门

目录 一、Jedis 1.Jedis简介 2.导包 3.官方文档 4.常用API 5.基本操作 6.jedis连接池的使用 7.工具类的编写 8.简单的使用 9.JedisPoolConfig的配置参数 一、Jedis 1.Jedis简介 Redis不仅是使用命令来操作&#xff0c;现在基本上主流的语言都有客户端支持&#xf…

Jedis的简单使用

Jedis的简单使用 创建连接操作key操作string操作list操作set操作zset操作hashJedis连接池工具类 创建连接 public static Jedis jedis null;static {// 地址 和 端口jedis new Jedis("127.0.0.1", 6379);// jedis.auth("helloworld"); // 若你的redis设…

【国产开源】兼容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;除上面指出的第一个数…