重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

    • 6.3 整合 Redis

6.3 整合 Redis


1、创建新项目编写 application.properties 配置文件

# redis 配置
spring.data.redis.host=192.168.1.4
spring.data.redis.port=6379
  • 如果不知道主机号的请执行下面代码找到 192.168 开头的局域网地址
ifconfig

image-20240614152448336

2、创建 RedisTestController 测试类

package com.zhong.redis.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName : RedisTestController
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-14 15:13
 */
@RestController
public class RedisTestController {
    @Autowired
    StringRedisTemplate redisTemplate;

    @GetMapping("/count")
    public String count() {
        Long count = redisTemplate.opsForValue().increment("count");
        // TODO 常见数据类型 k:v value可以有很多类型
        //
        //  string: 普通字符串:  redisTemplate.opsForValue()
        //  list    列表:       redisTemplate.opsForList()
        //  set:    集合:       redisTemplate.opsForset()
        //  zset:   有序集合:    redisTemplate.opsForzset()
        //  hash:   map结构:    redisTemplate.opsForHash()
        
        return "访问了[ " + count + " ]次";
    }
}

3、运行后浏览器访问 地址 刷新测试

http://localhost:8080/count

image-20240614152240264

4、查看虚拟机的 Docker 中的 Redis 是否响应

image-20240614152032884

  • Redis 的常用操作演示
package com.zhong.redis;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;

@SpringBootTest
class Boot307RedisApplicationTests {
    // TODO 常见数据类型 k:v value可以有很多类型
    //
    //  string: 普通字符串:  redisTemplate.opsForValue()
    //  list    列表:       redisTemplate.opsForList()
    //  set:    集合:       redisTemplate.opsForset()
    //  zset:   有序集合:    redisTemplate.opsForzset()
    //  hash:   map结构:    redisTemplate.opsForHash()
    @Autowired
    StringRedisTemplate redisTemplate;

    @Test
    void testSting() {
        redisTemplate.opsForValue().set("name", "张三");
        String name = redisTemplate.opsForValue().get("name");
        System.out.println(name);
    }

    @Test
    void testList() {
        String listName = "listtest";
        redisTemplate.opsForList().leftPush(listName, "1");
        redisTemplate.opsForList().leftPush(listName, "2");
        redisTemplate.opsForList().leftPush(listName, "3");
        String leftPop = redisTemplate.opsForList().leftPop(listName);
        Assertions.assertEquals("3", leftPop);
    }

    @Test
    void testSet() {
        String setName = "settest";
        redisTemplate.opsForSet().add(setName, "1");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "3");
        Boolean aBoolean = redisTemplate.opsForSet().isMember(setName, "2");
        Boolean bBoolean = redisTemplate.opsForSet().isMember(setName, "5");
        Assertions.assertTrue(aBoolean);
        Assertions.assertFalse(bBoolean);
    }

    @Test
    void testZset() {
        String setName = "zsettest";
        redisTemplate.opsForZSet().add(setName, "小钟", 100);
        redisTemplate.opsForZSet().add(setName, "小王", 99);
        redisTemplate.opsForZSet().add(setName, "小小", 1);
        redisTemplate.opsForZSet().add(setName, "小大", 2);

        ZSetOperations.TypedTuple<String> popMax = redisTemplate.opsForZSet().popMax(setName);
        String value = popMax.getValue();
        Double score = popMax.getScore();
        System.out.println(value + "====>" + score);
    }

    @Test
    void testHash() {
        String setName = "amap";
        redisTemplate.opsForHash().put(setName,"name","张三");
        redisTemplate.opsForHash().put(setName,"age","18");
        Object name = redisTemplate.opsForHash().get(setName, "name");
        System.out.println(name);
    }

}
  • 运行结果

image-20240614160328275

  • 利用可视化工具查看 redis 一定要刷新才有值可视化工具可以参考这篇文章 Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)_redisinsight安装-CSDN博客
