9.Spring 整合 Redis

  • 引入依赖:spring-boot-starter-data-redis
  • 配置 Redis:配置数据库参数、编写配置类,构造 RedisTemplate
  • 访问 Redis:
redisTemplate.opsForValue()
redisTemplate.opsForHash()
redisTemplate.opsForList()
redisTemplate.opsForSet()
redisTemplate.opsForZSet()

1.引入依赖

        
			org.springframework.boot
			spring-boot-starter-data-redis
		

2.配置 Redis

2.1 配置数据库参数

# RedisProperties
spring.redis.database=2
spring.redis.host=localhost
spring.redis.port=6379

2.2 编写配置类,构造 RedisTemplate

在 config 配置包下新建 RedisConfig 配置类:

  •  添加注解 @Configuration
  • 添加 @Bean
  • 返回 RedisTemplate
  • 访问数据库需要创建连接(而连接是由连接工厂创建),注入连接工厂,在方法上声明连接工厂(Spring 容器自动把 Bean 注入)
  • 实例化 Bean
  • 把工厂设置给 Bean:具备了访问数据库能力
  • 配置序列化方式,最终把数据存入 redis 中:设置key的序列化方式(字符串)、设置value的序列化方式(JSON)、设置hash的key的序列化方式、设置hash的value的序列化方式
package com.example.demo.config;

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;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        // 设置key的序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // 设置value的序列化方式
        template.setValueSerializer(RedisSerializer.json());
        // 设置hash的key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // 设置hash的value的序列化方式
        template.setHashValueSerializer(RedisSerializer.json());

        //触发参数
        template.afterPropertiesSet();
        return template;
    }
}

3.访问 Redis

编写测试类代码:

  • 注入 RedisTemplate
  • 访问字符串
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = DemoApplication.class)
public class RedisTests {

    @Autowired
    private RedisTemplate redisTemplate;

    //String 访问方式
    @Test
    public void testStrings() {
        //声明 key
        String redisKey = "test:count";

        redisTemplate.opsForValue().set(redisKey, 1);

        System.out.println(redisTemplate.opsForValue().get(redisKey));
        System.out.println(redisTemplate.opsForValue().increment(redisKey));
        System.out.println(redisTemplate.opsForValue().decrement(redisKey));
    }
}

9.Spring 整合 Redis_第1张图片

你可能感兴趣的:(论坛系统,个人论坛系统,spring,boot,spring,mvc,mybatis,redis,kafka,elasticsearch)