Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mettre en file d'attente l'accès à la base de données pour éviter plusieurs éléments de cache

Oui, dans votre code de mise en cache, vous souhaiterez placer votre code d'accès à la base de données dans un lock bloquer. Cependant, ne verrouillez pas this . Typiquement, vous feriez quelque chose comme

private static readonly object staticObjectToLockOn = new object();

...

if (cache[cacheKey] == null)
{
   lock(staticObjectToLockOn)
   {
      // double-check the cache is still null inside the lock
      if (cache[cacheKey] == null)
      {
         // get data from the database, add to cache
      }
   }
}