TripleCache - infoplus/docs GitHub Wiki

简介

  • 定义三元组缓存结构

Redis缓存

数据类型

enum TripleType {
  user
  dept
  post
  occupy
}

type User {
  # 待完善
}

type Dept {
  # 待完善
}

type Post {
  # 待完善
}

type Occupy {
  # 待完善
}

1. 用户

  • KEY: triple:user:{openid}
  • 类型:string

2. 用户ID转换

  • KEY: triple:user.idmap:{principal}
  • 类型:hash
    • 哈希key:UserPrincipalName@租户ID
    • 哈希value: openid
  • KEY: triple:user.idmap.reverse:{principal}
  • 类型:hash
    • 哈希key:openid
    • 哈希value: 1对1的账号主体为UserPrincipalName@租户ID,多值为 JSON List

3. 实体立方体

  • KEY:enterprise:{tenant}:cube:{type}
  • 类型:hash
    • 哈希key:该类型id,openid 部门编码 岗位编码
    • 哈希value: 对应实体 json
  • 查询举例
    • HVALS:获取租户下某种实体全集
    • HLEN: 获取数量
    • HGET:单实体查询

4. 关系立方体(切面)

  • KEY: enterprise:{tenant}:cube:plane:{type}:{id}
  • 类型:hash
    • 哈希key:三元组标识 $openid|$dept|$post
    • 哈希value:关系json(occupy)
  • 查询举例
    • HVALS enterprise:{t1}:cube:plane:user:{u1}:用户u1的身份列表

5. 关系立方体(切线)

  • KEY: enterprise:{tenant}:cube:line.yz:{dept}:{post}
  • 类型:hash,解释同切面。
  • 含义:
    • 关系立方体中 x轴为user,y轴为dept,z轴为post
    • line.yz 标识y、z轴切面的关系内容,即,指定部门和岗位下的三元组列表

UserFilter 的对应关系

UserFilter 查询方式
dept:post HVALS cube:line.yz:{dept}:{post}
dept HVALS cube:plane:dept:{dept}
:post HVALS cube:plane:post:{post}
::user HGET cube:user {user}