[转帖]springboot连接redis cluster(带密码)

springboot,连接,redis,cluster,密码 · 浏览次数 : 0

小编点评

**Spring Boot Redis Controller** 该代码是一个使用 Spring Boot 和 Redis 进行基于字符串的存储和获取的控制器。 **主要功能:** 1. 使用 `RedisTemplate` 获取并设置字符串值 "name" 到 Redis 中。 2. 从 Redis 中获取 "name" 字符串值。 3. 打印获取到的字符串值。 **代码分析:** ```java @Autowired private RedisTemplate redisTemplate; @GetMapping("/test") public String test() { // 设置 "name" 字符串值到 Redis 中 redisTemplate.opsForValue().set("name", "lizhao"); // 从 Redis 中获取 "name" 字符串值 String name = (String) redisTemplate.opsForValue().get("name"); // 打印获取到的字符串值 System.out.println(name); return name; } ``` **配置:** 代码中的 `pom.xml` 文件定义了 Spring Boot 项目的依赖项,包括 Redis 与 Spring Boot starter。 **运行:** 可以使用 `Spring Boot Run` 等工具启动 Spring Boot 项目,并访问 `localhost:8080` 端口访问控制器。 **运行结果:** 当您访问 `localhost:8080/test` 端口时,它将打印以下输出: ``` lizhao ``` **总结:** 该代码展示了如何使用 Spring Boot 和 Redis 进行字符串存储和获取。它通过在 Redis 中设置 "name" 字符串值,并从 Redis 中获取该值来实现字符串获取功能。

正文

https://www.cnblogs.com/fengzi7314/p/15427669.html

 

RedisConfig配置内容如下:

复制代码
package com.example.demo5.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;

@Configuration
@Component
public class RedisConfig {
    @Value("${spring.redis.cluster.nodes}")
    private String nodes;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;

    @Value("${spring.redis.jedis.pool.max-active}")
    private int maxActive;

    @Value("${spring.redis.jedis.pool.max-wait}")
    private long maxWait;

    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;


    //redis配置
    public JedisPoolConfig poolConfig(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWait);
        jedisPoolConfig.setMaxTotal(maxActive);
        jedisPoolConfig.setMaxIdle(maxIdle);
        return jedisPoolConfig;
    }


    //redis集群配置,6个ip以,分割,然后再以:分割
    public RedisClusterConfiguration redisClusterConfiguration(){
        RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
        String[] cNodes = nodes.split(",");
        Set<RedisNode> hp = new HashSet<>();
        for (String node : cNodes) {
            String[] split = node.split(":");
            hp.add(new RedisNode(split[0].trim(),Integer.valueOf(split[1])));
        }
        redisClusterConfiguration.setPassword(password);
        redisClusterConfiguration.setClusterNodes(hp);
        return redisClusterConfiguration;
    }

    //创建redis连接工厂
    public JedisConnectionFactory jedisConnectionFactory() {
        //集群模式
        JedisConnectionFactory  factory = new JedisConnectionFactory(redisClusterConfiguration(),poolConfig());
        return factory;
    }


    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        initDomainRedisTemplate(redisTemplate);
        return redisTemplate;
    }

    //初始化redis序列化
    private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
        //如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //这个地方有一个问题,这种序列化器会将value序列化成对象存储进redis中,如果
        //你想取出value,然后进行自增的话,这种序列化器是不可以的,因为对象不能自增;
        //需要改成StringRedisSerializer序列化器。
        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
        redisTemplate.setEnableTransactionSupport(true);
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
    }

}
复制代码

application.yaml文件内容为:

复制代码
spring:
  redis:
    cluster:
      nodes: 192.168.81.130:7001,192.168.81.130:7002,192.168.81.130:7003,192.168.81.130:7004,192.168.81.130:7005,192.168.81.130:7006
    password: 123
    jedis:
      pool:
        min-idle: 0
        max-active: 8
        max-wait: -1
        max-idle: 8
