尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

设计一个「权限缓存专用」结构(User / Role / Permission 分离)

设计一个「权限缓存专用」结构(User / Role / Permission 分离)
📅 发布时间:2026/6/19 2:13:33

拆分

User = 基础信息 + 角色 + 权限

User → 基本信息(很稳定)
Role → 角色集合(中等频率)
Permission → 权限集合(高频变动)

public Set<String> getUserPermissions(Long userId) {

// 1️⃣ 查用户最终权限缓存(L2)
Set<String> perms = redis.get("user:perms:" + userId);
if (perms != null) {
return perms;
}

// 2️⃣ 查用户角色
List<Long> roleIds = getUserRoleIds(userId);

// 3️⃣ 聚合角色权限
Set<String> result = new HashSet<>();
for (Long roleId : roleIds) {
result.addAll(getRolePermissions(roleId));
}

// 4️⃣ 写入 user:perms(短 TTL)
redis.set(
"user:perms:" + userId,
result,
5,
TimeUnit.MINUTES
);

return result;
}

每一层缓存的职责(非常重要)

缓存负责什么变更时是否需要清
user:base 用户基本信息 只在改用户信息时
user:roles 用户角色 用户角色变更
role:perms 角色权限 改权限时只清这个
user:perms 用户最终权限 删即可,自动重建

🔥 场景 1:修改角色的权限

// 1️⃣ 清角色权限
delete("role:perms:" + roleId);

// 2️⃣ 清所有拥有该角色的用户最终权限
delete("user:perms:" + userId); // 批量

❌ 不需要动 user:base
❌ 不需要动 user:roles

🔥 场景 2:用户换角色

delete("user:roles:" + userId);
delete("user:perms:" + userId);

🔥 场景 3:用户改用户名 / 头像

delete("user:base:" + userId);

L1 / L2 在这个模型里的最佳实践

✅ L1(本地缓存)

  • 只缓存:

    • user:base

    • user:roles

    • role:perms

  • TTL 很短(30s~1min)

  • 用 Caffeine / Guava

❌ 不建议 L1 缓存 user:perms


✅ L2(Redis)

  • 所有 key 都在

  • user:perms 只在 Redis(短 TTL)

 

 

 

 

 

 

 

 

 
 

相关新闻

  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 兰州高考文化课怎么报名?2025年推荐 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构口碑排行榜 - 2025年品牌推荐榜

最新新闻

  • NETCANFD以太网转CANFD设备:工业通信互联互通的硬核解决方案
  • 实战解析:Hunyuan3D-2本地部署与云端方案深度对比,如何选择最适合你的3D生成环境?
  • HDLC总线模式冲突检测原理与MPC857T PowerQUICC实战配置
  • 软考备考资料分享
  • 如何免费搭建个人专属媒体中心?Jellyfin完整使用指南
  • SST39VF/LF并行NOR Flash在嵌入式低功耗高可靠系统中的应用与实战

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号