缓存作为一个数据中心,具备添加、更新、删除数据的操作,因此跟数据库类似,会存在事务性、并发情况下数据一致性等问题需要解决
使用缓存比较典型的方式如下面代码:
Database db = new Database();
Transaction tx = db.BeginTransaction();
try
{
//从缓存读取
MyEntity1 entity1 = cache.Get<MyEntity1>("pk of entity1");
//缓存中没有时从数据库读取
if (entity1 == null) entity1 = db.Get<MyEntity1>("pk of entity1");
//对entity1进行处理
updated = db.Update(entity1); //entity1的更新保存到数据库中
if (updated) cache.Put(entity1); //数据库更新成功,则更新缓存
//事务中的其他处理
tx.Commit();
}
catch
{
tx.Rollback();
throw;
}
Transaction tx = db.BeginTransaction();
try
{
//从缓存读取
MyEntity1 entity1 = cache.Get<MyEntity1>("pk of entity1");
//缓存中没有时从数据库读取
if (entity1 == null) entity1 = db.Get<MyEntity1>("pk of entity1");
//对entity1进行处理
updated = db.Update(entity1); //entity1的更新保存到数据库中
if (updated) cache.Put(entity1); //数据库更新成功,则更新缓存
//事务中的其他处理
tx.Commit();
}
catch
{
tx.Rollback();
throw;
}