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