hi, im not sure if i understand what you mean. I am not using this approach myself so im not sure if there is out of the box solution to your problem.
If you wish to control caching and distribution etc you would write some classes to hide the complexity from the rest of the application. Then implement which ever way you like. I guess you would need persistent connections to speed things up. unless you have too many apache processes and cant afford to keep sockets all the time. then save data to 2 boxes (if any of saves fails rise alert). On read also hide complexity reading from any of 2 boxes in pair. If fails rise alert and try the second one. then you should have even spread of load. art On 24 May 2010 08:24, Jay <[email protected]> wrote: > Hi! That's an option of course. I just had the @operators set now to > prevent those nasty errors when running Memcached in a non-reliable > LAN environment. > Would you make a new instance to do this or makes it sense to use the > standard instance to save this keys, when utilizing consistent hashing > on my normal memcache instance? > > Thanks! > > On 24 Maj, 02:14, Artur Ejsmont <[email protected]> wrote: > > i guess you could do it this way - may be slow though as its not > > asyncronous so has to write to all instances. > > > > No matter what you do using @ operator is a very bad idea. this is how > > undetectable bugs happen, id check for response and throw exception if > error > > is important. > > > > if you have many servers would probably be much more efficient to have > some > > kind of consistent hashing function so that each key would be saved into > 2 > > servers only. You will not have multiple failures unless you have tons of > > servers. Then you save each key in 2 servers not N, makes save much much > > faster and saves you space. > > > > regards > > > > art > > > > On 23 May 2010 23:11, Jay <[email protected]> wrote: > > > > > Hi everyone, > > > > > I have thought a bit on how to make sure that a particular key is > > > distributed to ALL memcached servers in a pool. I have yet found no > > > good solution. > > > > > My current, untested solution is to make another instance of > > > memcached, something like this: > > > > > $cluster['local'] = array('host' => '192.168.1.1', 'port' => > > > '11211', 'weight' => 50); > > > > > foreach ($this->cluster() as $cluster) { > > > @$this->tempMemcache = new Memcache; > > > @$this->tempMemcache->connect($cluster['host'], > > > $cluster['port']); > > > @$this->tempMemcache->set($key, $value, $this->compress, > > > $expireTime); > > > @$this->tempMemcache->close(); > > > } > > > > > What is common sense to do in this case, when certain keys need to be > > > stored on ALL servers for reliability? >
