Take advantage of the Add () method in memcached.
Memcached:add ($key) returns TRUE on success, or FALSE on failure. Returns False if this key already exists.
Use the atomicity of add to determine whether business code needs to be executed.
/** * @param null $key * * @author [email protected] * /public function add_cache ($key =null) { $memcacheClass = new Memcached (); $data = $memcacheClass->get ($key); if ( ! $data) { do { $write _key = ' write '; if ($memcacheClass->add ($write _key, $write _key, 10 *  60)) { // Lock successfully, perform business operations $data = $model->get (); $memcacheClass->set ($key, $data, 30 * 60); // storing data in cache $memcacheClass->delete ( $write _key); $ Is_retry = false; } else { // If the lock is unsuccessful, wait for a period of time before retrying sleep (Ten); $is _retry = true; } } while ($is _retry); }}
Set cache lock when concurrency is implemented using memcached