Blu*_*ith 1 memcached ruby-on-rails dalli
根据https://github.com/mperham/dalli,我们可以配置多个Memcache服务器.但我不确定它是如何工作的.
假设我们使用的memcache集群有两个服务器:memcache1(box1)和memcache2(box2).
到目前为止,我的理解是,我不确定缓存过期在集群环境中是如何工作的.特别是,当我们想要急切地使缓存过期时,它会在所有盒子上到期吗?
鉴于我们在TWO rails服务器中具有相同的配置:
config.cache_store = :dalli_store, 'memcache1', 'memcache2'
Run Code Online (Sandbox Code Playgroud)
您如何看待这个用例?
谢谢你的兴趣.
Memcached分片是分片,而不是复制.也就是说,每台服务器上都没有数据副本; 数据在服务器之间分开.
密钥只存在于一台服务器上.Dalli通过分发算法传递密钥以确定哪个服务器将拥有给定密钥,然后将消息传递到该服务器.多个服务器上不存在相同的密钥,因此您不必担心一次性使两个密钥都到期.如果您使密钥过期,它将在其所在的单个框上过期.
如果两个用户都通过相同的缓存密钥请求数据,那么使该缓存密钥失效将使两者无效; 您不必担心用户1被路由到Box 1,而用户2被路由到Box 2,因为给定的密钥将始终映射到给定的服务器.