https://blog.csdn.net/weixin_56050344/article/details/139242706?spm=1001.2014.3001.5502

image-20240614160428441

image-20240614160655375

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【V8引擎】 V8引擎如何运行JS的

文章目录 概要什么是V8引擎为什么需要V8引擎比较常见的javascript引起有哪些呢&#xff1f;V8引擎是如何工作的&#xff08;V8引擎的解析过程&#xff09;V8引擎的做了哪些优化 概要 本篇文章主要是讲V8引擎如何运行JS&#xff0c;对运行JS做了哪些优化 什么是V8引擎 V8 是一…

IOC (一)

》》新建一个CORE 控制台程序 注册服务 》》 安装 Microsoft.Extensions.DependencyInjection using Microsoft.Extensions.DependencyInjection;namespace ConsoleApp1 {internal class Program{static void Main(string[] args){Method();Console.ReadKey();}static void…

LVGL:

LVGL&#xff08;little video graphics library&#xff09;是一个开源的嵌入式图形库&#xff0c;提供高性能、低资源占用的图形用户界面&#xff08;GUI&#xff09;。具有模块化&#xff08;项目工程源码&#xff09;设计&#xff0c;可以在多平台使用&#xff08;如微处理…

SSM母婴用品交流系统-计算机毕业设计源码05772

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 母婴用品交流系统&#xff0c;主要的模块包括查看首页、轮播图管理、通知公告管理、资源管理&#xff08;母婴资讯、资讯分类&#xff09;、交…

网络爬虫概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 网络爬虫&#xff08;又被称为网络蜘蛛、网络机器人&#xff0c;在某社区中经常被称为网页追逐者&#xff09;&#xff0c;可以按照指定的规则&#…

【动态规划】| 路径问题之不同路径 力扣62

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;动态规划 &#x1f397;️ 如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/unique-paths/description/ 通常动态规划的题目有…

【RAM】利用AWS Resource Access Manager服务实现与其他账户共享AWS资源

文章目录 1. 先决条件说明2. 导航至ARM控制面板3. 指定资源共享详细信息4. 关联托管式权限5. 向委托人授予访问权限6. 查看和创建7. 查看由我共享的资源8. 资源共享详细信息9. 取消关联10. 参考链接11. 生成式AI书籍推荐&#x1f4e2; 1. 先决条件说明 报错现象&#xff1a; …

【PL理论】(24) C- 语言:有块的作用域 | 更新的语法 | 新的语义域 | 环境 vs. 内存

&#x1f4ad; 写在前面&#xff1a;我们将再次扩展之前的C语言&#xff0c;让我们向这种语言引入“作用域”的概念。 目录 0x00 C- 语言&#xff1a;有块的作用域 0x01 C- 语言&#xff1a;更新的语法 0x02 新的语义域 0x03 环境 vs. 内存 0x00 C- 语言&#xff1a;有块的…

干部考评系统如何评估干部表现

一、引言 干部考评系统是现代组织管理中不可或缺的一部分&#xff0c;它通过科学、公正、客观的方式对干部的表现进行评估&#xff0c;为干部的选拔、培养、激励和约束提供有力依据。本文旨在探讨干部考评系统如何有效评估干部表现。 二、干部考评系统的构建 明确考评目标&a…

Go-知识并发控制RWMutex

Go-知识并发控制RWMutex 1. 介绍2. 原理2.1 读写锁的数据结构2.2 接口定义2.3 Lock() 写锁定 原理2.4 Unlock() 写锁定解锁 原理2.5 RLock() 读锁定 原理2.6 RUnlock() 读锁定解锁 原理 3. 场景分析3.1 写锁定如何阻塞写锁定3.2 写锁定如何阻塞读锁定3.3 读锁定如何阻塞写锁定3…

QT 5.14.2 应用程序打包

我们可以直接通过开发工具预览我们的程序。但是当要把开发好的程序给别人使用的时候&#xff0c;我们就需要把程序打包成可执行的exe&#xff0c;然后把这个exe文件和其他相关的文件一起发给别人&#xff0c;这样别人就可以使用了。 一、生成可独立运行的exe (一)、编译程序的…

调教LLaMA类模型没那么难,LoRA将模型微调缩减到几小时

简介&#xff1a; 调教LLaMA类模型没那么难&#xff0c;LoRA将模型微调缩减到几小时 LoRA 微调方法&#xff0c;随着大模型的出现而走红。 最近几个月&#xff0c;ChatGPT 等一系列大语言模型&#xff08;LLM&#xff09;相继出现&#xff0c;随之而来的是算力紧缺日益严重。虽…

移动端消息中心,你未必会设计,发一些示例出来看看。

APP消息中心是一个用于管理和展示用户收到的各种消息和通知的功能模块。它在APP中的作用是提供一个集中管理和查看消息的界面&#xff0c;让用户能够方便地查看和处理各种消息。 以下是设计APP消息中心的一些建议&#xff1a; 1. 消息分类&#xff1a; 将消息按照不同的类型进…

【网络编程】多进程服务器端

并发服务器的实现 多进程服务器:通过创建多个进程提供服务多路复用服务器:通过捆绑并统一管理IO对象提供服务。多线程服务器:通过生成与客户端等量的线程提供服务。、 理解进程process 定义&#xff1a;占用内存空间的正在运行的程序。 CPU核和进程数&#xff1a;1个CPU 中…

电机控制安全:PWM 直通

在 H 桥中使用互补 PWM 时的一个主要考虑因素是短路的可能性&#xff0c;也称为“击穿”。 如图 5 所示&#xff0c;如果同一支路上的两个开关同时打开&#xff0c;H 桥配置可能会导致电源和接地之间发生直接短路。 如果同一条腿上的两个开关同时打开&#xff0c;则可能会发生…

ConcurrentHashMap如何保证线程安全?

ConcurrentHashMap 是 HashMap 的多线程版本&#xff0c;HashMap 在并发操作时会有各种问题&#xff0c;比如死循环问题、数据覆盖等问题。而这些问题&#xff0c;只要使用 ConcurrentHashMap 就可以完美解决了&#xff0c;那问题来了&#xff0c;ConcurrentHashMap 是如何保证…

EvaluLLM: LLM Assisted Evaluation of Generative Outputs论文阅读

Abstract 随着大型语言模型&#xff08;LLM&#xff09;能力的迅速提升&#xff0c;衡量自然语言生成&#xff08;NLG&#xff09;系统输出质量变得越来越困难。传统的指标如BLEU和ROUGE依赖于参考数据&#xff0c;通常不适用于需要创造性或多样化输出的任务。人工评估是一种选…

救命!接手了一个老项目,见到了从业10年以来最烂的代码!

后台回复“书籍”&#xff0c;免费领取《程序员书籍资料一份》 后台回复“5000”&#xff0c;免费领取面试技术学习资料一份 在程序员这个行业从业快10年了&#xff0c;每过几个月回头看看自己写的代码&#xff0c;都会觉得写的也太烂了&#xff0c;不敢想象是自己之前写的。…

官网首屏:太漂亮了,真是着了它的魔,上了它的道。

大气的企业官网致力于提供用户友好的界面和优质的用户体验。网页经过精心设计和开发&#xff0c;旨在展示客户的品牌形象和产品信息&#xff0c;并为用户提供便捷的服务和沟通渠道。 官网设计追求简洁、美观、易用的原则&#xff0c;以吸引用户的注意力并提供清晰的导航和信息…

【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux

前言 在私域知识问答和企业知识工程领域&#xff0c;结合Retrieval-Augmented Generation&#xff08;RAG&#xff09;模型和大型语言模型&#xff08;LLM&#xff09;已成为主流方法。然而&#xff0c;企业中存在着大量的PDF文件&#xff0c;PDF解析的低准确性显著影响了基于…