92、Redis ------- 使用 Lettuce 操作 Redis 的方法和步骤----(文字讲解无代码)

lettuce :英语的意思:生菜
是一个用来操作redis的框架,springboot内置默认支持的也是 lettuce ,也可以自己改成 jedis
Jedis 也是一个用来操作redis的框架

在这里插入图片描述

★ Lettuce的核心API

  • RedisURI:用于封装Redis服务器的URI信息。

  • RedisClient:代表Redis客户端,如果连接Cluster模式的Redis,则使用RedisClusterClient。
    有点类似于redis-cli工具。

  • StatefulConnection<K,V>:代表Redis连接的父接口,它派生了不少子接口来代表不同的连接。

  • RedisCommands:用于执行Redis命令的接口,它的方法几乎覆盖了Redis的所有命令(前面介绍的那些命令全部都支持)
    它的方法名和Redis命令名也是一一对应的,肯定一看就会,
    比如Redis对操作Hash对象提供了hmset命令,那RedisCommands就支持hmset()方法,
    它派生了一个RedisPubSubCommands<K,V>子接口,用于运行消息发布/订阅的命令。

★ Lettuce编程步骤:

使用Lettuce操作Redis的大致步骤如下:

(1)定义RedisURI(有点类似于数据库的URL),再以RedisURI为参数,创建RedisClient(普通单机模式的redis)或RedisClusterClient(集群模式的redis)对象

(2)调用 RedisClient 或 RedisClusterClient 的 connectXxx()方法 连接Redis服务器,根据所连接的Redis服务器的状态不同,该方法返回 StatefulRedisXxxConnection 连接对象

(3)调用StatefulRedisXxxConnection连接对象的sync()、async()或reactive()方法创建同步、异步或反应式模式的RedisCommands对象

sync:同步        async :异步        reactive:反应式

(4)调用RedisCommands执行Redis命令。这一步是变化最多的,因为RedisCommands可以执行Redis的全部命令

(5)关闭资源,就是关闭连接。关闭资源时按照惯例“先开后闭”,因此先关闭与Redis的连接对象,再关闭RedisClient对象。

redis的编程步骤:定义URI(指定连接的服务器) → 创建Client → 与服务器建立连接 → 创建RedisCommands 对象 → 通过 RedisCommands 对象来执行命令 → 关闭资源

★ 构建RedisURI:

Lettuce提供了如下三种方式来构建RedisURI:

方法1:调用静态的create()方法。这种方式要求把所有的连接信息都写在create()方法的String参数中。
该String参数既支持单机模式的Redis,也支持集群模式的Redis,也支持哨兵模式的Redis。

方法2: 调用Builder来构建。这种构建方式下,所有信息都通过Builder对应的方法逐项传入,因此可读性最好,这也是我所推荐的方式。

方法3: 调用构造器来构建。这种方式是最不灵活的方式,因为它只能传入3个构造器参数,通过该方式构建RedisURI之后还需要调用它的setter方法对它进行设置,这种方式是最差的一种。

官网中用Builder对应的方法构建RedisURI
用梯子的话能更好的访问官网,但是此刻的官网进不去了,在维护
在这里插入图片描述

★ 从RedisClient 到 StatefulConnection 连接对象

——用于获取与Redis服务器的连接

以RedisURI为参数,调用RedisClient(或 RedisClusterClient 用于集群)的create()静态方法即可创建RedisClient(或RedisClusterClient)对象。

根据Redis运行模式调用RedisClient或RedisClusterClient对象对应的connectXxx()方法获取StatefulConnection连接对象。

StatefulConnection提供如下常用子接口:

根据各种子接口,用来返回各种连接对象,如单机、集群、主从、哨兵
StatefulRedisConnection: 最基本的Redis连接。
StatefulRedisPubSubConnection: 带消息发布/订阅功能的Redis连接。
StatufulRedisMasterSlaveConnection: 主从模式的Redis连接。
StatefulRedisSentinelConnection: 哨兵模式的Redis连接。

