Redis 7.x 系列【3】多种连接方式

news2024/10/7 9:22:46

有道无术,术尚可求,有术无道,止于术。

本系列Redis 版本 7.2.5

源码地址:https://gitee.com/pearl-organization/study-redis-demo

文章目录

    • 1. 概述
    • 2. Redis Cli
    • 3. 可视化管理工具
      • 3.1 Redis Insight
      • 3.2 RedisDesktopManager
    • 4. 客户端库
      • 4.1 Jedis
      • 4.2 Lettuce
      • 4.3 Redission

1. 概述

官方文档

在上篇文档中已经部署好了 Redis ,接下来学习如何连接到 Redis

可以通过以下几种方式进行连接:

  • Redis Cli 命令行界面
  • 可视化管理工具
  • 编程语言客户端库

2. Redis Cli

官方提供了 redis-cli 工具,通过命令行界面和 Redis 进行交互,在安装目录中可以看到该工具:

在这里插入图片描述
操作示例:

[root@localhost bin]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set mykey "Hello"
OK
127.0.0.1:6379> get mykey
"Hello"

3. 可视化管理工具

3.1 Redis Insight

Redis Insight 是官方提供的一个可视化管理工具,支持连接 Redis Redis Stack ,支持 WindowsLinuxMacOS 操作系统。

在官方地址进行下载,选择系统、填写用户信息:

在这里插入图片描述
下载完成后直接安装即可,在首页选择添加连接:

在这里插入图片描述
填写主机IP、端口、密码后,点击添加:

在这里插入图片描述
自动跳转到连接列表:

在这里插入图片描述
Browser浏览页面可以查看到当前所有 Key 以及对应值的详细信息:

在这里插入图片描述

Workbench 工作台页面可以执行 Redis 命令:

在这里插入图片描述
Analysis Tools 页面可以查看一些监控信息:

在这里插入图片描述
Pub/Sub 页面可以订阅频道,向频道发布消息:

在这里插入图片描述

3.2 RedisDesktopManager

下载地址

RedisDesktopManager 是一个非官方的可视化管理工具,界面十分简洁,用起来很舒服,推荐一下。

在这里插入图片描述

4. 客户端库

Redis 几乎支持所有编程语言进行客户端连接:

在这里插入图片描述

Redis 官方提供了以下语言支持:

  • Python
  • C#/.NET
  • Node.js
  • Java
  • Go

其中 Java 客户端包含以下两种:

  • Jedis
  • Lettuce

4.1 Jedis

官方文档
GitHub地址

Jedis 是一个同步阻塞的 Redis Java 客户端库,其优点是简单易用、成熟稳定。使用同步阻塞的方式与 Redis 进行通信,在高并发场景下,性能不佳。此外Jedis 实例不是线程安全的,需要通过 JedisPool 连接池管理实例。

引入依赖:

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

连接并执行操作示例:

public class JedisTest {
    public static void main(String[] args) {
        // 创建连接池
        JedisPool pool = new JedisPool("localhost", 6379,"default","123456");
        // 获取客户端
        try (Jedis jedis = pool.getResource()) {
            // 存入一个字符串
            jedis.set("foo", "bar");
            System.out.println(jedis.get("foo"));   //Prints: bar

            // 存入一个Hash
            Map<String, String> hash = new HashMap<>();;
            hash.put("name", "John");
            hash.put("surname", "Smith");
            hash.put("company", "Redis");
            hash.put("age", "29");
            jedis.hset("user-session:123", hash);
            System.out.println(jedis.hgetAll("user-session:123"));  // Prints: {name=John, surname=Smith, company=Redis, age=29}
        }
    }
}

4.2 Lettuce

官方文档
GitHub地址

Lettuce 是一个可扩展的线程安全的 Redis Java 客户端库,可用于同步、异步和响应式,API 较为复杂抽象,所以学习成本较高。底层使用的是 Netty ,使用异步非阻塞的方式与 Redis 进行通信,在高并发场景下,性能更好。此外Lettuce 实例是线程安全的,无需额外处理线程同步问题。

引入依赖:

        <dependency>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
            <version>6.3.2.RELEASE</version> <!-- Check for the latest version on Maven Central -->
        </dependency>

连接并执行操作示例:

public class LettceTest {

