memcache学习笔记(一)

来源:互联网 发布:炮打白宫事件知乎 编辑:程序博客网 时间:2024/06/04 19:48

memcache学习笔记(一)

一、安装

注:memcache用到libevent这个库用于Socket处理,所以还需要安装libevent,官网:http://www.monkey.org/~provos/libevent/,目前最新的版本是2.0.22
安装中遇到的问题:本来打算在mac中安装,然而安装libevent时的最后一步sudo make install 总是过不去,

~libevent-1.4.13-stable sudo make install/Library/Developer/CommandLineTools/usr/bin/make  install-recursiveMaking install in .test -z "/usr/bin" || ./install-sh -c -d "/usr/bin" /usr/bin/install -c 'event_rpcgen.py' '/usr/bin/event_rpcgen.py'install: /usr/bin/event_rpcgen.py: Operation not permittedmake[3]: *** [install-binSCRIPTS] Error 71make[2]: *** [install-am] Error 2make[1]: *** [install-recursive] Error 1make: *** [install] Error 2

OS X EI Capitan的rootless机制搞得好尴尬,经常遇到这种Operation not permitted都不知道该如何是好,只好安装虚拟机,在虚拟机里安装Linux系统安装memcached了。

1. 先安装libevent

derek@root:~/Downloads$ tar zxvf libevent-2.0.22-stable.tar.gzderek@root:~/Downloads$ cd libevent-2.0.22-stable/derek@root:~/Downloads/libevent-2.0.22-stable$ ./configure -prefix=/usrderek@root:~/Downloads/libevent-2.0.22-stable$ makederek@root:~/Downloads/libevent-2.0.22-stable$ sudo make install

详细信息如下:

derek@root:~/Downloads$ lltotal 1716drwxr-xr-x  2 derek derek   4096  911 21:59 ./drwxr-xr-x 16 derek derek   4096  911 21:52 ../-rw-r--r--  1 derek derek 499603  911 21:56 libevent-1.4.13-stable.tar.gz-rw-r--r--  1 derek derek 854987  911 21:59 libevent-2.0.22-stable.tar.gz-rw-r--r--  1 derek derek 389502  911 21:58 memcached-1.4.31.tar.gzderek@root:~/Downloads$ tar zxvf libevent-2.0.22-stable.tar.gzlibevent-2.0.22-stable/libevent-2.0.22-stable/evmap-internal.hlibevent-2.0.22-stable/event_iocp.clibevent-2.0.22-stable/changelist-internal.h............libevent-2.0.22-stable/evhttp.hlibevent-2.0.22-stable/event_rpcgen.pylibevent-2.0.22-stable/Makefile.amlibevent-2.0.22-stable/minheap-internal.hderek@root:~/Downloads$ lslibevent-1.4.13-stable.tar.gz  libevent-2.0.22-stable  libevent-2.0.22-stable.tar.gz  memcached-1.4.31.tar.gzderek@root:~/Downloads$ cd libevent-2.0.22-stable/derek@root:~/Downloads/libevent-2.0.22-stable$ ./configure -prefix=/usrchecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -p............config.status: creating include/Makefileconfig.status: creating test/Makefileconfig.status: creating sample/Makefileconfig.status: creating config.hconfig.status: executing depfiles commandsconfig.status: executing libtool commandsderek@root:~/Downloads/libevent-2.0.22-stable$ maketest -d include/event2 || /bin/mkdir -p include/event2/bin/sed -f ./make-event-config.sed < config.h > include/event2/event-config.hTmv -f include/event2/event-config.hT include/event2/event-config.hmake  all-recursivemake[1]: Entering directory '/home/derek/Downloads/libevent-2.0.22-stable'Making all in .............make[3]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable/test'make[2]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable/test'make[1]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable'derek@root:~/Downloads/libevent-2.0.22-stable$ sudo make install[sudo] password for derek:make  install-recursivemake[1]: Entering directory '/home/derek/Downloads/libevent-2.0.22-stable'Making install in .make[2]: Entering directory '/home/derek/Downloads/libevent-2.0.22-stable'make[3]: Entering directory '/home/derek/Downloads/libevent-2.0.22-stable'............make[4]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable/test'make[3]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable/test'make[2]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable/test'make[1]: Leaving directory '/home/derek/Downloads/libevent-2.0.22-stable'

2. 测试libevent是否安装成功

