设为首页 收藏本站
查看: 899|回复: 0

[经验分享] memcached安装使用以及测试

[复制链接]

尚未签到

发表于 2018-12-25 08:02:50 | 显示全部楼层 |阅读模式
memcached安装

版本V1.0
时间2012-07-30
版权GPL
作者itnihao 邮箱 itnihao@qq.com
博客 http://itnihao.blog.运维网.com
如需重新发行,请注明以上信息,谢谢合作


  • 第一部分 下载源码进行安装
  • wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
  • tar xvf libevent-2.0.19-stable.tar.gz
  • cd libevent-2.0.19-stable
  • ./configure
  • make
  • make install

  • wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
  • tar xvf memcached-1.4.13.tar.gz  
  • cd memcached-1.4.13
  • ./configure
  • make
  • make install

  • echo "/usr/local/lib" >> /etc/ld.so.conf
  • ldconfig
  • /usr/local/bin/memcached  -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 1024

  • wget https://launchpad.net/libmemcached/1.0/0.34/+download/libmemcached-0.34.tar.gz
  • tar xvf libmemcached-0.34.tar.gz  
  • cd libmemcached-0.34
  • ./configure --with-memcached=/usr/local/bin/memcached
  • i#./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/bin/memcached
  • make
  • make install

  • #wget https://launchpad.net/libmemcached/1.0/1.0.8/+download/libmemcached-1.0.8.tar.gz
  • #wget https://launchpad.net/memcached-udfs/trunk/version-1.0/+download/memcached_functions_mysql-1.0.tar.gz
  • wget https://launchpad.net/memcached-udfs/trunk/1.1/+download/memcached_functions_mysql-1.1.tar.gz
  • tar xvf memcached_functions_mysql-1.1.tar.gz
  • cd memcached_functions_mysql-1.1
  • ./configure --with-mysql=/usr/local/mysql/bin/mysql_config  --libdir=/usr/local/mysql/lib/mysql --with-libmemcached=/usr/local
  • make
  • make install
  • cd utils/ #注意此处的my.cnf 必须为osocket=/var/lib/mysql/mysql.sock,否则,运行脚本会报错 #find /usr/ -name libmemcached_functions_mysql.so ln -s /usr/local/mysql/lib/mysql/libmemcached_functions_mysql.so /usr/local/mysql/lib/plugin/libmemcached_functions_mysql.so ./install.pl  -s -u=root -p=itnihao

  第二部分 在mysql进行设置memcached


  • mysql> select name,dl from mysql.func;
  • +------------------------------+---------------------------------+
  • | name                         | dl                              |
  • +------------------------------+---------------------------------+
  • | memc_cas_by_key              | libmemcached_functions_mysql.so |
  • | memc_cas                     | libmemcached_functions_mysql.so |
  • | memc_servers_set             | libmemcached_functions_mysql.so |
  • | memc_add                     | libmemcached_functions_mysql.so |
  • | memc_libmemcached_version    | libmemcached_functions_mysql.so |
  • | memc_add_by_key              | libmemcached_functions_mysql.so |
  • | memc_server_count            | libmemcached_functions_mysql.so |
  • | memc_stat_get_keys           | libmemcached_functions_mysql.so |
  • | memc_append                  | libmemcached_functions_mysql.so |
  • | memc_replace_by_key          | libmemcached_functions_mysql.so |
  • | memc_prepend                 | libmemcached_functions_mysql.so |
  • | memc_behavior_get            | libmemcached_functions_mysql.so |
  • | memc_udf_version             | libmemcached_functions_mysql.so |
  • | memc_set_by_key              | libmemcached_functions_mysql.so |
  • | memc_get_by_key              | libmemcached_functions_mysql.so |
  • | memc_increment               | libmemcached_functions_mysql.so |
  • | memc_behavior_set            | libmemcached_functions_mysql.so |
  • | memc_stats                   | libmemcached_functions_mysql.so |
  • | memc_list_distribution_types | libmemcached_functions_mysql.so |
  • | memc_list_hash_types         | libmemcached_functions_mysql.so |
  • | memc_append_by_key           | libmemcached_functions_mysql.so |
  • | memc_servers_behavior_set    | libmemcached_functions_mysql.so |
  • | memc_replace                 | libmemcached_functions_mysql.so |
  • | memc_set                     | libmemcached_functions_mysql.so |
  • | memc_prepend_by_key          | libmemcached_functions_mysql.so |
  • | memc_get                     | libmemcached_functions_mysql.so |
  • | memc_list_behaviors          | libmemcached_functions_mysql.so |
  • | memc_delete                  | libmemcached_functions_mysql.so |
  • | memc_stat_get_value          | libmemcached_functions_mysql.so |
  • | memc_decrement               | libmemcached_functions_mysql.so |
  • | memc_delete_by_key           | libmemcached_functions_mysql.so |
  • | memc_servers_behavior_get    | libmemcached_functions_mysql.so |
  • +------------------------------+---------------------------------+

  第三部分memcached的应用实例


  • #对功能进行测试,源码包已经提供测试模块
  • cat memcached_functions_mysql-1.1/sql/trigger_fun.sql
  • mysql> use test
  • drop table if exists urls;
  • create table urls (
  •   id int(3) not null,
  •   url varchar(64) not null default '',
  •   primary key (id)
  •   );


  • mysql> select memc_servers_set('localhost:11211');
  • +-------------------------------------+
  • | memc_servers_set('localhost:11211') |
  • +-------------------------------------+
  • |                                   0 |
  • +-------------------------------------+

  • mysql> select memc_set('urls:sequence', 0);
  • +------------------------------+
  • | memc_set('urls:sequence', 0) |
  • +------------------------------+
  • |                            1 |
  • +------------------------------+

  • mysql>DELIMITER |

  • DROP TRIGGER IF EXISTS url_mem_insert |
  • CREATE TRIGGER url_mem_insert
  • BEFORE INSERT ON urls
  • FOR EACH ROW BEGIN
  •     SET NEW.id= memc_increment('urls:sequence');  
  •     SET @mm= memc_set(concat('urls:',NEW.id), NEW.url);
  • END |

  • DROP TRIGGER IF EXISTS url_mem_update |
  • CREATE TRIGGER url_mem_update
  • BEFORE UPDATE ON urls
  • FOR EACH ROW BEGIN
  •     SET @mm= memc_replace(concat('urls:',OLD.id), NEW.url);
  • END |

  • DROP TRIGGER IF EXISTS url_mem_delete |
  • CREATE TRIGGER url_mem_delete
  • BEFORE DELETE ON urls
  • FOR EACH ROW BEGIN
  •     SET @mm= memc_delete(concat('urls:',OLD.id));
  • END |

  • DELIMITER ;

  • insert into urls (url) values ('http://google.com');
  • insert into urls (url) values ('http://lycos.com/');
  • insert into urls (url) values ('http://tripod.com/');
  • insert into urls (url) values ('http://microsoft.com/');
  • insert into urls (url) values ('http://slashdot.org');
  • insert into urls (url) values ('http://mysql.com');
  • select * from urls;

  • select memc_get('urls:1');
  • select memc_get('urls:2');
  • select memc_get('urls:3');
  • select memc_get('urls:4');
  • select memc_get('urls:5');
  • select memc_get('urls:6');

  • update urls set url= 'http://mysql.com/sun' where url = 'http://mysql.com';
  • select url from urls where url = 'http://mysql.com/sun';
  • select memc_get('urls:6');

  • delete from urls where url = 'http://microsoft.com/';
  • select * from urls where url='http://microsoft.com/';
  • select memc_get('urls:4');




  • mysql> select memc_servers_set('192.168.16.21:11211');
  • +-----------------------------------------+
  • | memc_servers_set('192.168.16.21:11211') |
  • +-----------------------------------------+
  • |                                       0 |
  • +-----------------------------------------+

  • mysql> select memc_server_count();
  • +---------------------+
  • | memc_server_count() |
  • +---------------------+
  • |                   1 |
  • +---------------------+

  • mysql> select memc_list_behaviors()\G
  • *************************** 1. row ***************************
  • memc_list_behaviors():  
  • MEMCACHED SERVER BEHAVIORS
  • MEMCACHED_BEHAVIOR_SUPPORT_CAS
  • MEMCACHED_BEHAVIOR_NO_BLOCK
  • MEMCACHED_BEHAVIOR_TCP_NODELAY
  • MEMCACHED_BEHAVIOR_HASH
  • MEMCACHED_BEHAVIOR_CACHE_LOOKUPS
  • MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE
  • MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE
  • MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
  • MEMCACHED_BEHAVIOR_KETAMA
  • MEMCACHED_BEHAVIOR_POLL_TIMEOUT
  • MEMCACHED_BEHAVIOR_RETRY_TIMEOUT
  • MEMCACHED_BEHAVIOR_DISTRIBUTION
  • MEMCACHED_BEHAVIOR_BUFFER_REQUESTS
  • MEMCACHED_BEHAVIOR_USER_DATA
  • MEMCACHED_BEHAVIOR_SORT_HOSTS
  • MEMCACHED_BEHAVIOR_VERIFY_KEY
  • MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT
  • MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
  • MEMCACHED_BEHAVIOR_KETAMA_HASH
  • MEMCACHED_BEHAVIOR_BINARY_PROTOCOL
  • MEMCACHED_BEHAVIOR_SND_TIMEOUT
  • MEMCACHED_BEHAVIOR_RCV_TIMEOUT
  • MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT
  • MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK
  • MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK
  •         
  • MEMCACHED_HASH_DEFAULT
  • MEMCACHED_HASH_MD5
  • MEMCA


  • mysql> select memc_servers_behavior_set('MEMCACHED_BEHAVIOR_NO_BLOCK','1');  
  • +--------------------------------------------------------------+
  • | memc_servers_behavior_set('MEMCACHED_BEHAVIOR_NO_BLOCK','1') |
  • +--------------------------------------------------------------+
  • |                                                            0 |
  • +--------------------------------------------------------------+

  • mysql> select memc_servers_behavior_set('MEMCACHED_BEHAVIOR_TCP_NODELAY','1');
  • +-----------------------------------------------------------------+
  • | memc_servers_behavior_set('MEMCACHED_BEHAVIOR_TCP_NODELAY','1') |
  • +-----------------------------------------------------------------+
  • |                                                               0 |
  • +-----------------------------------------------------------------+

  测试


  • #向表urls中插入数据,然后查看memcached是否对数据执行set操作。
  • mysql> insert into urls (url) values ('http://google.com');
  • mysql> insert into urls (url) values ('http://lycos.com/');
  • mysql> insert into urls (url) values ('http://tripod.com/');
  • mysql> insert into urls (url) values ('http://microsoft.com/');
  • mysql> insert into urls (url) values ('http://slashdot.org');
  • mysql> insert into urls (url) values ('http://mysql.com');
  • mysql> select * from urls;

  • mysql> select memc_get('urls:8');
  • +--------------------+
  • | memc_get('urls:8') |
  • +--------------------+
  • | http://google.com  |
  • +--------------------+
  • 1 row in set (0.00 sec)

  • mysql> select memc_get('urls:9');
  • +--------------------+
  • | memc_get('urls:9') |
  • +--------------------+
  • | NULL               |
  • +--------------------+
  • 1 row in set (0.05 sec)

  • mysql> select memc_get('urls:10');
  • +---------------------+
  • | memc_get('urls:10') |
  • +---------------------+
  • | http://tripod.com/  |
  • +---------------------+
  • 1 row in set (0.00 sec)


  • #在memcached上telent查看数据更新
  • [root@localhost ~]# telnet 192.168.16.21 11211
  • Trying 192.168.16.21...
  • Connected to 192.168.16.21.
  • Escape character is '^]'.
  • get urls:8
  • VALUE urls:8 0 17
  • http://google.com
  • END
  • quit
  • Connection closed by foreign host.


  • mysql> update test.urls set url="http://www.baidu.com" where id=8;
  • Query OK, 0 rows affected, 1 warning (0.00 sec)
  • Rows matched: 1  Changed: 0  Warnings: 1

  • #在mysql中更新数据,查看memcached中是否会更新呢
  • mysql> select * from urls;                                               
  • +----+-----------------------+
  • | id | url                   |
  • +----+-----------------------+
  • |  8 | http://www.baidu.com  |
  • |  9 | http://lycos.com/     |
  • | 10 | http://tripod.com/    |
  • | 11 | http://microsoft.com/ |
  • | 12 | http://slashdot.org   |
  • | 13 | http://mysql.com      |
  • +----+-----------------------+
  • 6 rows in set (0.00 sec)
  • [root@localhost ~]#  telnet 192.168.16.21 11211
  • Trying 192.168.16.21...
  • Connected to 192.168.16.21.
  • Escape character is '^]'.
  • get urls:8
  • VALUE urls:8 0 20
  • http://www.baidu.com
  • END
  • quit
  • Connection closed by foreign host.



