当前位置: 首页 > article >正文

【Redis】Redis 的常见客户端汇总

目录

一、命令行客户端

二、图形界面的客户端

三、Java 客户端

3.1 SpringDataRedis

3.2 Jedis

3.2.1 连接池的配置

3.3 Lettuce

3.3.1 RedisTemplate 工具类实现

3.3.2 自定义序列化器

3.3.3 StringRedisTemplate

3.3.4 集群配置

3.3.4.1 刷新节点集群拓扑动态感应

四、RedisService 的封装


一、命令行客户端

  • h :指定要连接的 Redis 服务器的 IP 。

  • p :指定要连接的 Redis 的端口号。

二、图形界面的客户端

1. Redis Desktop Manager

官网为:https://resp.app/原来是 http://redisdesktop.com )。

2. RedisPlus

RedisPlus是为 Redis 可视化管理开发的一款开源免费的桌面客户端软件,支持 Windows 、Linux 、 Mac 三大系统平台, RedisPlus 提供更加高效、方便、快捷的使用体验,有着更加现代化的用户界面风格。RedisPlus的官网地址为 https://gitee.com/MaxBill/RedisPlus 。

3. Java 代码客户端

所谓Java 代码客户端就是一套操作 Redis 的 API ,其作用就像 JDBC 一样,所以 Java 代码客户端其实就是一个或多个 Jar 包,提供了对 Redis 的操作接口。

三、Java 客户端

3.1 SpringDataRedis

Spring Data Redis 是 Spring 框架提供的 数据访问抽象层,用于简化 Redis 在 Spring 应用中的使用。它不直接实现 Redis 通信,而是 整合 Jedis、Lettuce 等客户端,提供统一的 API 和更高级的功能,使开发者无需关心底层通信细节。

<!-- Spring Data Redis (默认使用 Lettuce) -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3.2 Jedis

1. 添加依赖

 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version>
</dependency>

