1. 缓存
Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。
把频繁访问的数据放在内存中,可以减少对后端数据库的访问压力。如热点数据缓存(明星出轨),对象缓存、全页缓存、可以提升热点数据的访问速度。
SET user:1001 "{name: 'Alice', age: 30}" EX 3600 #设置1小时过期时间
2.分布式锁
日常开发中,我们经常会使用Redis做为分布式锁。可以在分布式系统中协调多节点对共享资源的访问,确保操作的原子性。
用redisson写了个分布式锁模板:
public <T> T executeWithLock(String lockKey, long timeout, Callable<T> action) {
RLock lock = redissonClient.getLock(lockKey);
boolean isLock = false;
try {
// 尝试获取锁,最大等待时间1秒,锁自动释放时间为timeout秒
isLock = lock.tryLock(1, timeout, TimeUnit.SECONDS);
if (isLock) {
try {
// 执行传入的操作并返回结果
return action.call();
} finally {
// 检查是否持有锁再释放
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
} else {
System.out.println("未能获取锁,稍后重试");
return null; // 或者抛出异常
}
} catch (InterruptedException e) {
// 处理异常,恢复线程中断状态
Threa