在这里插入图片描述
**主从模式:**相当于redis有两个节点:主节点和从节点,主要是向主节点进行操作,如果主节点挂掉了,从节点顶上,从节点主要是提供一个数据备份的功能。

**哨兵模式:**对主、从节点进行监视,当主节点出问题的时候,可以再从众多节点里面再找一个主节点出来。

★ 从StatefulConnection 到 RedisXxxCommands对象

调用 StatefulRedisXxxConnection连接对象 的以下三个方法来创建 RedisXxxCommands对象

sync(): 创建同步模式的RedisCommands对象。
async(): 创建异步模式的RedisAsyncCommands对象。
reactive(): 创建反应式模式的RedisReactiveCommands对象。

RedisCommands的作用类似于redis-cli.exe工具,用于执行各种Redis命令。
其中RedisAsyncCommands是异步版本,而RedisReactiveCommands则是反应式版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/146965.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石⑤

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石⑤ 第十九章 驱动程序基石⑤19.9 mmap19.9.1 内存映射现象与数据结构19.9.2 ARM架构内存映射简介19.9.2.1 一级页表映射过程19.9.2.2 二级页表映射过程 19.9.3 怎么给APP新建一块内存映射19.9.3.1 mmap调用过程19.9.3.2 cach…

数据结构:简单记录顺序表、链表、栈、队列

初学者很容易认为顺序表、链表、栈、队列是四种并列的数据结构&#xff0c;其实仔细想想并不是。 注意区分&#xff1a; 顺序表和链表是指数据的存储结构&#xff0c;是线性表的一种&#xff0c;顺序表一般指的就是数组&#xff0c;数据存储的逻辑顺序和物理顺序都是连续的&a…

nodejs+vue交通违章查询及缴费elementui

第三章 系统分析 10 3.1需求分析 10 3.2可行性分析 10 3.2.1技术可行性&#xff1a;技术背景 10 3.2.2经济可行性 11 3.2.3操作可行性&#xff1a; 11 3.3性能分析 11 3.4系统操作流程 12 3.4.1管理员登录流程 12 3.4.2信息添加流程 12 3.4.3信息删除流程 13 第四章 系统设计与…

Django模板加载与响应

前言 Django 的模板系统将 Python 代码与 HTML 代码解耦&#xff0c;动态地生成 HTML 页面。Django 项目可以配置一个或多个模板引擎&#xff0c;但是通常使用 Django 的模板系统时&#xff0c;应该首先考虑其内置的后端 DTL&#xff08;Django Template Language&#xff0c;D…

Git使用【下】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;标签管理理解标签标签运用 …

Grander因果检验(格兰杰)原理+操作+解释

笔记来源&#xff1a; 1.【传送门】 2.【传送门】 前沿原理介绍 Grander因果检验是一种分析时间序列数据因果关系的方法。 基本思想在于&#xff0c;在控制Y的滞后项 (过去值) 的情况下&#xff0c;如果X的滞后项仍然有助于解释Y的当期值的变动&#xff0c;则认为 X对 Y产生…

插入排序与希尔排序

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 这两个排序在思路上有些相似&#xff0c;所以有人觉得插入排序和希尔排序差别不大&#xff0c;事实上&#xff0c;他们之间的差别不小&#xff0c;插入排序只是希尔排序的最后一步。 目录 前言&#xff1a;…

华为数通方向HCIP-DataCom H12-831题库(单选题:161-180)

第161题 某台路由器Router LSA如图所示,下列说法中错误的是? A、本路由器已建立邻接关系 B、本路由器为DR C、本路由支持外部路由引入 D、本路由器的Router ID为10.0.12.1 答案: B 解析: 一类LSA的在transnet网络中link id值为DR的route id ,但Link id的地址不是10.0.12.…

对pyside6中的textedit进行自定义,实现按回车可以触发事件。

以下方法不算最优解。因为这个ui文件很容易重新编译&#xff0c;使写在ui.py里面的代码被删掉。 所以更好的方法应该是在主代码当中单独定义控件。并且使用布局添加控件到界面中。 以下内容纯为旧版实现&#xff0c;仅供参考&#xff1a; 我的实现方法是&#xff0c;先用qt de…

