SpringBoot 项目 整合Redis

news2024/11/25 7:49:23

一、java连接单机redis🍉

1.创建一个普通的maven工程🥝

在这里插入图片描述

2.引入依赖🥝

在这里插入图片描述

 <dependencies>
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.8.0</version>
    </dependency>
  </dependencies>

3.测试🥝

在这里插入图片描述

使用其他命令方法
在这里插入图片描述
代码:

import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class aaa {
    public static void main(String[] args) {
        //把所有关于对redis的操作都封装到一个类中jedis
        Jedis jedis = new Jedis("192.168.179.129",6379);
        //测试连通性
        String ping = jedis.ping();
        System.out.println(ping);

        //关于字符串操作
        //存入数据 setnx 设置过期时间 20L
        jedis.setex("k1",20L,"阿娇");
        //获取数据
        String k1 = jedis.get("k1");
        System.out.println(k1);
        //存入数据先判断是否存在不存在则存入存入则不存入  setnx
        Long setnx = jedis.setnx("k2", "aj");
        System.out.println(setnx);

        //获取所有key的值
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        //删除数据del
        Long del = jedis.del("k1", "k2", "k3");
        System.out.println("删除的个数"+del);

        //关于hash的操作
        //存入数据hset
        jedis.hset("k4","name","阿娇");
        //获取数据hget
        String hget = jedis.hget("k4", "name");
        System.out.println(hget);


        HashMap<String, String> map = new HashMap<String, String>();
        map.put("name","阿娇");
        map.put("age","18");
        map.put("sex","女");
        //存入map类型的数据
        jedis.hset("k5",map);
        //获取指定key的所有value数据
        Map<String, String> k5 = jedis.hgetAll("k5");
        System.out.println(k5.get("name"));
    }
}

特点: Jedis把对redis的操作都封装到Jedis类对象中了,而每个命令封装了一个对应的方法。

二、java通过连接池连接redis🍉

连接池的作用: 减少频繁创建和销毁连接对象。

在这里插入图片描述

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.time.Duration;

public class Bbb {
    public static void main(String[] args) {
        //配置链接对象信息
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //设置最小的空闲数
        poolConfig.setMinIdle(5);
        //当没人连接redis服务器时,该池子中最多能空闲几个连接对象
        poolConfig.setMaxIdle(10);
        //当没有人连接redis服务时,最大能生成多少个连接对象
        poolConfig.setMaxTotal(15);
        //最大等待时间
       poolConfig.setMaxWait(Duration.ofSeconds(10));

        //创建连接池对象
        JedisPool jedisPool = new JedisPool(poolConfig, "192.168.179.129", 6379);
        long start = System.currentTimeMillis();

        //从连接池获取连接对象
        for (int i=0;i<1000;i++){
            Jedis jedis = jedisPool.getResource();
            jedis.ping();
            //把给对象还给连接池
            jedis.close();
        }
        long l = System.currentTimeMillis();
        System.out.println("耗时:"+(l-start));

    }
}

三、 java连接redis集群🍉

在这里插入图片描述

在这里插入图片描述

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

import java.util.HashSet;

public class Ccc {
    public static void main(String[] args) {
        //必须开启集群模式 连接所有端口
        HostAndPort hostAndPort1 = new HostAndPort("192.168.179.129", 7001);
        HostAndPort hostAndPort2 = new HostAndPort("192.168.179.129", 7002);
        HostAndPort hostAndPort3 = new HostAndPort("192.168.179.129", 7003);
        HostAndPort hostAndPort4 = new HostAndPort("192.168.179.129", 7004);
        HostAndPort hostAndPort5 = new HostAndPort("192.168.179.129", 7005);
        HostAndPort hostAndPort6 = new HostAndPort("192.168.179.129", 7006);
        HashSet<HostAndPort> sets = new HashSet<>();
        sets.add(hostAndPort1);
        sets.add(hostAndPort2);
        sets.add(hostAndPort3);
        sets.add(hostAndPort4);
        sets.add(hostAndPort5);
        sets.add(hostAndPort6);
        JedisCluster jedisCluster = new JedisCluster(sets);
        jedisCluster.set("k1","v1");
    }

}

在这里插入图片描述

四、 SpringBoot整合Redis🍉

springboot对redis的操作封装到模板类中RedisTemplate和StringRedisTemplate。StringRedisTemplate是Redistemplate的子类,它只能往redis中存放字符串类型。

1.创建Springboot工程🥝

在这里插入图片描述

2.引入依赖🥝

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>redis-02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>redis-02</name>
    <description>redis-02</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3.配置信息🥝

