IT技术博客大学习 共学习 共进步

Memcached and MySQL

MySQL实验室 2010-03-02 09:07:58 浏览 4,363 次

  相信很多开发人员接触过memcached,而且我认识的朋友当中有的是经常使用。那么在结合数据库,在对数据库内容做缓存的时候什么情况下使用memcached却不甚了解。有些朋友问到MySQL有自己的Query cache,为什么还要用memcached? -by ivan@mysqlab.net

  MySQL为了效率考虑,不太可能将数据粒度分那么细,所以在对表更新的时候将清空所有涉及到这张表的qcache,这样的话,在更新频繁或者表记录数很大的情况,qcache的效率将大打折扣。而使用memcached一般都是针对单挑记录,从而在更新的时候对表中其他记录的cache没有影响,相比qcache来说,cache效率极大提高。这也是为什么在MySQL有Query cache的情况下还要使用memcache来缓存数据。
  不过结合MySQL和memcached使用需要app层配合。不过当前也有MySQL memcached UDFs,结合MySQL触发器trigger,可是实现MySQL数据库的内容跟memcached同步,这样可以避免不同的应用程序需要实现对memcached的管理。

MySQL memcached UDFs的下载地址:http://tangent.org/586/Memcached_Functions_for_MySQL.html

以下是代码片段:
shell> tar zxf memcached_functions_mysql-0.5.tar.gz
shell> cd memcached_functions_mysql-0.5
shell> ./configure -with-mysql-config=/usr/local/mysql/bin/mysql_config 
shell> make
shell> make install
shell> cp /usr/local/lib/libmemcached_functions_mysql* /usr/local/mysql/lib/mysql/plugins/
mysql> CREATE FUNCTION memc_get RETURNS STRING SONAME "libmemcached_functions_mysql.so";
mysql> source /path/TO/install_functions.sql
 

详情请参考:http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-mysqludf.html

建议继续学习

  1. 分布式缓存系统 Memcached 入门 (阅读 16,043)
  2. 30分钟3300%性能提升――python+memcached网页优化小记 (阅读 13,582)
  3. Cacti 添加 Memcached 监控 (阅读 9,162)
  4. Redis和Memcached的区别 (阅读 7,944)
  5. memcached 源码阅读笔记 (阅读 5,266)
  6. 启用memcached压缩注意事项 (阅读 5,124)
  7. Memcached内存管理机制浅析 (阅读 5,082)
  8. Memcached的线程模型及状态机 (阅读 4,362)
  9. Memcached二三事儿 (阅读 4,183)
  10. 详细步骤:在64位Linux上安装Memcached (阅读 4,103)