【Redis】windows上安装的Redis,并在springboot中配置并且连接详细(排坑)

发布时间:2024年01月15日

比如在开发测试阶段,为了方便就直接使用自己windows装好redis进行简单测试了,在项目中不去单独配置yam的redis属性可以正常操作,但是在springboot的yam中配置redis连接属性时候却连不上,特意记录一下方便后续再遇到能快速解决

一、Redis配置文件位置(windows)

一般情况下,打开Redis安装目录中的redis.windows.conf文件,打开

这里面有几个配置

1.1 配置外网访问: 搜一下关键字bind

#bind 127.0.0.1生效,就只能本机访问redis 我们修改为: bind 0.0.0.0
#bind 127.0.0.1
bind 0.0.0.0

1.2 配置Redis密码: 搜一下关键字requirepass foobared

#找到requirepass所在行,回车另起一行,输入requirepass 你的密码
# requirepass foobared
requirepass 123456  //此处注意,行前不能有空格

1.3 配置Redis端口: 搜一下关键字port 6379

#默认端口为 6379 我们可以自定义
port 6379

1.4 配置后重启Redis服务

找到redis所在的目录,将redis注册为服务

redis-server.exe --service-install redis.windows.conf 

windows+R打开运行,在运行中输入

services.msc

找到后重启 才能生效

1.5 验证是否成功更改

redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456

注:无论密码正确与否,这个命令都是可以进入redis的,但是如果密码错误,命令是不会执行的。
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379>
只有密码正确,指令才能执行。

如果密码未生效,也可以临时设置:

config set requirepass  123456

二、springboot项目相关的Redis配置以及工具类

2.1 pom依赖添加

        <!-- Redis 配置中使用了Lettuce连接工厂,需要Commons Pool 2来支持连接池-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.7.3</version>
        </dependency>

2.2 yam配置

spring:
  redis:
    # 地址
    host: 192.168.1.135
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 0
    # 密码
    password: 123456
    # 连接超时时间
    timeout: 10s
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 0
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池的最大数据库连接数
        max-active: 8
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms

2.3 配置序列化方式 RedisConfig

在 Spring Boot 项目中,使用 RedisTemplate 来与 Redis 进行交互,默认情况下,RedisTemplate 使用的是 JdkSerializationRedisSerializer 来序列化对象,这会将对象序列化为字节流存储到 Redis 中。

那么为什么要修改 Redis 的序列化方式呢?

1.默认的 JdkSerializationRedisSerializer 是二进制的,不易于人工阅读和调试,而 StringRedisSerializer 则以字符串形式存储数据,更加直观。
2.在某些情况下,使用默认的序列化方式可能会导致一些问题,比如在 Redis 中存储对象时,如果对象的类结构发生变化,反序列化时可能出现类型转换异常。
因此,通过修改 RedisTemplate 的序列化方式,我们可以更好地控制数据的存储格式,提高代码的可读性和可维护性,并解决一些潜在的序列化问题。


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
文章来源:https://blog.csdn.net/qq_48424581/article/details/135600649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。