The frequency is unknown as it is a streaming Application and i am using xmemcached version and dont have the feasibility to go for any other version of memcahe as per now .
On Thursday, 11 October 2012 21:41:15 UTC+5:30, Dormando wrote: > > You say you're doing that for "scaling" right? Do you know how frequently > each key is getting hit? Memcached has a very high capacity and it's > unlikely you actually need to do what you're doing. > > The libmemcached client has a client-side replication feature which lets > you store a key twice into a cluster. It manages deletes as well. I'm not > sure how well it works though. > > A more low tech approach is to use multiple keys per object, which will > end up split across the instances half the time (depending on the hashing > algo). > > So you'd store: fookey1 fookey2 > You'd fetch: fookey2 (Chosen randomly) > You'd delete: fookey1 fookey2 > > I still seriously doubt you're doing it right though. If you only have two > instances in total there's no way either will be overwhelming a memcached > instance. If you have to "scale" and then you have 3 instances that need > to be in sync, you've screwed yourself. > > On Thu, 11 Oct 2012, Kiran Kumar wrote: > > > Let me put things on a clear not . > > > > This is a Streaming application , where one part of application writes > data to both the instances of the Memcache , and there is an other side of > the application which reads from either one of the instance of Memcache , > so if Data is read from one instance needs to > > delete from another instance at the same time . > > > > Hope i am clear here . > > > > On Thursday, 11 October 2012 21:14:50 UTC+5:30, Dormando wrote: > > > I am working on a heavy traffic web site , where there will be > GB's of data written per minute into our Memcache . So we have decided to > use two separate instances of Memcache for the application . > > > > > > Right now the setup is that , there is NO clustering between > Memcache1 and Memcache2 because , Memcache1 caches 50% of the data and > Memcache2 caches the other 50% of the data. > > > > > > Memcache1 Memcache2 > > > \ / > > > \ / > > > \ / > > > \ / > > > \ / > > > \ / > > > CustomerData > > > > > > So right now as per the set up , there are two Memcache > instances for a single application . > > > > > > Now my question is , once we recive a value inside the > application , which writes/sets to both the Memcache instances , assume > that if a key is read one of the instance of Memcache - 1 , i need to > delete the same key on the other instance of memcahce > > also at the same > > > time , so taht they will be in sync with each other . > > > > > > As per the code point of view once a value is read from Memcache > , i am deleting that key . > > > > Right now you say: > > > > - There is NO clustering. 50% of keys are on Memcache1, 50% of > keys are on > > Memcache2. > > > > Then you say: > > > > - When you receive a value inside the applicatin, it writes to > both > > memcache instances. > > > > Which is the truth? If 50% of keys are on each, you are NOT > writing to > > both. Half your writes go to one, half to the other. In this > *completely > > standard setup*, deletes will go to the right place as well. > > > > If you're trying to have 100% of your keys available in Memcache1, > and > > 100% of your keys available in Memcache2, don't fucking do that. > > > > > >