derek@root:~/Downloads/libevent-2.0.22-stable$ ls -al /usr/lib | grep libeventlrwxrwxrwx   1 root root       21  911 22:01 libevent-2.0.so.5 -> libevent-2.0.so.5.1.9-rwxr-xr-x   1 root root  1216984  911 22:01 libevent-2.0.so.5.1.9-rw-r--r--   1 root root  2156264  911 22:01 libevent.alrwxrwxrwx   1 root root       26  911 22:01 libevent_core-2.0.so.5 -> libevent_core-2.0.so.5.1.9-rwxr-xr-x   1 root root   744784  911 22:01 libevent_core-2.0.so.5.1.9-rw-r--r--   1 root root  1406608  911 22:01 libevent_core.a-rwxr-xr-x   1 root root      974  911 22:01 libevent_core.lalrwxrwxrwx   1 root root       26  911 22:01 libevent_core.so -> libevent_core-2.0.so.5.1.9lrwxrwxrwx   1 root root       27  911 22:01 libevent_extra-2.0.so.5 -> libevent_extra-2.0.so.5.1.9-rwxr-xr-x   1 root root   494440  911 22:01 libevent_extra-2.0.so.5.1.9-rw-r--r--   1 root root   749728  911 22:01 libevent_extra.a-rwxr-xr-x   1 root root      981  911 22:01 libevent_extra.lalrwxrwxrwx   1 root root       27  911 22:01 libevent_extra.so -> libevent_extra-2.0.so.5.1.9-rwxr-xr-x   1 root root      939  911 22:01 libevent.lalrwxrwxrwx   1 root root       30  911 22:01 libevent_pthreads-2.0.so.5 -> libevent_pthreads-2.0.so.5.1.9-rwxr-xr-x   1 root root    25608  911 22:01 libevent_pthreads-2.0.so.5.1.9-rw-r--r--   1 root root    25222  911 22:01 libevent_pthreads.a-rwxr-xr-x   1 root root     1002  911 22:01 libevent_pthreads.lalrwxrwxrwx   1 root root       30  911 22:01 libevent_pthreads.so -> libevent_pthreads-2.0.so.5.1.9lrwxrwxrwx   1 root root       21  911 22:01 libevent.so -> libevent-2.0.so.5.1.9derek@root:~/Downloads/libevent-2.0.22-stable$

安装OK!

3. 安装memcached

安装中需要制定libevent的安装位置

derek@root:~/Downloads$ tar zxvf memcached-1.4.31.tar.gzderek@root:~/Downloads$ cd memcached-1.4.31/derek@root:~/Downloads/memcached-1.4.31$ ./configure -with-libevent=/usrderek@root:~/Downloads/memcached-1.4.31$ makederek@root:~/Downloads/memcached-1.4.31$ sudo make install

详细信息如下:

derek@root:~/Downloads$ lltotal 1720drwxr-xr-x  3 derek derek   4096  911 22:00 ./drwxr-xr-x 16 derek derek   4096  911 21:52 ../-rw-r--r--  1 derek derek 499603  911 21:56 libevent-1.4.13-stable.tar.gzdrwxr-xr-x 10 derek derek   4096  911 22:00 libevent-2.0.22-stable/-rw-r--r--  1 derek derek 854987  911 21:59 libevent-2.0.22-stable.tar.gz-rw-r--r--  1 derek derek 389502  911 21:58 memcached-1.4.31.tar.gzderek@root:~/Downloads$ tar zxvf memcached-1.4.31.tar.gzmemcached-1.4.31/memcached-1.4.31/config.guessmemcached-1.4.31/assoc.h............memcached-1.4.31/thread.cmemcached-1.4.31/depcompmemcached-1.4.31/configurememcached-1.4.31/Makefile.inderek@root:~/Downloads$ cd memcached-1.4.31/derek@root:~/Downloads/memcached-1.4.31$derek@root:~/Downloads/memcached-1.4.31$derek@root:~/Downloads/memcached-1.4.31$ ./configure -with-libevent=/usrchecking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -p...........config.status: creating doc/Makefileconfig.status: creating config.hconfig.status: executing depfiles commandsderek@root:~/Downloads/memcached-1.4.31$ makemake  all-recursivemake[1]: Entering directory '/home/derek/Downloads/memcached-1.4.31'Making all in docmake[2]: Entering directory '/home/derek/Downloads/memcached-1.4.31/doc'make  all-am............make[2]: Leaving directory '/home/derek/Downloads/memcached-1.4.31'make[1]: Leaving directory '/home/derek/Downloads/memcached-1.4.31'derek@root:~/Downloads/memcached-1.4.31$ sudo make install[sudo] password for derek:make  install-recursivemake[1]: Entering directory '/home/derek/Downloads/memcached-1.4.31'Making install in doc............make[3]: Leaving directory '/home/derek/Downloads/memcached-1.4.31'make[2]: Leaving directory '/home/derek/Downloads/memcached-1.4.31'make[1]: Leaving directory '/home/derek/Downloads/memcached-1.4.31'derek@root:~/Downloads/memcached-1.4.31$

