Memcached: What Is It And What Does It Do?

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Memcached: What Is It And What Does It Do? as PDF for free.

More details

  • Words: 788
  • Pages: 16
MEMCACHED: WHAT IS IT AND WHAT DOES IT DO? Brian Moon dealnews.com http://brian.moonspot.net/

Wednesday, September 30, 2009

@BRIANLMOON •

Senior Web Engineer for dealnews.com

• • • • • •

Survived a 2006 Yahoo front page link

Founder and lead developer of Phorum Memcached community member Gearmand contributor PHP internals contributor I used PHP/FI

Wednesday, September 30, 2009

WHAT IS MEMCACHED? memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

• • • • •

Dumb daemon It is a generic key/data storage system Uses libevent and epoll/kqueue Caches data in memory Cache is distributed by the smart clients

Wednesday, September 30, 2009

PHP OPTIONS •

PECL/memcache

• • • •

Mature Standalone More hand holding

PECL/memcached

• • • Wednesday, September 30, 2009

Built on libmemcached More of a raw API Has more features

SIMPLE PHP EXAMPLE $MEMCACHE = new Memcache(); $MEMCACHE->addServer(“192.168.0.1”); $MEMCACHE->addServer(“192.168.0.2”); $mydata = $MEMCACHE->get(“mydata”); if($mydata === false){ $mydata = generate_mydata(); $MEMCACHE->set(“mydata”, $mydata, MEMCACHE_COMPRESSED, 86400); } echo $mydata; Wednesday, September 30, 2009

WHERE IS MY DATA? •

The client (not server) uses a hashing algorithm to determine the storage server

• • • •

Data is sent to only one server Servers do not share data Data is not replicated Two hashing algorithms possible:

• • Wednesday, September 30, 2009

Traditional “Consistent”

WHERE IS MY DATA? • •

Both hash the key and use the result to choose a server. Traditional hashing uses the forumla:

• • •

hash % num_servers Resulting number determines the server used.

In “Consistent” hashing, each server is allocated LOTS of slots and a key is hashed and to a number. The closest slot to that number is the server.

• Wednesday, September 30, 2009

Adding/removing servers from the list results in less key reassignment.

WHAT CAN I STORE? • • • •

Server stores blobs of data up to 1MB

• •

PECL/memcache will convert keys for you.

PHP extensions will serialize non-scalar data Keys are limited to 250 bytes in length Keys can not contain spaces or “high” characters. Stick with letters, numbers, _ and you are pretty safe. PECL/memcached will returns false and an additional method must be used to find out why the set failed.

Wednesday, September 30, 2009

DATA SIZE MATTERS • • •

Maximum size for one item is 1MB Both clients support compression, neither by default Data is stored in slabs based on size

• • •

Lots of items of the same size is not optimal



Data can be evicted sooner than expected.

Wednesday, September 30, 2009

Slab size can be customized May not be able to store items when it appears there is “free” memory

EVICTION AND EXPIRATION •

Expiration time can be expressed as seconds from now or as an absolute epoch time.

• • •

Values > 30 days are assumed to be an absolute time Items are not removed from memory when they expire

Items are evicted when newer items need to be stored



Least Recenty Used (LRU) determines what is evicted



Eviction is done per slab

Wednesday, September 30, 2009

HOW WELL IS IT WORKING? • •

Graph stats from memcached using Cacti/Ganglia, etc. Key stats:

• • • •

Wednesday, September 30, 2009

Hits/Misses Gets/Sets Evictions

STAT STAT STAT STAT STAT

cmd_get 4507207 cmd_set 1098829 get_hits 3221599 get_misses 1285608 evictions 0

Cacti Templates: http://dealnews.com/developers/

HOW DO I SEE THE CACHE? • • •

You have no way to see the cached data.

• •

There are debug ways to see.

You probably don’t need to see it. For memcached to tell you, it would freeze your entire caching system DO NOT COMPILE PRODUCTION WITH DEBUG BECAUSE YOU ARE A CONTROL FREAK!

Wednesday, September 30, 2009

HOW DO I BACK IT UP?

•You don’t! • •

If you application requires that, you are using it wrong It is a cache, not a data storage system

Wednesday, September 30, 2009

NAMESPACES & TAGGING •

There is no concept of namespaces or tagging built in to memcached

• • •

You can simulate them with an extra key storage See the FAQ for an example of simulated namespaces This of course means there is no mass delete in memcached

Wednesday, September 30, 2009

ADVANCED TIPS •

Use multi-gets to increase performance

• • • • •

PECL/memcache takes an array of keys to get() PECL/memcached has a separate method

Use the binary protocol in PECL/memcached Group keys with a master key Use a cache hierarchy

• Wednesday, September 30, 2009

GLOBALS + APC + memcached

REFERENCES • • •

http://code.google.com/p/memcached/

• •

http://brian.moonspot.net/

http://pecl.php.net/package/memcache http://pecl.php.net/package/memcached

http://dealnews.com/developers/

Wednesday, September 30, 2009

Related Documents