当前位置: 首页 > news >正文

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

拆分

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)

 

 

 

 

 

 

 

 

http://www.rkmt.cn/news/123229.html

相关文章:

  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 兰州高考文化课怎么报名?2025年推荐 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构口碑排行榜 - 2025年品牌推荐榜
  • 造船行业液压系统气动高压球阀技术应用指南:螺纹式高压球阀、BKH高压球阀、RKH高压球阀、不锈钢高压球阀、卡套式高压球阀 - 优质品牌商家
  • 12.19 - A
  • Day33rem简介与基本使用
  • 如何免费的快速修复 Xbox 无线手柄板机不回弹的故障 All In One
  • es: minimum_should_match的作用
  • 2025最新虾青素保健品PQQ口服抗衰产品公司首推育培生:循证医学赋能,精准守护健康本源 - 全局中转站
  • opencode_桌面版_windows
  • 使用 kali 进行 wifi 密码破解渗透 M芯片Mac+utm虚拟机环境
  • 第十六
  • 通达信判断是指数
  • 第十七
  • 10.31澳洲网安法规与现有法规对比
  • IOI 2026 中国国家集训队作业(试题泛做)个人题解
  • 20251218
  • Manacher 算法详解:线性时间求最长回文子串
  • 搜维尔科技:全新上线!Xsens Link机器人套装和Xsens Humanoid软件:专为机器人创新者打造
  • Linux核心命令 - 十里
  • 北京托福机构怎么选?2025最新推荐+避坑指南,冲分党必看! - 品牌测评鉴赏家
  • 搜维尔科技:远程机器人领域的终极触觉手套SenseGlove R1
  • 托福一对一机构怎么选?2025高分提分攻略与避坑指南(附口碑机构测评) - 品牌测评鉴赏家
  • 2025托福培训机构亲测推荐!避坑指南+高性价比方案全汇总 - 品牌测评鉴赏家
  • P2055 [ZJOI2009] 假期的宿舍
  • 托福备考不迷路!这些宝藏辅导机构请查收 - 品牌测评鉴赏家
  • 区间最值与区间历史最值
  • 雅思报班不迷路!这些机构值得重点关注 - 品牌测评鉴赏家
  • 2025 雅思培训机构怎么选?这 5 大核心指标帮你避坑 - 品牌测评鉴赏家
  • 2025年舟山服务好的广播电台广告折扣选哪家,户外led大屏广告/公交广告/地铁广告/电视台广告/广播电台广告联系电话哪个好 - 品牌推荐师