gpt4 book ai didi

asp.net - 排队访问数据库以避免多个缓存项

转载 作者:行者123 更新时间:2023-12-03 12:53:11 25 4
gpt4 key购买 nike

我有一个与音乐有关的ASP.NET网站,该网站在第一个请求时从数据库中缓存了很多静态信息。

有时,当应用程序处于高负载状态时,该应用程序将重置并清除缓存,然后所有http请求都将进入数据库以检索该静态数据并将其缓存以供其他请求使用。

我如何确保只有一个请求进入数据库并缓存结果,以便其他请求仅从缓存中读取该信息,而不必一遍又一遍地检索相同的信息。

我可以使用线程锁定吗?例如,我可以做类似 lock(this){db access here} 吗?

最佳答案

是的,在缓存代码中,您需要将数据库访问代码放在lock块中。但是,请不要锁定this。通常你会做类似的事情

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
}
}
}

关于asp.net - 排队访问数据库以避免多个缓存项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com