现在分布式缓存方面算是memcached最出名了,为了改善现有系统的性能最近也在研究这个,有几个问题不太理解:1、memcached可以通过一个服务器列表ServerList指定缓存服务器,但缓存的服务器和缓存的数量都是随机的,比如:有3个缓存服务器,向客服端库ClientLib里set 10个缓存的时候,这10个缓存不是平均分配到这3个服务器,有可能一台只有1个,一台一个都没分到,另一台分了9个,这样的话压力有可能就全到一台服务器上去了。2、如果缓存一个很大的列表时,这时分布式缓存基本上用不上,比如100万条记录(举例),只会缓存在一个服务器,而不会将这100万条数据分成3份分别缓存到3个服务器3、在后台更新某一条记录的时候 ,如果将缓存里对应的数据也更新了,批量删除如何处理?4、在客户端查询的时候,如果数据不是缓存在应用程序部署服务器的话,是不是先从别的缓存服务器将数据全部拷贝到应用程序服务器呢?
如:有3个服务器 A,B,C ,其中程序部署在A上,设置缓存的时候有可能数据随机缓存到C服务器上,那么客户端请求数据的时候 是不是先从C服务器将数据全部拉到A服务器呢,这样对性能会不会造成很大的影响呢?
以上仅为个人的理解,请高手赐教!
如:有3个服务器 A,B,C ,其中程序部署在A上,设置缓存的时候有可能数据随机缓存到C服务器上,那么客户端请求数据的时候 是不是先从C服务器将数据全部拉到A服务器呢,这样对性能会不会造成很大的影响呢?
以上仅为个人的理解,请高手赐教!
1、这种情况确认存在,我写了demo测试过,每次每台服务器分到的缓存数量都是不确定的;
2、确实有你说的这个问题,所以我不确定是将这些数据分开缓存还是缓存到一台服务器;
3、没有区别,我是问了2个问题,分布式缓存如何批量删除,如何将修改的数据更新到缓存里
4、就是当数据缓存的服务器和程序部署的服务器不是同一台的时候,最终将数据展现给客户的肯定是程序服务器,那么是不是要从缓存服务器将数据读过来呢? 不知道我说清楚了没有。我用的是Memcached.ClientLibrary,应该就是你所说的。