Redis 框架 jedis 与 lettuce 比较

【需求背景】

由于集群模式下 Spring 对 jedis 的封装,在使用批量方法 (mget、delete) 时会把任务都提交到仅有一个核心线程的 executor 中执行,在高并发场景下会造成应用内大量任务处于排队状态而得不到执行。

具体参考:https://juejin.cn/post/6844904115445694472

【 jedis 和 lettuce 的区别】

  • lettuce 底层使用了 pipeline 实现了批量命令的功能,解决 mget 的问题。具体查看类:io.lettuce.core.cluster.api.async.RedisAdvancedClusterAsyncCommands

  • jedis 使用了线程池来解决 mget 的问题,具体查看类:org.springframework.data.redis.connection.jedis.JedisClusterStringCommands

综合性能对比,肯定是使用 pipeline 更加高效,这是原生 Redis 支持的功能。

【实践】

修改 nacos 的配置:spring.redis.client.type=lettuce 即可实现。

sls 查看启用哪个实例:LettuceRedisConfiguration 或 JedisConnectionFactory

【性能分析】

1、压测机器

serviceA 1台

serviceB 1台

其他依赖:全部依赖于生产环境的实例

2、压测接口

查询单个用户购物车,购物车数量很大的情况。

3、压测结果
在这里插入图片描述

4、压测分析

  • 对于单个 get 请求来说,对比第4个和第5个用例,对比第7个和第8个用例,jedis 性能与 lettuce 框架性能相当,差别不大。

  • 对于 mget 批量请求来说,对比第1个和第3个用例,lettuce 性能明显好于 jedis 框架。

  • 对于 lettuce 框架来说,对比第2个和第6个用例来说,默认策略 shareNativeConnection=true 要明显好于 shareNativeConnection=false,因此保留默认配置。

5、最终结论

如果要使用 mget 批量命令的话,建议使用 lettuce 框架,并且保留默认配置:shareNativeConnection=true。

如果不使用批量命令,lettuce 框架和 jedis 框架性能相当。

综上所述,还是 lettuce 框架性能更优。

相关推荐

  1. FlaskDjango框架比较

    2024-07-15 01:48:01       20 阅读
  2. 【Spring Boot 3】【Redis】集成Lettuce

    2024-07-15 01:48:01       45 阅读
  3. ReactVue:前端框架比较

    2024-07-15 01:48:01       51 阅读
  4. <span style='color:red;'>Jedis</span>

    Jedis

    2024-07-15 01:48:01      52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 01:48:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 01:48:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 01:48:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 01:48:01       69 阅读

热门阅读

  1. 技术探索之kotlin浅谈

    2024-07-15 01:48:01       19 阅读
  2. 企业网络安全工具整合与管控建议

    2024-07-15 01:48:01       21 阅读
  3. 构建图像金字塔遍历不同的大小

    2024-07-15 01:48:01       18 阅读
  4. 开源项目有哪些机遇与挑战?

    2024-07-15 01:48:01       21 阅读
  5. GIS就业相关问题快问快答

    2024-07-15 01:48:01       15 阅读
  6. 深入理解CSS中的 :: 和 :

    2024-07-15 01:48:01       23 阅读
  7. 牛客周赛 Round 51

    2024-07-15 01:48:01       20 阅读
  8. Git 2.45.2源码安装

    2024-07-15 01:48:01       17 阅读
  9. hnust 1794: 机器翻译

    2024-07-15 01:48:01       22 阅读
  10. 老杜Mysql 基础教程 笔记

    2024-07-15 01:48:01       21 阅读
  11. 【Linux】Ubuntu配置JDK环境、MySQL环境

    2024-07-15 01:48:01       20 阅读
  12. docker 镜像导入导出的方法

    2024-07-15 01:48:01       19 阅读
  13. Node.js 安装配置

    2024-07-15 01:48:01       22 阅读
  14. apache Kylin系列介绍及配置

    2024-07-15 01:48:01       17 阅读
  15. Hudi 索引总结 - Parquet布隆过滤器写入过程

    2024-07-15 01:48:01       22 阅读