在 Spring-Boot 中使用 Redis 基本上只需要简单几步操作即可
集成 Redis
实际上只需要添加 Redis 依赖以及增加 Redis 连接设置即可
- 配置
pom.xml
文件<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency>
-
配置
application.yml
文件spring: redis: database: 0 host: 127.0.0.1 port: 6379 password: 123456
至此就可以开始使用 Redis 了,是不是简单的有点惊讶
简单字符串存取 StringRedisTemplate
public class RedisTest {
@Resource
private StringRedisTemplate stringRedisTemplate;
public void test() {
stringRedisTemplate.opsForValue().set("Hello", "World");
String value = stringRedisTemplate.opsForValue().get("Hello");
System.out.println(value);
}
}
存储 String-Object 形式对象结构,并序列化为 JSON 格式
我们不仅仅需要存储 String-String 形式的对象结构,有时候我们也需要存储一个对象,这里就需要使用 redisTemplate
,而其使用的是 JDK 的序列化,存储的是二进制字节码,不方便直接在 Redis 中查看,我们可以使用 JACKSON 来代替存储序列化。
@Configuration
public class RedisConfiguration {
/**
* redisTemplate 序列化使用的jdk Serializeable, 存储二进制字节码, 所以自定义序列化类
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 设置value的序列化规则和 key的序列化规则
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
public class RedisTest {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public void testObject() {
RedisVo redisVo = new RedisVo();
redisVo.setId(1);
redisVo.setValue("test");
redisTemplate.opsForValue().set("Hello", redisVo);
RedisVo value = (RedisVo) redisTemplate.opsForValue().get("Hello");
System.out.println(value);
}
}
class RedisVo {
private int id;
private String value;
//省略getter setter
}
这样存储后就可以在 Redis Desktop Manager
、 redisclient
等 Redis 桌面管理工具中直观的查看存储的内容了
模糊删除 key 以固定前缀开头的所有数据
Set<String> keys = redisTemplate.keys("REDIS_HEADER" + "*");
redisTemplate.delete(keys);
发表评论
沙发空缺中,还不快抢~