Redis读写锁和分布式锁的项目实践
- 作者: 五速梦信息网
- 时间: 2026年03月21日 04:37
queryWrapper = Wrappers.lambdaQuery(ShortLinkDO.class)
.eq(ShortLinkDO::getGid, shortLinkGotoDO.getGid())
.eq(ShortLinkDO::getFullShortUrl, fullShortUrl)
.eq(ShortLinkDO::getEnableStatus, 0);
ShortLinkDO shortLinkDO = baseMapper.selectOne(queryWrapper); //数据库中不存在或者短链接已经过期则跳转404页面
if (shortLinkDO == null || (shortLinkDO.getValidDate() != null && shortLinkDO.getValidDate().before(new Date()))) {
//短链接已经过期
stringRedisTemplate.opsForValue().set(String.format(SHORT_LINK_IS_NULL_KEY, fullShortUrl), "-", 30, TimeUnit.MINUTES);
resp.sendRedirect("/page/notfound");
return;
}
// 缓存原始链接
stringRedisTemplate.opsForValue().set(String.format(GOTO_SHORT_LINK_KEY, fullShortUrl), shortLinkDO.getOriginUrl());
//预热缓存
stringRedisTemplate.opsForValue().set(
String.format(GOTO_SHORT_LINK_KEY, fullShortUrl),
shortLinkDO.getOriginUrl(),
LinkUtil.getShortLintCacheValidDate(shortLinkDO.getValidDate()),
TimeUnit.MILLISECONDS);
// 访问统计
shortLinkAccessStats(fullShortUrl, shortLinkDO.getGid(), req, resp);
// 跳转
resp.sendRedirect(shortLinkDO.getOriginUrl());
}
} finally {
lock. Unlock();
”`
- 上一篇: Redis持久化机制
- 下一篇: Redis连接与会话管理


