Redistemplate的特点是:
集成步骤:
引入pom 版本号依赖父版本号;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
第二步:配置文件,我直接配置在application.xml中
spring.redis.port=6379
spring.redis.host=127.0.0.1
spring.redis.database=0
第三步:直接引用就可以;
@RestController
@RequestMapping("test")
public class RedisControllerTest {
@Resource
private RedisTemplate redisTemplate;
@RequestMapping("getvalue")
public String getkeyvalue() {
redisTemplate.opsForValue().set("1112", "我是redis测试");
Object o = redisTemplate.opsForValue().get("1112");
return o.toString();
}
}
扩展:若用redis实现分布式锁
可以编写一个工具类,这里面可以写加锁,释放锁,给锁设定时间等工具类方法,
我这里就写了一个加锁:
实现思路:先判断key 非空,然后判断能不能get到key,若get到了,判断key的时间,若是永久的就设定5秒,
若没有get到key 就证明可以加锁,亲测可用;
@Component
public class DistributeLock {
@Autowired
private RedisTemplate redisTemplate;
public boolean lock(String keyName) {
//先判断key是否为空
if (keyName == null) {
return false;
}
// 判断能否获取key,若不为空就是有key-锁
if (redisTemplate.opsForValue().get(keyName) != null) {
//这里添加一步,防止锁的时间
Long expireSeconds = redisTemplate.getExpire(keyName);
if (expireSeconds == -1) {
redisTemplate.expire(keyName, 5, TimeUnit.SECONDS);
}
return false;
}
//若程序走到这里就证明里面是没有锁的,然后加锁;
try {
if (redisTemplate.opsForValue().setIfAbsent(keyName, keyName)) {
redisTemplate.expire(keyName, 5, TimeUnit.SECONDS);
return true;
} else {
return false;
}
} catch (Exception e) {
return false;
}
}
}
未完待续。。。