在这里插入图片描述

#redis的配置信息--单机
spring.redis.host=192.168.179.129
spring.redis.port=6379

4.测试🥝

在这里插入图片描述

package com.lzq;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.ClusterOperations;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

import java.util.Map;
import java.util.Set;

@SpringBootTest
class Redis02ApplicationTests {
    //springboot创建好该类对象 并交于IOC容器管理
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Test
    void contextLoads() {
        //操作key
        Boolean k2 = redisTemplate.hasKey("k2");
        System.out.println("判断k2是否存在:"+k2);
        Set<String> keys = redisTemplate.keys("*");
        System.out.println("所有的key:"+keys);
        Boolean k5 = redisTemplate.delete("k5");
        System.out.println("是否删除成功:"+k5);

        //字符串的操作----redisTemplate类中对于每一种数据类型的操作,单独封装了方法
        ValueOperations<String, String> aaa = redisTemplate.opsForValue();
        aaa.set("k1","阿娇");
        String k1 = aaa.get("k1");
        System.out.println("获取k1对应的的value值:"+k1);

        //setnx判断是否存在 不存在则存入
        aaa.setIfAbsent("k1","小芳");
        aaa.setIfAbsent("k2","小希");
        System.out.println(aaa.get("k1"));
        System.out.println(aaa.get("k2"));

        //hash 类型操作
        HashOperations<String, Object, Object> bbb = redisTemplate.opsForHash();
        bbb.put("k3","name","阿娇");
        bbb.put("k3","age","18");

        Object o = bbb.get("k3", "name");
        System.out.println("name:"+o);

        Map<Object, Object> k3 = bbb.entries("k3");
        System.out.println(k3);
    }

}

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

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

相关文章

【Docker镜像部署】镜像方式部署登录服务验证码无法刷出问题

背景 auth服务本地部署&#xff0c;验证码正常显示。但是一旦镜像部署则会报错。 Dockerfile文件如下 FROM daocloud.io/library/java:8-jre-alpine MAINTAINER zzjs # 时区问题 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo Asia/Shanghai >/e…

第四章 数组

前言 学习方法 可以多看几遍视频把上课的代码&#xff0c;自己加加注释&#xff0c;在自己写之前&#xff0c;可以画一个流程图照着流程图把代码自己实现一遍 不要怀疑自己&#xff0c;不要遇到困难就觉得自己不行&#xff0c;遇到困难就解决困难&#xff0c;编程初学者都是…

php代码审计8之SSRF

文章目录 1、关注函数2、SSRF支持的协议2.1、http/https&#xff1a;2.2、file&#xff1a;2.3、dict&#xff1a;2.4、gopher&#xff1a;2.5、ftp/ftps&#xff1a;2.6、tftp&#xff1a;2.7、imap/imaps/pop3/smtp/smtps&#xff1a;2.8、telnet&#xff1a; 3、绕过3.1、读…

flask.send_file实现文件下载、文件传输和二进制流传输

文章目录 flask.send_file函数常用参数描述url直接下载文件flask.send_file文件传输本地文件传输二进制流传输 在使用flask框架时&#xff0c;我们有时需要向前端传输文件。或者需要用户访问一个url时直接下载文件。这时可以使用flask.send_file()函数来实现相关的操作。 flask…

HarmonyOS学习路之开发篇—设备管理(控制类小器件)

控制类小器件开发概述 基本概念 控制类小器件指的是设备上的LED灯和振动器。其中&#xff0c;LED灯主要用作指示&#xff08;如充电状态&#xff09;、闪烁功能&#xff08;如三色灯&#xff09;等&#xff1b;振动器主要用于闹钟、开关机振动、来电振动等场景。 运作机制 控…

Spring Boot 中的 @RefreshScope 注解是什么,原理,如何使用

Spring Boot 中的 RefreshScope 注解是什么&#xff0c;原理&#xff0c;如何使用 在 Spring Boot 中&#xff0c;RefreshScope 注解是一个非常有用的注解。它可以让 Spring Boot 应用程序在运行时重新加载配置。这意味着您可以在不停止和重新启动应用程序的情况下更改配置。在…

大宇无限:一家中国初创企业的出海之旅

如果一家中国企业想要拓展海外市场&#xff0c;那么应该如何开启自己的出海之旅&#xff1f; 大宇无限的出海之路 作为一家互联网科技领域的初创企业&#xff0c;大宇无限的出海之旅对那些想要拓展海外业务的中国企业来说&#xff0c;无疑有着极佳的学习价值和借鉴意义。 “大宇…

