1. 启动redis服务

因为我们需要使用redis数据库,所以你必须在本地或者远程服务器启动redis服务。

远程启动:需要开启外网访问6379端口(redis服务默认开启的端口)的权限,具体的启动步骤可以自行百度。(这里我使用的是阿里云服务器!)

2. 新建maven项目

当然你也可以选择新建springboot项目,没啥区别!

在这里插入图片描述

3. 添加依赖

在这里插入图片描述

<dependencies>
    <!-- 操作redis的依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <version>2.6.7</version>
    </dependency>
    <!--注意此处依赖,缺少会导致工具类中注入redisTeplate实例失败-->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.4</version>
    </dependency>

    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
        <version>1.18.24</version>
    </dependency>

    <!-- test组件 进行测试用的-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <version>2.6.7</version>
    </dependency>
</dependencies>
  • 如果报如下错误,需要再添加一个依赖 commons-pool2

2023-10-23 17:08:19.907 [main] ERROR org.springframework.boot.SpringApplication:856 - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘redisUtils’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘redisTemplate’ defined in class path resource [sany/scc/api/config/RedisConfig.class]: Unsatisfied dependency expressed through method ‘redisTemplate’ parameter 0; neste

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.9.0</version>
</dependency>

4. 完善配置文件(application.yml)

在这里插入图片描述

spring:
  # 配置redis
  redis:
    host: xxx.xxx.xxx.xx # 填写localhost或者远程的ip
    port: 6379
    # 设置默认操作的数据库
    database: 14
    # 超时时间
    timeout: 10000ms
    password: xxxxxxxxxxxx # 填写你的redis服务密码
    lettuce:
      pool:
        # 最大的连接数
        max-active: 8
        # 连接阻塞时间,默认-1
        max-times: 10000ms
        # 最大空闲连接,默认8
        max-idle: 200
        min-idle: 0

5. 测试

在这里插入图片描述

  • 查看redis的可视化工具

因为我们的yml文件配置,默认操作14号数据库,所以我们查看14号数据库即可。

在这里插入图片描述
出现了乱码问题!!!

6. 解决乱码问题

因为没有对redis做序列化配置,所以才会出现这样的原因。

如果没有做序列化配置,当我们存储复杂对象时候也会出现乱码或者其他异常问题。所以使用redis必须做序列化配置

进行序列化配置,注意别少了jackson-databind依赖!
在这里插入图片描述
代码如下:

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        //key 采用String的序列化的方式
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //value的序列化采用jackson
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        //hash的 key也采用String序列化的方式
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        //hash的value也采用jackson
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        //注入连接工厂
        redisTemplate.setConnectionFactory(factory);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

7. 再次测试

在这里插入图片描述
在这里插入图片描述
Redis数据库没有乱码了,好耶!!!

8. redis的正确使用

redis一般是通过工具类来进行操作!

  • 工具类
    在这里插入图片描述
  • 测试工具类
    在这里插入图片描述

工具类的编写可以参考一下操作:java与redis的实现
java的hash操作
java的list操作
java的set操作
sorted set操作
Geo操作
Stream操作

  • 查看redis的可视化工具
    在这里插入图片描述
    至此,Java引入redis大功告成!!!
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