    public static void main(String[] args) {
        // 创建客户端
        RedisClient redisClient = RedisClient.create("redis://localhost:6379");
        // 获取连接
        try (StatefulRedisConnection<String, String> connection = redisClient.connect()) {
            // 执行异步命令
            RedisAsyncCommands<String, String> asyncCommands = connection.async();

            // 存入一个字符串
            asyncCommands.set("foo", "bar").get();
            System.out.println(asyncCommands.get("foo").get()); // prints bar

            // 存入一个Hash
            Map<String, String> hash = new HashMap<>();
            hash.put("name", "John");
            hash.put("surname", "Smith");
            hash.put("company", "Redis");
            hash.put("age", "29");
            asyncCommands.hset("user-session:123", hash).get();

            System.out.println(asyncCommands.hgetall("user-session:123").get()); // Prints: {name=John, surname=Smith, company=Redis, age=29}
        } catch (ExecutionException | InterruptedException e) {
            throw new RuntimeException(e);
        } finally {
            redisClient.shutdown();
        }
    }
}

4.3 Redission

官方网站
GitHub地址

Redission 是一个高性能、异步无锁的 Redis Java 客户端库,基于 Netty 进行通信。Redission 提供了一些列的分布式服务工具,例如分布式对象、分布式锁、分布式任务调度、分布式数据数据处理、分布式会话集群等。

引入依赖:

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.31.0</version>
        </dependency>

连接并执行操作示例:

public class RedissonTest {

