The frequency is unknown , but its not more than 100,000 requests per 
second . 



On Thursday, 11 October 2012 21:53:18 UTC+5:30, Kiran Kumar wrote:

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

Reply via email to