Skip to content
shanbaoyin edited this page May 24, 2019 · 2 revisions

Welcome to the DCache wiki!

名词解释

主key/主索引,联合key/联合索引,value字段

MKVCache支持k-k-row的数据结构,主key+联合key+value字段 构成一条记录。主key只能由一个字段组成,联合key可以是1个或多个字段,value字段可以是1个或多个字段。 主key+联合key 构成唯一索引,即主key+联合key可以唯一确定一条记录。例如下面的数据表,userID为主key,联合key有两个字段:purchaseItempurchaseTime,value字段有多个:quantitypricehasPaid。指定主key userId可以查询出多条记录,指定userIdpurchaseTimepurchaseTime可以唯一确定一条记录。

userID purchaseItem purchaseTime quantity price hasPaid
1001 toy 20190505105733 1 100 Y
1001 smartPhone 20190505105733 2 200 N
1002 PC 20190505105734 1 200 N

onlykey

如果查询的某个key不存在,DCache会在内存中增加一条onlykey记录,该记录只有key没有value,目的是为了标识该key不存在,从而避免频繁查询不存在的key时,大量请求穿透到后端DB。

数据的版本号

DCache中每条数据都有版本号,版本号为byte类型,循环递增。版本号可以起到乐观锁的作用,例如用户修改一条数据时,想确保只有自己在修改该数据,可以采用以下步骤:

  • step1:查询该数据,查询结果中会包含该数据的版本号;
  • step2:构造更新请求参数时,参数中的版本号赋值为step1查询结果中的版本号,然后发起更新请求
  • step3:检查更新请求的返回值,如果返回ET_DATA_VER_MISMATCH则说明有其他用户在并发修改该数据。

DCache收到插入/更新/删除请求时,如果请求参数中的数据版本号(ver)不为0,DCache则会在修改数据前校验内存中该数据的版本号是否和参数ver一致。

Clone this wiki locally