    public static void main(String[] args) {
        // 创建客户端对象
        Config config = new Config();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        RedissonClient redissonClient = Redisson.create(config);

        // 存入一个 Map
        RMap<String, String> rMap = redissonClient.getMap("rMap"); // 创建Map分布式对象
        rMap.put("name", "John"); // 存入数据
        rMap.put("surname", "Smith");
        rMap.put("company", "Redis");

        // 重新获取
        RMap<String, String> getMap = redissonClient.getMap("rMap");
        System.out.println(getMap);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI图书推荐:用ChatGPT按需DIY定制来赚钱

《用ChatGPT按需DIY定制来赚钱》ChatGPT Print Money Method &#xff0c;作者是Cindy Donovan 。 下面是图书概要&#xff1a; ### 第一章&#xff1a;什么是按需印刷以及ChatGPT如何使其变得简单易行&#xff1f; 本章介绍了按需印刷的商业模式&#xff0c;即仅在收到订单时…

解析工业制氮机的应用特点

工业制氮机&#xff0c;作为现代工业生产中不可或缺的重要设备&#xff0c;以其独特的工作原理和广泛的应用领域&#xff0c;为众多行业提供了高效、便捷的氮气制取方案。本文将详细探讨工业制氮机的应用特点&#xff0c;以便更好地了解其在工业生产中的重要作用。 工业制氮机具…

「51媒体」媒体邀约如何高效沟通?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 企业在做活动会议时&#xff0c;往往希望对活动信息或者公司品牌进行一个报道和曝光&#xff0c;那么如何有效且高效的完成与媒体的沟通呢&#xff1f;今天胡老师就来分享下这方面的一些…

【Spring】1. Maven项目管理

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

centos7 离线安装zip和unzip

解压的时候发现不能解压,报-bash: unzip: command not found 1、访问https://www.rpmfind.net/linux/rpm2html/search.php?query=zip&submit=Search+…&system=centos&arch=#/ 2、输入zip和centos搜索,选择el7下载 3、输入unzip和centos搜索,选择el7下载: 安…

【LLM之RAG】RAT论文阅读笔记

研究背景 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在各种自然语言推理任务上取得了显著进展&#xff0c;尤其是在结合大规模模型和复杂提示策略&#xff08;如链式思维提示&#xff08;CoT&#xff09;&#xff09;时。然而&#xff0c;LLMs 在推理的事实…

小程序简单版音乐播放器

小程序简单版音乐播放器 结构 先来看看页面结构 <!-- wxml --><!-- 标签页标题 --> <view class"tab"><view class"tab-item {{tab0?active:}}" bindtap"changeItem" data-item"0">音乐推荐</view><…

DAY5-力扣刷题

1.两两交换链表中的节点 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换…

ElasticSearch + kibana:类型声明

当我们使用 kibana 创建索引时&#xff0c;如果不申明数据类型&#xff0c;默认字符串赋予 text类型&#xff0c;如下图所示 接下来我们继续创建多条数据如下&#xff1a; 下面我们来检索下&#xff1a; 通过以上两个案例我们发现&#xff0c;使用 match 模糊查询 li-3 明明…

亚马逊、速卖通等跨境平台测评自养号有哪些好处?

测评自养号顾名思义就是自己用国外真实环境养出来的买家账号&#xff0c;通过国外的手机号、邮箱、真实收货地址&#xff0c;设备环境、当地的住宅IP注册和养出来的买手号 很多卖家都了解过自养号&#xff0c;注册一个账号成本就几块钱&#xff0c;账号又可以长期使用&#xf…

【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、图数据及其应用场景1.1 图数据的定义和特征1.2 常见的图数据结构1.2.1 社交网络1.2.2 知识图谱1.2.3 分子结构1.2.4 交通网络 1.3 图数据在不同领域的应用实例1.3.1 社交网络中的推荐系统1.3.2 知识图谱中的信息检索…

如何学习创建和使用 Java 归档(JAR)文件

1. 简介 JAR&#xff08;Java ARchive&#xff09;文件是一种用于打包多个Java类、资源文件和元数据的压缩文件格式。它在Java开发和发布过程中扮演着重要角色。通过使用JAR文件&#xff0c;开发者可以将应用程序的所有组件打包在一个文件中&#xff0c;方便分发和部署。 2. …

Visual Studio Code 配置教程,手把手教你如何配置

文章目录 引言1. 安装 VS Code1.1 下载和安装1.2 初次启动 2. 基本配置2.1 设置用户和工作区配置2.2 常用配置项 3. 安装和配置扩展插件3.1 安装扩展3.2 推荐扩展3.3 配置扩展 4. 主题和配色方案4.1 安装主题4.2 切换主题4.3 自定义配色方案 5. 版本控制集成5.1 配置 Git5.2 Gi…

COMSOL导入图片建模教程

研究背景 COMSOL Multiphysics作为多物理场仿真领域的高端软件&#xff0c;可允许用户通过建立数学模型来模拟和预测现实世界中的各种物理现象。将图片导入COMSOL软件进行建模&#xff0c;根植于现代科学研究和工程设计对高效、准确模拟技术日益增长的需求&#xff0c;它允许用…

【0008day】Shiny的介绍

介绍&#xff1a;Shiny 是一个开源 R 包&#xff0c;它提供了一个优雅而强大的 Web 框架&#xff0c;用于使用 R 构建 Web 应用程序。Shiny 可以帮助您将分析转变为交互式 Web 应用程序&#xff0c;而无需 HTML、CSS 或 JavaScript 知识。 # download R package pkgtest <-…

超分辨率开源库 GitHub 热门项目分享

超分辨率(Super-Resolution)就是将低分辨率(low resolution)的图像通过算法提升到高分辨率(high resolution)的过程。 超分辨率技术在多个领域有广泛应用&#xff0c;包括但不限于以下几个方面&#xff1a; 医疗成像&#xff1a;在医学影像中&#xff0c;超分辨率技术可以帮助…

手表化身车钥匙:智慧控车,优雅随行

智能汽车时代来临&#xff0c;传统车钥匙正在逐渐被取代。HUAWEI WATCH 4 Pro及HUAWEI WATCH Ultimate系列手表配对问界M9等&#xff0c;不仅可以化身 UWB 数字车钥匙&#xff0c;无感解锁车辆&#xff0c;还可以实现智能语音控车等功能&#xff0c;让你从容出行&#xff0c;优…

美国裸机云站群服务器使用指南

在当今数字化时代&#xff0c;网站和应用程序的稳定运行对于企业和个人都至关重要。为了满足日益增长的业务需求&#xff0c;裸机云站群服务器成为了一个理想的选择。以下是美国裸机云站群服务器的使用指南&#xff0c;帮助您更好地利用这一强大的云服务。 一、选择信誉良好的云…

【javaEE-有关CPU进程和线程实现的并发编程及二者的区别】

&#x1f525;&#x1f525;&#x1f525;有关进程并发编程开发的成本问题 这次之前其实我们所有的写的程序都是使用单核心来运行的&#xff0c;但是一般我们的计算机都有很多核心&#xff0c;如果我们编程的时候&#xff0c;只使用一个核心的话&#xff0c;其实这是一个非常大…

光功率计传感器

光探测仪表: 激光功率计探头按照不同的原理和材料分为热电堆型、光电二极管型以及包含两种传感器的综合探头, 激光能量计则有热释电传感器和热电堆传感器探头 激光功率计分为三种类 型 。 第一种类型为光 电 型 , 通过将光 能转换为 电 信 号来表征所接收 的 激光功率 大小 …