SpringBoot-03-整合Redis

我是小周,一个怀揣梦想的年轻人,希望我的文章对你的学习能够有启发

用Java来操作Redis。

Jedis和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而SpringDataRedis又对这两种做了抽象和封装。在SpringBoot项目中使用SpringDataRedis来操作Redis,本质还是Jedis和Lettuce。

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做

SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis
提供了对不同Redis客户端的整合(Lettuce和Jedis)

提供了RedisTemplate统一API来操作Redis

支持Redis的发布订阅模型
支持Redis哨兵和Redis集群
支持基于Lettuce的响应式编程
支持基于JDK.JSON.字符串.Spring对象的数据序列化及反序列化
支持基于Redis的JDKCollection实现
SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中

1.创建S

pringBoot项目
选择SpringDataRedis的maven坐标

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

在这里插入图片描述

2.配置yml文件

spring:
	redis:
	host: 192.168.150.101
	port: 6379
	password: 123321
	lettuce:
		pool:
			max-active: 8 #最大连接
			max-idle: 8 #最大空闲连接
			min-idle: 0 #最小空闲连接
			max-wait: 100ms #连接等待时间

3.创建RedisConfig

/**
 * Redis配置类
 */
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 创建RedisTemplate对象
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        // 设置连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        // 设置key的序列化方式
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringRedisSerializer);
        redisTemplate.setHashKeySerializer(stringRedisSerializer);

        // 设置value的序列化方式
        GenericJackson2JsonRedisSerializer jsonRedisSerializer =new GenericJackson2JsonRedisSerializer();
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);

        return redisTemplate;
    }
}

4.编写test类

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

import java.util.ArrayList;
import java.util.List;

@SpringBootTest
class Redis01ApplicationTests {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Test
    void contextLoads() {
           //赋值
        redisTemplate.opsForValue().set("name", "njitzx");
       //拿到值
        String name = (String) redisTemplate.opsForValue().get("name");

        System.out.println(name);
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        redisTemplate.opsForList().leftPush("list", list);
        List<Object> list1 = redisTemplate.opsForList().range("list", 0, -1);
        list1.forEach(System.out::println);
    }

}

运行结果:
在这里插入图片描述