获取锁的客户端一旦崩溃,如果没有过期机制,其他客户端都降无法获取锁,造成死锁问题,因此要有必要的超时机制,设置过期时间可以通过以下代码
//给baike 设置过期时间 ,单位是milliseconds stringRedisTemplate.expire("baike",1000 , TimeUnit.MILLISECONDS);
但是如果程序在设置过期时间的代码之前,赋值代码之后出错,还是会导致死锁问题。因此可以让赋值和设置过期时间变成一个原子操作,用以下命令:
//向redis里存入数据和设置缓存时间 stringRedisTemplate.opsForValue().setIfAbscent("baike", "100", 1000, TimeUnit.MILLISECONDS);