我以前从未使用过 memcached,并且对以下基本问题感到困惑。
Memcached 是缓存吧?我假设我们缓存数据库中的数据以便更快地访问。那么当DB更新时谁负责更新缓存呢?我们的代码是,当数据库更新时,memcached 是否“理解”?
您负责更新缓存(或某些插件)。
所发生的情况是,查询被压缩为一些关键特征,并且这些特征被散列。这是针对缓存进行测试的。如果该值在缓存中,则直接从缓存返回数据。否则,执行查询,将其存储在缓存中并返回给用户。
在伪代码中:
key = query_key(your_sql_query)
if key in cache:
return cache.get(key)
else:
results = execute(your_sql_query)
cache.set(key, results, time_to_live)
return results.
Run Code Online (Sandbox Code Playgroud)
缓存偶尔会被清除,您可以给某个键一个生存时间,然后刷新您的缓存结果。
这是最简单的模型,但可能会导致一些不一致。