WebAssembly:让Istio变得更强大

1 Wasm为Envoy带来新的扩展性 Envoy是一个高性能、可编程的L3/L4和L7网络代理&#xff0c;许多服务网格和网关都采用Envoy作为数据面。 Envoy通过监听器&#xff08;Listener&#xff09;捕获网络数据包&#xff0c;根据数据包的内容匹配某个过滤器链&#xff08;Filter Chai…

工作方法 - 戒定慧

风动、旗动&#xff0c;以及两种冰球棍的摆法 戒。就是戒律&#xff0c;知道边界。 在一个公司的工作中&#xff0c;就是知道我们的核心目标&#xff0c;核心资源&#xff0c;核心用户都是什么。 不是什么热闹都去凑&#xff0c;没有资源去做的事情也去做&#xff0c;非核心用…

记录--多行标签超出展开折叠功能

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 记录分享每一个日常开发项目中的实用小知识&#xff0c;不整那些虚头巴脑的框架理论与原理&#xff0c;之前分享过抽奖功能、签字功能等&#xff0c;有兴趣的可以看看本人以前的分享。  今天要分…

Squid代理服务器(传统代理、透明代理)

Squid代理服务器&#xff08;传统代理、透明代理&#xff09; 一、Squid代理服务器1、代理的工作机制2、代理的类型3、使用代理的好处 二、安装Squid服务2、修改 Squid 的配置文件3、Squid 的运行控制4、编写 Squid 服务脚本 三、构建传统代理服务器1、squid服务器2、web1的配置…

libevent实践02:读取标准输入的数据

对于libevent的知识一点不了解&#xff0c;通知编写测试代码&#xff0c;发现问题&#xff0c;解决问题&#xff0c;一步一步入门学习。 CMakeLists.txt文件&#xff1a; project(libevent_project) cmake_minimum_required(VERSION 3.8)message(STATUS "lkmao:CMAKE_SOU…

Redis高可用群集---搭建(主从、哨兵、Cluster)

目录 Redis 高可用集群Redis 主从复制Redis 哨兵模式Redis 集群模式 Redis 高可用集群 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redi…

# YourKit Java Profiler 教程

YourKit Java Profiler 教程 文章目录 YourKit Java Profiler 教程本教程软件版本说明YourKitIntelliJ Idea 系统要求探查器体系结构探查器代理探查器用户界面 开始分析集成环境集成IntelliJ Idea 安装插件IntelliJ Idea分析 解决性能问题性能瓶颈优化内存使用内存泄漏垃圾分配…

数据结构 | 双向链表

一、数据结构定义 /* 链表结点 */ typedef int ListType; typedef struct node {ListType data; // 存放整型数据struct node* llink, * rlink; // 指向前驱和后继结点的指针 } *Node;/* 双向链表头结点 */ typedef struct headNode {struct node* head, * tail; // 指向双向链…

IP 扫描程序:轻松发现、扫描和跟踪 IP 空间

什么是 IP 扫描 IP 扫描是实时持续监控网络 IP 地址空间的过程。包括 ICMP ping 扫描和 SNMP 扫描在内的网络协议数量用于扫描网络中的 IP 地址。网络管理员依靠 IP 扫描程序轻松检查和管理 IP 地址空间。使用网络 IP 扫描程序进行 IP 扫描可查看 IP 地址空间利用率和性能。 …

C# 使用CefSharp控件 High DPI问题的解决

使用CefSharp控件&#xff0c;在部分高分辨率的电脑中&#xff08;显示缩放比例非100%&#xff0c;而是120%或者125%等&#xff09;会出现以下一些情况&#xff1a; 显示的页面中出现了黑边&#xff0c;且按钮定位也偏了&#xff0c;比如点击【图层】按钮&#xff0c;需要点击上…

selenium用法

一、请求库selenium selenium是一个自动化测试工具&#xff0c;而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题。操作浏览器模拟人的行为。 下载浏览器驱动&#xff1a;以谷歌浏览器为例---->谷歌浏览器驱动&#xff08;版本号对应&#xff09; …

K8S应用生命周期管理

K8S应用生命周期管理. 1 应用周期管理1.1 资源对象1.1.1 基础知识1.1.2 资源属性 1.2 Pod基础1.2.1 Pod概述1.2.2 简单实践1.2.3 流程解读1.2.4 应用解析1.2.5 初始化容器1.2.6 Sidecar实践1.2.7 静态POD实践 1.3 Pod进阶1.3.1 Pod探测机制1.3.2 命令探测1.3.3 TCP探测1.3.4 HT…