2.  创建项目并建立连接

 
private Jedis jedis;@BeforeEachvoid setUp() {// 建立连接jedis = new Jedis("192.168.150.101", 6379);// 设置密码jedis.auth("123321");// 选择库jedis.select(0);}

3. 代码实现

 @Testvoid testString() {// 插入数据,方法名称就是redis命令名称,非常简单String result = jedis.set("name", "张三");System.out.println("result = " + result); // 获取数据String name = jedis.get("name");System.out.println("name = " + name);}

 4. 释放资源

@AfterEachvoid tearDown() {// 释放资源if (jedis != null) {jedis.close();}}

3.2.1 连接池的配置

Jedis 本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替 Jedis 的直连方式。

 public class JedisConnectionFactory {private static final JedisPool jedisPool;static {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();// 最大连接jedisPoolConfig.setMaxTotal(8);// 最大空闲连接jedisPoolConfig.setMaxIdle(8); // 最小空闲连接jedisPoolConfig.setMinIdle(0);// 设置最长等待时间, msjedisPoolConfig.setMaxWaitMillis(200);jedisPool = new JedisPool(jedisPoolConfig, "192.168.150.101", 6379,1000, "123321");}// 获取Jedis对象public static Jedis getJedis(){return jedisPool.getResource();}}

3.3 Lettuce

Lettuce是一个 Redis 的 Java 驱动包,Lettuce 翻译为生菜,没错,就是吃的那种生菜,所以它的 Logo 长这样:

相关文章:

【Redis】Redis 的常见客户端汇总

目录 一、命令行客户端 二、图形界面的客户端 三、Java 客户端 3.1 SpringDataRedis 3.2 Jedis 3.2.1 连接池的配置 3.3 Lettuce 3.3.1 RedisTemplate 工具类实现 3.3.2 自定义序列化器 3.3.3 StringRedisTemplate 3.3.4 集群配置 3.3.4.1 刷新节点集群拓扑动态感应…...

关于akka官方quickstart示例程序(scala)的记录

参考资料 https://doc.akka.io/libraries/akka-core/current/typed/actors.html#first-example 关于scala语法的注意事项 extends App是个语法糖&#xff0c;等同于直接在伴生对象中编写main 方法对象是通过apply方法创建的&#xff0c;也可以通过对象的名称单独创建&#x…...

2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]玄武实验室-安全工程师 1. 自我介绍 2. CSRF原理 3. Web安全入门时间 4. 学习Web安全的原因 …...

网站首页菜单两种布局vue+elementui顶部和左侧栏导航

顶部菜单实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Vue.js Element UI 路由导航</…...

AWS之迁移与传输服务

目录 一、迁移管理与规划类 二、应用程序迁移类 1. MGN的迁移范围(能替代的场景) ✅ 自动包含以下数据: 🔹 适用场景举例: 2. 仍需DMS或DataSync的场景(不可替代) ❌ DMS仍必要的情况: ❌ DataSync仍必要的情况: 3. 技术原理对比 MGN的数据迁移机制: DMS…...

@Builder的用法

Builder 是 Lombok 提供的一个注解&#xff0c;用于简化 Java 中构建对象的方式&#xff08;Builder 模式&#xff09;。它可以让你以更加简洁、链式的方式来创建对象&#xff0c;尤其适用于构造参数较多或部分可选的类。...

Unity3D 逻辑代码性能优化策略

前言 在Unity3D中优化逻辑代码性能是提升游戏流畅度的关键。以下是系统性的优化策略和示例&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一起交流一下开发经验呀&#xff01; 1. 避免高频操作中的开销 缓存组件引用 private …...

【Python Cookbook】文件与 IO(二)

文件与 IO&#xff08;二&#xff09; 6.字符串的 I/O 操作7.读写压缩文件8.固定大小记录的文件迭代&#xff08;⭐⭐&#xff09; 6.字符串的 I/O 操作 你想使用操作类文件对象的程序来操作文本或二进制字符串。 使用 io.StringIO() 和 io.BytesIO() 类来创建类文件对象操作…...

vue实现点击按钮input保持聚焦状态

主要功能&#xff1a; 点击"停顿"按钮切换对话框显示状态输入框聚焦时保持状态点击对话框外的区域自动关闭 以下是代码版本&#xff1a; <template><div class"input-container"><el-inputv-model"input"style"width: 2…...

[蓝桥杯]取球博弈

取球博弈 题目描述 两个人玩取球的游戏。 一共有 NN 个球&#xff0c;每人轮流取球&#xff0c;每次可取集合 n1,n2,n3n1​,n2​,n3​中的任何一个数目。 如果无法继续取球&#xff0c;则游戏结束。 此时&#xff0c;持有奇数个球的一方获胜。 如果两人都是奇数&#xff…...

Spring Security入门:创建第一个安全REST端点项目

项目初始化与基础配置 创建基础Spring Boot项目 我们首先创建一个名为ssia-ch2-ex1的空项目(该名称与配套源码中的示例项目保持一致)。项目需要添加以下两个核心依赖: org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-secur…...

[Java 基础]数组

什么是数组&#xff1f;想象一下&#xff0c;你需要存储 5 个学生的考试成绩。你可以声明 5 个不同的 int 变量&#xff0c;但这会显得很笨拙。数组提供了一种更简洁、更有组织的方式来存储和管理这些数据。 数组可以看作是相同类型元素的集合&#xff0c;这些元素在内存中是连…...

fastadmin fildList 动态下拉框默认选中

html页面 <td><select class"form-control dtselect" data-rule"required" data-dtselected"<%row.type%>" name"<%name%>[<%index%>][type]">{foreach nametypeList idvo}<option value"{$vo…...

java学习笔记——数组和二维数组

​​一、一维数组​​ ​​1. 定义数组​​ ​​语法​​: // 动态初始化(指定长度) 数据类型[] 数组名 = new 数据类型[长度]; // 示例: int[] arr1 = new int[5]; // 默认值:0// 静态初始化(直接赋值) 数据类型[] 数组名 = {元素1, 元素2, ...}; // 示例: String[]…...

‘pnpm‘ 不是内部或外部命令,也不是可运行的程序

npm install -g pnpm changed 1 package in 4s 1 package is looking for funding run npm fund for details C:\Users\gang>pnpm pnpm 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 原来是安装的全局路径被我改了 npm list -g --depth 0 把上述…...

Android Test2 获取系统android id

Android Test2 获取系统 android id 这篇文章针对一个常用的功能做一个测试。 在项目中&#xff0c;时常会遇到的一个需求就是&#xff1a;一台设备的唯一标识值。然后&#xff0c;在网络请求中将这个识别值传送到后端服务器&#xff0c;用作后端数据查询的条件。Android 设备…...

webpack打包学习

vue开发 现在项目里安装vue&#xff1a; npm install vue vue的文件后缀是.vue webpack不认识vue的话就接着安插件 npm install vue-loader -D 这是.vue文件&#xff1a; <template> <div><h2 class"title">{{title}}</h2><p cla…...

基于Java(Jsp+servelet+Javabean)+MySQL实现图书管理系统

图书管理系统 一、需求分析 1.1 功能描述 1.1.1“读者”功能 1&#xff09;图书的查询&#xff1a;图书的查询可以通过搜索图书 id、书名、作者名、出版社来实现,显示结果中需要包括书籍信息以及是否被借阅的情况&#xff1b; 2&#xff09;图书的借阅&#xff1a;借阅图书…...

服务器CPU被WMI Provider Host系统进程占用过高,导致系统偶尔卡顿的排查处理方案

问题现状 最近一个项目遇到一个非常奇葩的问题&#xff1a;正式服务器被一个WMI Provider Host的系统进程占用大量的CPU资源&#xff0c;导致我们的系统偶尔卡顿 任务管理器-详细信息中CPU时间&#xff0c;这个进程也是占用最多的 接口时不时慢很多 但单独访问我们的接口又正…...

JavaSwing之--JMenuBar

Java Swing之–JMenuBar(菜单栏) JMenuBar是 Java Swing 库中的一个组件&#xff0c;用于创建菜单栏&#xff0c;通常位于窗口的顶部。它是菜单系统的容器&#xff0c;用于组织和显示应用程序的菜单结构 菜单栏由菜单构成&#xff0c;菜单由菜单项或子菜单构成&#xff0c;也…...

vue3+elementplus表格表头加图标及文字提示

表头加自定义内容有很多种方法&#xff0c;包括使用el-icon&#xff0c;插槽&#xff0c;CSS 伪元素添加图标还有font-awesome等等。 一、方法一&#xff1a;使用render-header属性 <el-table :data"tableData"><el-table-column prop"name" la…...

【物联网-S7Comm协议】

物联网-S7Comm协议 ■ 调试工具■ S7协议-简介■ S7协议和modbusTCP协议区别■ OSI 层 S7 协议■ S7协议数据结构 &#xff08;TPKTCOTPS7Comm&#xff09;■ TPKT&#xff08;第五层&#xff1a;会话层&#xff09; 总共占4个字节■ COTP&#xff08;第六层&#xff1a;表示层…...

NLP中的input_ids是什么?

在自然语言处理(NLP)中,input_ids 是什么 在自然语言处理(NLP)中,input_ids 是将文本转换为模型可处理的数字表示后的结果,是模型输入的核心参数之一。 一、基本概念 文本数字化 原始文本(如 “Hello world!”)无法直接被模型处理,需要通过分词器(Tokenizer) 将其…...

LeetCode Hot100刷题——划分字母区间

763.划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。例如&#xff0c;字符串 "ababcc" 能够被分为 ["abab", "cc"]&#xff0c;但类似 ["aba", "bcc"…...

c++ 基于OpenSSL的EVP接口进行SHA3-512和SM3哈希计算

通过OpenSSL的EVP接口进行 SHA3-512 和 SM3 哈希计算 #include <iostream> #include <openssl/evp.h> #include <cstring>using namespace std;void PrintHex(const std::string &hexStr) {for (unsigned char c : hexStr){printf("%02x", c)…...

Vue3实现拖拽改变元素大小

代码实现 整体页面结构通过一个 dragResize-wrapper 包含左右两个区域&#xff0c;左侧区域包含一个可拖拽的边界。以下是关键代码 HTML 部分 <template><div class"dragResize-wrapper"><div class"dragResize-left"><div class&…...

Spring IoC 详解:原理、实现与实战

Spring IoC 详解&#xff1a;原理、实现与实战 前言 Spring IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;是Spring框架的核心基础。它通过解耦对象的创建与依赖关系管理&#xff0c;极大提升了系统的可维护性和扩展性。本文将系统梳理Spring IoC的原…...

深入Java NIO:构建高性能网络应用

引言 在上一篇文章中&#xff0c;我们介绍了Java网络编程的基础模型&#xff1a;阻塞式I/O和线程池模型。这些模型在处理高并发场景时存在明显的局限性。本文将深入探讨Java NIO&#xff08;New I/O&#xff09;技术&#xff0c;这是一种能够显著提升网络应用性能的非阻塞I/O模…...

数据分析后台设计指南:实战案例解析与5大设计要点总结

引言 数据于企业而言异常重要&#xff0c;企业通过数据可以优化战略决策&#xff0c;因此企业对数据的采集正趋向智能化、数字化&#xff0c;数据分析后台就是企业智能化、数字化记录、分析数据的渠道。本文分享一个数据分析后台原型实战案例&#xff0c;通过页面拆解总结原型…...

深度学习之模型压缩三驾马车:基于ResNet18的模型剪枝实战(1)

一、背景&#xff1a;为什么需要模型剪枝&#xff1f; 随着深度学习的发展&#xff0c;模型参数量和计算量呈指数级增长。以ResNet18为例&#xff0c;其在ImageNet上的参数量约为1100万&#xff0c;虽然在服务器端运行流畅&#xff0c;但在移动端或嵌入式设备上部署时&#xf…...