当前位置: 首页 > 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.jsqmd.com/news/111613/

相关文章:

  • 10大经典盈利模式 - 智慧园区
  • 缓存优化L1L2
  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构评估报告:顶尖推荐与深度分析 - 2025年品牌推荐榜
  • 兰州高考文化课怎么报名?2025年推荐 - 2025年品牌推荐榜
  • 2025年12月兰州寒假辅导机构排行Top5 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构口碑排行榜 - 2025年品牌推荐榜
  • 兰州高考文化课集训推荐:2025年优质机构盘点 - 2025年品牌推荐榜
  • Codeforces Round 1067 (Div. 2) E Sink
  • 使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
  • 强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
  • 妙妙计算1
  • Python中的super()
  • 造船行业液压系统气动高压球阀技术应用指南:螺纹式高压球阀、BKH高压球阀、RKH高压球阀、不锈钢高压球阀、卡套式高压球阀 - 优质品牌商家
  • 2025苏浙地区电商培训优质机构推荐榜实战创业与考证双支撑:天猫运营电商培训、广告平面设计电商培训、抖音运营电商培训、机械设计电商培训 - 优质品牌商家
  • 2025温州汽车行业复杂结构塑料模具优质供应商指南:塑料模具、 - 优质品牌商家
  • 12.19 - A
  • 网络编程-UDP通信
  • 2025防爆认证机构推荐榜聚焦行业需求的优质服务选择指南:防爆认证、 - 优质品牌商家
  • Day33rem简介与基本使用
  • 2025年电力系统变电站镀锌避雷塔性能深度评测报告:钢管避雷塔、镀锌避雷塔、防雷避雷塔、三柱避雷塔、单管避雷塔、圆钢避雷塔 - 优质品牌商家
  • 2025上海仓储订单处理公司推荐:云仓一件代发平台、云仓代发、仓储订单处理、仓储跨境物流、仓库托管、云仓一件代发 - 优质品牌商家
  • 2025企业高管跨国商务出行保安公司服务响应速度评测报告:保镖公司、安保公司、保安公司 - 优质品牌商家
  • 2025西南窄边门窗公司评测:断桥铝门窗、新房门窗、窄边门窗、系统门窗、老房门窗、铝合金门窗、隔音窗、隔音门窗、高端门窗 - 优质品牌商家
  • doccano服务器端部署教程(python项目)
  • 2025医药行业混合设备交钥匙工程售后服务评测报告:搅拌机优质品牌、搅拌机品牌、混合机优质品牌、混合机品牌、搅拌机、混合机 - 优质品牌商家
  • 2025广东精密钢管表面质量与规格适配性评测报告:浙江精密钢管、20CrMo精密钢管、40Cr精密钢管、42CrMo精密钢管 - 优质品牌商家
  • 12月18日日记
  • 央企程序员AI创业后续