Your SlideShare is downloading. ×
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Scalling web applications using memcache
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Scalling web applications using memcache

4,593

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,593
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
71
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Scaling web applications usingMemcache
    Sudar Muthu (@sudarmuthu)
    http://sudarmuthu.com
    Research Engineer
    Yahoo Research
    Chennai Geeks - Meetup
    20-Nov-2010
  • 2. Agenda
    Overview
    Memcache is not
    How Memcache works
    General Usage
    Memcache Limits
    Client Libraries
    Common Use cases
    Tips for optimization
    Using Memcache in WordPress
  • 3. Overview
    A high-performance Distributed Memory Object Caching System
    Intended for speeding up dynamic web applications by alleviating database load.
    Open source & distributed under a “permissive free software license”.
    Uses RAM for storage
    Acts as a dictionary of stored data with key /value pairs
  • 4. Memcache is not..
    It is not a database
    It does not provide redundancy
    It doesn't handle failover
    It does not provide authentication
    It does not allow locks
    No direct dump or backup possible
  • 5. How Memcache works
    Two stage hash, like a giant hash table looking up key=value pairs
    Client hashes the key against a list of servers
    When the server is identified, the client sends its request
    Server performs a hash key lookup for the actual data
  • 6. General Usage
    First look up in memcache before querying the database.
    If present, return it.
    Else query the database, store it in memcache and return it.
    If the data changes, delete it from cache.
  • 7. Memcache Limits
    A single value cannot contain more than 1 MB of data.
    A single key cannot be more than 250 characters in length.
    Normally a single memcache instance cannot be more than 2 GB in size.
  • 8. Client Libraries
    Perl, Python, Ruby, Java, C#, C
    PostgreSQL (access memcached from procs and triggers)
    MySQL (adds memcache_engine storage engine)
    PHP (pecl/memcache)
  • 9. Client Libraries – PHP API
    Key Methods
    • boolMemcache::connect ( string $host [, int $port [, int $timeout ]] )
    • 10. boolMemcache::set( string $key , mixed $var [, int $flag [, int $expire ]] )
    • 11. string Memcache::get ( string $key [, int &$flags ] )
    • 12. boolMemcache::delete ( string $key [, int $timeout ] )
    More: http://www.php.net/memcache
  • 13. Common Use cases - 1
    Simple query result caching
    $key = ”some:unique:key”;
    $value = $memcache‐>get($key);
    if ($value) {    
    return $value; 
    }  else {    
    // Run the query get the result data $result = $db‐>query(“query”);      $memcache‐>set($key, $result, TRUE, 300); 
    // Store the result of the query for 5 minutes      return $result; 

  • 14. Common Use cases - 2
    Caching network/webservice calls
    $key = ”some:unique:key";
    $value = $memcache->get($key);
    if ($value) {
    return $value;
    } else {
    // Download the page
    $url = ”Your webserviceurl";
    $result = fetch($url);
    $memcache->set($key, $result, false, 86400);
    // Store the result of the query for a day
    return $result;
    }
  • 15. Common Use cases - 3
    Throttle user activity
    $key = “some:unique:key”;
    if ($memcache->get($key)) {
    //Deny access
    return false;
    } else {
    $memcache->set($key, “1”, false, 60);
    //Allow access
    return true;
    }
  • 16. Tips for Optimization
    Pre warm your cache using scripts
    Batch your requests using multi-get
    values= get(Array(“Foo”,”Bar”,”Baz”))
    Cache things other than SQL data!
    XML, HTML, Page fragments
    Replicate data across clusters
    Do set/delete in multiple clusters 
    Read from either cluster
    Run multiple instances on the same server
    If you know the data, implement a simple encoding scheme
  • 17. Using Memcache in WordPress
    Download Memcached Object Cache Plugin from http://wordpress.org/extend/plugins/memcached/
    Set up memcached servers
    Install peclmemcacheextention
    Copy object-cache.php to wp-content directory (not the Pluing’s directory)
    You are done 
  • 18. Questions?
    Thank you

×