复制代码

controller内容为:

复制代码
package com.example.demo5.controller;

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


@RestController
public class RedisController {
    @Autowired
    private RedisTemplate redisTemplate;

    @GetMapping("/test")
    public String test(){
        redisTemplate.opsForValue().set("name", "lizhao");
        String name = (String) redisTemplate.opsForValue().get("name");
        System.out.println(name);
        return name;

    }
}
复制代码

pom文件为:

复制代码
<?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.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo5</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo5</name>
    <description>demo5</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.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </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>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </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>

与[转帖]springboot连接redis cluster(带密码)相似的内容:

[转帖]springboot连接redis cluster(带密码)

https://www.cnblogs.com/fengzi7314/p/15427669.html RedisConfig配置内容如下: package com.example.demo5.config; import org.springframework.beans.factory.annot

[转帖]Redis集群——SpringBoot连接Redis集群(带密码)

第一步,新建项目maven项目,添加依赖 (1)本文所采用的SpringBoot的版本如下 org.springframework.boot spring-boot-starter-parent

[转帖]Redis客户端Jedis、Lettuce、Redisson

https://www.jianshu.com/p/90a9e2eccd73 在SpringBoot2.x之后,原来使用的jedis被替换为了lettuce Jedis:采用的直连,BIO网络模型 Jedis有一个问题:多个线程使用一个连接的时候线程不安全。 解决思路是: 使用连接池,为每个请求创建

[转帖]SpringBoot配置SSL 坑点总结【密码验证失败、连接不安全】

文章目录 前言1.证书绑定问题2.证书和密码不匹配3.yaml配置文件问题3.1 解密类型和证书类型是相关的3.2 配置文件参数混淆 后记 前言 在SpringBoot服务中配置ssl,无非就是下载证书设置一下配置文件的问题,这里主要记录我在配置的过程中遇到的坑点。 如果是新手上道的话建议结合其他的

[转帖]Springboot 集成 micrometer(actuator/prometheus) 接口报 404

https://blog.csdn.net/qq_26545503/article/details/123313891 原因 主要是spring-boot版本和micrometer版本没有对应上,我用的spring-boot是2.6.0对应的micrometer就是1.8 需要修改两个地方 pom.

[转帖]SpringBoot之RedisTemplate操作redis出现\xAC\xED\x00\x05t\x00\x08乱码问题

http://qclog.cn/1118 在SpringBoot中使用RedisTemplate操作redis时,会出现\xAC\xED\x00\x05t\x00\x08这种乱码问题,特别是在使用中文时。原因是因为RedisTemplate中key和value的序列化方式都默认使用了jdk的序列化方

[转帖]SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!

2022-02-27 分类:Java 阅读(1872) 评论(0) GitHub 24k Star 的Java工程师成神之路,不来了解一下吗! 最近,有很多人再传说 SpringBoot要出3.0的版本了,并且宣布不再支持 Java 8,最低要求是 Java 17了。 其实,早在2021年9月份,关

[转帖]springboot指定端口的三种方式

https://blog.51cto.com/feirenraoyuan/5504099 第一配置文件中添加server.port=9090 第二在命令行中指定启动端口,比如传入参数 java -jar bootsample. jar -- server.port=9000 第三传入虚拟机系统属性

[转帖]Springboot容器化镜像设置堆内存大小

参考资料:Best Practices: Java Memory Arguments for Containers - DZone Java 有三种方式设置最大堆内存大小: 1. -Xmx 2. -XX:MaxRAMFraction, -XX:MinRAMFraction 3.-XX:MaxRAMP

[转帖]Springboot配置https访问

https://www.cnblogs.com/feifuzeng/p/14709372.html 介绍 该篇博文主要介绍如何配置Springboot使其打包部署的服务必须通过HTTPS协议才可访问,仅供内部研究使用。 生成https证书 要使用https,首先需要ssl证书,获取SSL证书有两种方