一、引入Maven依赖
<!-- redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二、配置Redis相关信息
spring:
redis:
host: 192.168.1.152
port: 6870
password: 2503
database: 0
三、增加Redis配置类
/**
* 为了解决乱码问题
*/
@Configuration
public class RedisConfig {
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate redisTemplateInit() {
//设置序列化Key的实例化对象
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置序列化Value的实例化对象
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
}
四、使用RedisTemplate
@RestController
@RequestMapping("/article")
public class ArticleEntityController {
/**
* 通过SpringBoot提供的RedisTemplate操作Redis数据库
*/
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/list")
public String list() {
// 设置reids值
redisTemplate.opsForValue().set("redis_key", "存放在redis里的值");
// 取出redis值
String redis_key = (String) redisTemplate.opsForValue().get("redis_key");
return redis_key;
}
}
五、RedisTemplate常用方法
// 添加key/value
redisTemplate.opsForValue().set("redis_key", "存放在redis里的值");
// 添加key/value并且设置过期时间,具备原子性
redisTemplate.opsForValue().set("redis_key", "存放在redis里的值", 20, TimeUnit.SECONDS);
// 取出redis值
String redis_key = (String) redisTemplate.opsForValue().get("redis_key");
// 判断是否存在key
Boolean hasKey = redisTemplate.hasKey("redis_key");
// 删除key
Boolean delete = redisTemplate.delete("redis_key");
// 顺序递增,可用于分布式主键生成
Long index = redisTemplate.opsForValue().increment("index");
// 执行lua脚本
String key = "index";
String value = "UUID";
stringRedisTemplate.opsForValue().set(key, value);
DefaultRedisScript redisScript = new DefaultRedisScript<>();
redisScript.setLocation(new ClassPathResource("lua/delete_key.lua"));
redisScript.setResultType(Long.class);
Long execute = stringRedisTemplate.execute(redisScript,
(RedisSerializer) stringRedisTemplate.getKeySerializer(),
(RedisSerializer) stringRedisTemplate.getKeySerializer(),
Lists.newArrayList(key), value);
System.out.println("执行结果: " + execute);
六、RedisTemplate和StringRedisTemplate的区别
1、RedisTemplate默认采用的是JDK的序列化策略,存入的key/value会将数据先序列化成字节数组然后在存入Redis数据
2、StringRedisTemplate默认采用的是String的序列化策略,存入的key/value直接以字符串明文形式存储,当我们存储的数据是字符串时使用
3、还有需要注意的是,使用RedisTemplate存入的数据必须使用RedisTemplate取出,否则就是获取到null。StringRedisTemplate同理。
@各位掘金的小伙伴,如有任何Java技术方面疑问可私聊本人(wx:haostudydaydayup),一起探讨一起进步。