- 引入依赖:spring-boot-starter-data-redis
- 配置 Redis:配置数据库参数、编写配置类,构造 RedisTemplate
- 访问 Redis:
redisTemplate.opsForValue()
redisTemplate.opsForHash()
redisTemplate.opsForList()
redisTemplate.opsForSet()
redisTemplate.opsForZSet()
1.引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
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 {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> 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 {@Autowiredprivate RedisTemplate redisTemplate;//String 访问方式@Testpublic void testStrings() {//声明 keyString 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));}
}