当前位置:   article > 正文

springboot框架(3):整合redis_springboot3 redis

springboot3 redis

前言

redis常用于缓存等场景。

操作步骤(key/value)

  1. 新建springboot项目
    方法一:创建是选择插件
    选择插件NoSQL>Spring Data Redis
    在这里插入图片描述
    方法二:直接引入依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  1. 编写测试用例,redis测试
package com.it2;

import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
class SpringbootRedis01ApplicationTests {
    @Test
    void set(@Autowired RedisTemplate redisTemplate) {
        ValueOperations ops = redisTemplate.opsForValue();
        ops.set("a","123");

    }

    @Test
    void get(@Autowired RedisTemplate redisTemplate) {
        ValueOperations ops = redisTemplate.opsForValue();
        System.out.println(ops.get("a"));

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  1. 编写配置文件application.yml 。(如果redis是本机的6379端口,并且没有密码,是不需要配置的)
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 运行测试用例
    存入
    在这里插入图片描述

读取
在这里插入图片描述

操作hash

    @Test
    void hset(@Autowired RedisTemplate redisTemplate){
        HashOperations ops=  redisTemplate.opsForHash();
        ops.put("key1","name","xiaowang");
        ops.put("key1","age","11");
    }

    @Test
    void hget(@Autowired RedisTemplate redisTemplate){
        HashOperations ops=  redisTemplate.opsForHash();
        System.out.println(ops.get("key1","name"));
        System.out.println(ops.entries("key1"));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

执行存储后,进行hget操作
在这里插入图片描述

RedisTemplate和StringRedisTemplate

前面我们的例子一直使用的RedisTemplate, 存入了一些数据,通过工具查看redis的内容,发现存入的数据是不是我们想要的,是一串乱码一样的内容。
在这里插入图片描述
查看RedisTemplate的源码发现,它有两个泛型参数,我们没有传递,所以两个参数默认是Object类型,所以这也就解释了demo里的字符串为什么是乱码一样的内容。

在这里插入图片描述

我们将demo修改,使用StringRedisTemplate

 @Test
    void set(@Autowired StringRedisTemplate redisTemplate) {
        ValueOperations ops = redisTemplate.opsForValue();
        ops.set("a","123");

    }

    @Test
    void get(@Autowired StringRedisTemplate redisTemplate) {
        ValueOperations ops = redisTemplate.opsForValue();
        System.out.println(ops.get("a"));

    }

    @Test
    void hset(@Autowired StringRedisTemplate redisTemplate){
        HashOperations ops=  redisTemplate.opsForHash();
        ops.put("key1","name","xiaowang");
        ops.put("key1","age","11");
    }

    @Test
    void hget(@Autowired StringRedisTemplate redisTemplate){
        HashOperations ops=  redisTemplate.opsForHash();
        System.out.println(ops.get("key1","name"));
        System.out.println(ops.entries("key1"));
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

再执行测试用例,查看数据,可以看到数据显示不乱码,得到了想要的数据。
在这里插入图片描述

redis客户端技术jedis切换

如何切换

  1. 首先导入jedis依赖
<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  1. 配置客户端类型
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    client-type: jedis  #配置客户端类型
  • 1
  • 2
  • 3
  • 4
  • 5

jedis客户端实现有两种,分别为lettuce和jedis,默认为lettuce。
如果有需要,可以继续向下设置jedis和lettuce的专属配置。
在这里插入图片描述
在这里插入图片描述

  1. 此时这就设置成功了。

lettuce和jedis区别

  • jedis连接Redis服务器是直连模式,当多线程连接下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用(会严重影响性能)
  • lettuce 基于netty框架进行与Redis服务器连接,底层设计中采用 StatefulRedisConnection,StatefulRedisConnection自身是线程安全的,可以保障并发访问安全问题,一个连接可以被多路复用。同时lettuce也支持多连接一起工作。
  • lettuce 是redis的默认客户端技术。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/388204
推荐阅读
相关标签
  

闽ICP备14008679号