需要注意libmemcached-0.40以上的版本在memcached_functions_mysql编译会出现以下问题,


  • servers.c: In function ‘memc_servers_set’:
  • servers.c:121: error: ‘memcached_st’ has no member named ‘hosts’
  • servers.c:122: error: ‘memcached_st’ has no member named ‘hosts’
  • servers.c:123: error: ‘memcached_st’ has no member named ‘hosts’

  源代码此处定义的问题,暂时没有找到解决方法,希望各位高手解决这个问题


  • memcached_version(master_memc);
  •   if (master_memc->hosts[0].major_version >= 1 &&
  •       master_memc->hosts[0].minor_version >= 2 &&
  •       master_memc->hosts[0].micro_version >= 4)
  •     memcached_behavior_set(master_memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
  •   memcached_server_list_free(servers);
  •   pthread_mutex_unlock(&memc_servers_mutex);
  •   fprintf(stderr, "rc %d\n", rc);
  •   return ((long long) rc == MEMCACHED_SUCCESS ? 0 : rc);
  • }

  参考以下链接
  http://asyty.iteye.com/blog/1442587
  http://www.bluegecko.net/mysql/memcached-functions-for-mysql-1-1-released/
  http://mjs123.iteye.com/blog/643557
  https://jiwaisms.googlecode.com/svn/wiki/[%E7%AC%94%E8%AE%B0]memcache%E5%AE%89%E8%A3%85%E6%80%BB%E7%BB%93.txt
  http://www.haogongju.net/art/1333032
  http://www.cnblogs.com/sunss/archive/2011/06/07/2074435.html
  http://www.mylearning.cc/htmlfile/ArticleList/2011/7/27/bb19f32f-38a7-43b4-acd3-0eb6d24edfff.html




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655467-1-1.html 上篇帖子: LNMP +memcached(开源跨平台) 下篇帖子: Memcached for Win32下的安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表