Memcached And MySQL

13

Click here to load reader

description

This presentation was presented at MinneBar on May 10, 2008.

Transcript of Memcached And MySQL

Page 1: Memcached And MySQL

Memcached & MySQLSitting in a Tree

Chris Barberhttp://www.cb1inc.com

Page 2: Memcached And MySQL

What is memcached?

A high performance, distributedmemory object caching system

Page 3: Memcached And MySQL

The Server

● Big hash table● Slab allocator● Servers are isolated● No redundancy● No failover● No security● No namespaces● Cross-platform (Linux, FreeBSD, Solaris, OSX)

Page 4: Memcached And MySQL

The Client● C/C++● PHP● Perl● Python● Ruby● Java● MySQL● PostgreSQL● Lua● C#● more...

● Simple protocol● Text based● Handles hashing

– Prepend namespace to key

● Serialize objects● Compress objects

Page 5: Memcached And MySQL

How memcached Works

1. User requests web page2. Web server passes request to PHP3. PHP checks if object is in memcached4. If yes, build page with object5. If no, PHP gets object from DB & stores in memcached6. Send page to user

Page 6: Memcached And MySQL

Integrating memcached

● Web app checks if object is cached● If object not cached

– Load from database, file, web service, etc.– Store in cache– Return object

Page 7: Memcached And MySQL

memcached UDFs for MySQL

● Written in C● Very fast● Uses libmemcached

Page 8: Memcached And MySQL

Prerequisites

● MySQL 5.0 or newer● Make sure MySQL is compiled with –enabled-

shared● memcached 1.2.5 or newer● libmemcached 0.2 or newer

– http://download.tangent.org/libmemcached-0.20.tar.gz

● memcached functions for MySQL 0.4– http://download.tangent.org/memcached_functions_mysql-0.4.tar.gz

● autoconf tools

Page 9: Memcached And MySQL

The UDFs● memc_add● memc_add_by_key● memc_servers_set● memc_set● memc_set_by_key● memc_cas● memc_cas_by_key● memc_get● memc_get_by_key● memc_delete● memc_delete_by_key

● memc_append● memc_append_by_key● memc_prepend● memc_prepend_by_key● memc_increment● memc_decrement● memc_replace● memc_replace_by_key● memc_servers_behavior_set● memc_list_behaviors● memc_stats

Page 10: Memcached And MySQL

Example

SELECT memc_servers_set('localhost:11211');

SELECT memc_set('name', 'Chris');

SELECT memc_get('name') AS name;

Page 11: Memcached And MySQL

Some Ideas

● Use triggers to update cache– When the data is changed (insert, update, delete)

● Use scheduled events (MySQL 5.1)– Flush cache– Repopulate with fresh data– Get memcached statistics

● memc_stats('localhost:11211')

Page 12: Memcached And MySQL

Demo Time!

Page 13: Memcached And MySQL

Questions?

Thank you!