学信息系统项目管理师第4版系列15_资源管理基础

1. 项目资源 1.1. 实物资源 1.1.1. 着眼于以有效和高效的方式&#xff0c;分配和使用完成项目所需的实物资源 1.1.2. 包括设备、材料、设施和基础设施 1.2. 团队资源 1.2.1. 人力资源 1.2.2. 包含了技能和能力要求 2. 人力资源管理 2.1. 不仅是组织中最重要的资源之一&…

设计模式之抽象工厂模式--创建一系列相关对象的艺术(简单工厂、工厂方法、到抽象工厂的进化过程,类图NS图)

目录 概述概念适用场景结构类图 衍化过程业务需求基本的数据访问程序工厂方法实现数据访问程序抽象工厂实现数据访问程序简单工厂改进抽象工厂使用反射抽象工厂反射配置文件衍化过程总结 常见问题总结 概述 概念 抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种将相…

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数&#xff08;例如磁盘IO&#xff09;&#xff0c;提高…

Shapiro-Francia正态检验

Shapiro-Francia检验是一种用于检验数据是否来自正态分布的统计方法。它是Shapiro-Wilk检验的一个变种&#xff0c;通常适用于小到中等样本大小的数据集。Shapiro-Francia检验的核心思想是通过计算统计量来评估数据的正态性。 Shapiro-Francia检验的零假设是数据来自正态分布&…

26 docker前后端部署

[参考博客]((257条消息) DockerNginx部署前后端分离项目(SpringBootVue)的详细教程_在docker中安装nginx实现前后端分离_这里是杨杨吖的博客-CSDN博客) (DockerNginx部署前后端分离项目(SpringBootVue)) 安装docker # 1、yum 包更新到最新 yum update # 2、安装需要的软件包…

JavaSE | 初识Java(七) | 数组 (下)

Java 中提供了 java.util.Arrays 包 , 其中包含了一些操作数组的常用方法 代码实例&#xff1a; import java.util.Arrays int[] arr {1,2,3,4,5,6}; String newArr Arrays.toString(arr); System.out.println(newArr); // 执行结果 [1, 2, 3, 4, 5, 6] 数组拷贝 代码实例…

cf 解题报告 01

E. Power of Points Problem - 1857E - Codeforces 题意&#xff1a; 给你 n n n 个点&#xff0c;其整数坐标为 x 1 , … x n x_1,\dots x_n x1​,…xn​&#xff0c;它们位于一条数线上。 对于某个整数 s s s&#xff0c;我们构建线段[ s , x 1 s,x_1 s,x1​], [ s , x…

C语言结构体指针学习

结构体变量存放内存中&#xff0c;也有起始地址&#xff0c;定义一个变量来存放这个地址&#xff0c;那这个变量就是结构体指针&#xff1b; typedef struct mydata{int a1;int a2;int a3; }mydata;void CJgtzzView::OnDraw(CDC* pDC) {CJgtzzDoc* pDoc GetDocument();ASSERT…

npm ,yarn 更换使用国内镜像源,淘宝源

背景 文章首发地址 在平时开发当中&#xff0c;我们经常会使用 Npm&#xff0c;yarn 来构建 web 项目。但是npm默认的源的服务器是在国外的&#xff0c;如果没有梯子的话。下载速度会特别慢。那有没有方法解决呢&#xff1f; 其实是有的&#xff0c;设置国内镜像即可&#x…

基于web的医院预约挂号系统/医院管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

如何解决版本不兼容Jar包冲突问题

如何解决版本不兼容Jar包冲突问题 引言 “老婆”和“妈妈”同时掉进水里&#xff0c;先救谁&#xff1f; 常言道&#xff1a;编码五分钟&#xff0c;解冲突两小时。作为Java开发来说&#xff0c;第一眼见到ClassNotFoundException、 NoSuchMethodException这些异常来说&…