我目前正在进行一个项目,其中数据库层由缓存系统提供支持.要求是在创建新条目时同时更新数据库和缓存.我已经决定使用芭蕾舞团交易来实现这一点,但我面临着一些挑战.
具体地说,当事务期间发生错误时,就会出现数据不一致.尽管在回滚期间有效地恢复了数据库中的更改,但相应的缓存条目保持不变.
transaction {
_ = check createRole(roleName);
_ = check ketoWriteEP->createRelationTuple(payload);
check commit;
}
function createRole(string roleName) {
sql:ParameterizedQuery insertQuery = createAppRoleQuery(roleName,
appId, organizationId);
sql:ExecutionResult result = check dbClient->execute(insertQuery);
utils:RoleDO role = {role_name: roleName};
error? response = localcache:addRoleToCache(roleName);
}
在使用Ballina事务时,如何解决此问题并确保数据库和缓存之间的一致性?