4. 测试是否成功安装memcached

derek@root:~/Downloads/memcached-1.4.31$ ls -al /usr/local/bin | grep memcached-rwxr-xr-x  1 root root 617016  911 22:17 memcachedderek@root:~/Downloads/memcached-1.4.31$

安装OK!

二、启动Memcache服务

1. 启动Memcache

derek@root:~$ cd /usr/local/binderek@root:/usr/local/bin$ lltotal 612drwxr-xr-x  2 root root   4096  911 22:17 ./drwxr-xr-x 10 root root   4096 1021  2015 ../-rwxr-xr-x  1 root root 617016  911 22:17 memcached*derek@root:/usr/local/bin$ memcached -d -m 50 -u derek -l 192.168.0.102 -p 12121 -c 256 -P /tmp/memcached.pidderek@root:/usr/local/bin$

进入/usr/local/bin目录下,然后启动memcached,需要带些参数:

  • -d 启动一个守护进程
  • -m 是分配给Memcache使用的内存大小,单位MB,此处分配50MB
  • -u 运行Memcache的用户,此处为derek
  • -l 设置 监听的服务器ip地址
  • -p 设置 监听的端口,此处为:12121, 最好是1024以上的端口
  • -c 选项是最大运行的并发连接数,默认是1024
  • -P 设置保存Memcache的pid文件

/tmp/memcached.pid中的内容为(进程号):

derek@root:/tmp$ cat memcached.pid10180derek@root:/tmp$

2. 结束Memcache

结束Memcache进程,执行:

kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复(没有试)

3. 测试Memcache

➜  ~ telnet 192.168.0.102 12121Trying 192.168.0.102...Connected to 192.168.0.102.Escape character is '^]'.set key1 0 60 4derekCLIENT_ERROR bad data chunkERRORERRORset key1 0 60 9helloSTOREDCLIENT_ERROR bad data chunkERRORget key1ENDERRORset key1 0 60 9seaprinceSTOREDget key1VALUE key1 0 9seaprinceENDstatsSTAT pid 10180STAT uptime 764STAT time 1473605258STAT version 1.4.31STAT libevent 2.0.22-stableSTAT pointer_size 64STAT rusage_user 0.272000STAT rusage_system 0.176000STAT curr_connections 5STAT total_connections 7STAT connection_structures 6STAT reserved_fds 20STAT cmd_get 2STAT cmd_set 4STAT cmd_flush 0STAT cmd_touch 0STAT get_hits 1STAT get_misses 1STAT get_expired 0STAT get_flushed 0STAT delete_misses 0STAT delete_hits 0STAT incr_misses 0STAT incr_hits 0STAT decr_misses 0STAT decr_hits 0STAT cas_misses 0STAT cas_hits 0STAT cas_badval 0STAT touch_hits 0STAT touch_misses 0STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 185STAT bytes_written 209STAT limit_maxbytes 52428800STAT accepting_conns 1STAT listen_disabled_num 0STAT time_in_listen_disabled_us 0STAT threads 4STAT conn_yields 0STAT hash_power_level 16STAT hash_bytes 524288STAT hash_is_expanding 0STAT malloc_fails 0STAT log_worker_dropped 0STAT log_worker_written 0STAT log_watcher_skipped 0STAT log_watcher_sent 0STAT bytes 78STAT curr_items 1STAT total_items 1STAT expired_unfetched 0STAT evicted_unfetched 0STAT evictions 0STAT reclaimed 0STAT crawler_reclaimed 0STAT crawler_items_checked 0STAT lrutail_reflocked 0ENDquitConnection closed by foreign host.➜  ~

注意:set key1 0 60 9

  • key1 表示key的名字
  • 0 表示一个跟该key有关的自定义数据
  • 60 表示该key的有效时间
  • 9 表示key1值得字节数

最后,Memcache安装启动成功!

未完待续……

0 0
原创粉丝点击