Ubuntu 16.04安装Memcached,不过不仅限与Ubuntu,可以用CentOS等去安装,只不过测试时使用的是Ubuntu机器。Windows下不建议使用,本机调试可以使用,线上环境除了Windows之外都可以使用。
说明:在Linux下建议使用源码的形式安装,至少整个安装的文件是清晰的,包括新建了什么文件等。在CentOS下要注意管理员权限运行。
准备条件:
Linux系统安装memcached,首先要先安装libevent库。
自动安装:
#(Ubuntu/Debian)
sudo apt-get install libevent libevent-deve
#(Redhat/Fedora/Centos)
yum install libevent libevent-deve
源代码安装:
下载最新版:http://libevent.org/
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable/
sudo su
./configure
make && make install
安装Memcached
自动安装:
#(Ubuntu/Debian)
sudo apt-get install memcached
#(Redhat/Fedora/Centos)
yum install memcached
#(FreeBSD)
portmaster databases/memcached
源代码安装:
从其官方网站(http://memcached.org)下载Memcached最新版本。
#下载最新版本
wget http://memcached.org/latest
#重命名
mv latest memcached.tar.gz
#解压源码
tar -zxvf memcached.tar.gz
#进入目录
cd memcached-1.5.1/
#切换root权限
sudo su
#配置
./configure --prefix=/usr/local/memcached/
#编译
make && make test
#安装
make install
如果上面报libevent-2.1.so.6的错误,参考:http://www.cnblogs.com/EasonJim/p/7580220.html
卸载(卸载前先kill全部进程:killall memcached):
源代码安装的:
sudo rm -rf /usr/local/memcached
自动安装的:
#(Ubuntu)
sudo apt remove memcached
#(CentOS)
yum remove memcached
Memcached运行
Memcached命令的运行:
#命令帮助
/usr/local/memcached/bin/memcached -h
注意:如果使用自动安装Memcached命令位于/usr/local/bin/memcached。
常用启动选项:
- -d:是启动一个守护进程;
- -m:是分配给Memcache使用的内存数量,单位是MB;
- -u:是运行Memcache的用户;
- -l:是监听的服务器IP地址,可以有多个地址;
- -p:是设置Memcache监听的端口,最好是1024以上的端口;
- -c:是最大运行的并发连接数,默认是1024;
- -P:是设置保存Memcache的pid文件。
详细启动选项:
- "A":是否运行客户端使用shutdown命令。默认是不允许的。该选项将允许。客户端的shutdown命令会将Memcached进程杀死。该选项会将settings.shutdown_command赋值为false
- "a":unix socket的权限位信息(访问掩码)。该选项的参数赋值给settings.access
- "U":大写U。Memcached监听的UDP端口值,默认端口为11211。该选项的参数赋值给settings.udpport
- "p":小写p,Memcached监听的tcp端口。默认端口为11211, 该选项的参数赋值给settings.port
- "s":小写S。unix socket监听的socket路径。该选项的参数赋值给settings.socketpath
- "m":小写m。Memcached能够使用的最大内存值,默认是64MB。参数单位为MB。该参数赋值给settings.maxbytes
- "M":大写M。默认情况下,当Memcached的内存使用完后,将进行LRU机制淘汰item以腾出空间。如果使用本选项那么将关闭LRU功能。当然关闭LRU不代表不能存储新数据。如果Memcached里面存有过期失效的item,那么就可以存储新数据。否则将无法存储。该选项将settings.evict_to_free赋值为0。
- "c":小写c。最多允许多少个客户端同时在线(这个值不等价于listen函数的第二个参数),该选项和后面的b选项有所不同。 默认值为1024个。该选项参数赋值给settings.maxconns。
- "h":显示帮助信息
- "i":显示memcached和libevent的版权信息
- "k":小写k。将Memcached使用到的内存锁定在内存中,不准OS把Memcached的内存移动到虚拟内存。因为当OS把Memcached的内存移动到虚拟内存可能会导致页错误,降低Memcached的响应时间
- "v":小写v。输出Memcached运行时的一些信息。-v -vv -vvv输出的信息依次增加。该选项会增加settings.verbose的值
- "l":Memcached绑定的ip地址。如果不设置这个选项,那么Memcached将使用INADDR_ANY。如果想指定多个IP地址,那么该选项的参数可以由多个ip组成,ip之间用逗号分隔。也可以多次使用这个选项,此时端口应该尾随ip而不是单独用-p选项指定。例如-l 127.0.0.1:8888,192.168.1.112:9999 或者 -l 127.0.0.1:8888 -l 192.168.1.112:9999该选项参数将赋值给settings.inter
- "d":以守护进程的形式运行Memcached
- "r":将core文件大小设置为不受限制
- "R":worker线程连续为某个客户端执行命令的最大命令数。该选项的参数赋值给settings.reqs_per_event
- "u":小写u。当以root用户启动Memcached的时候需要指定Memcached的所属用户,其他用户启动Memcached不需要此选项
- "P":大写p。该选项的参数指明Memcached的pid保存文件。要和-d选项配合使用。注意运行的用户是否有权限写对应的文件
- "f":item的扩容因子。默认值为1.25。该选项的参数值可以是小数但必须大于1.0。该选项参数将赋值给settings.factor
- "n":设置最小的item能存储多少字节的数据。该选项参数赋值给settings.chunk_size
- "t":该选项的参数用于指定worker线程的个数,不建议超过64个。如果不设置该选项默认有4个线程。该参数会赋值给settings.num_threads
- "D":参数字符作为前缀和ID的分隔符。使用了该选项才会自动收集状态信息。也可以在启动Memcached后,客户端使用stats detail on命令开启,此时默认的分隔符为冒号":"。该选项参数会赋值为settings.prefix_delimiter,并将settings.detail_enabled赋值为1
- "L":如果OS允许的话,那么向OS申请更大的内存页。OS的默认内存页为4KB。大的内存页可以有效降低页表的大小,提高效率。此选项会使得Memcached预先先OS全部所需的申请内存。当然这些内存尽量是用大内存页分配的
- "C":大写C。Memcached默认是使用CAS的,本选项是禁用CAS。本选项会将settings.use_cas赋值为false
- "b":listen函数的第二个参数。该选项的参数赋值给settings.backlog。如果不设置该选项,那么默认为1024。该选项和前面的c选项有所不同
- "B":Memcached支持文本协议和二进制协议。该选项的参数用于指定使用的协议。默认情况下是根据客户端的命令而自动判断(也叫协商),参数只能取auto、binary、ascii这三个字符串值。将参数将赋值给settings.binding_protocol
- "I":slab分配器中,每一个页的大小。这个选项的参数是一个数值表示页的大小。默认单位是B也可以在数值后面带K或者M(大小写都行),表示KB和MB。页的大小小于1KB或者大于128MB都是不允许的。不推荐使用该选项。本选项参数会赋值给settings.item_size_max
- "S":大写S。打开sasl安全协议。会将settings.sasl赋值为true
- "F":禁止客户端的flush_all命令。默认是允许客户端的flush_all命令的。该选项将settings.flush_enabled赋值为false
- "o":有下面几个子选项可以设置。这个选项是用来优化的
- maxconns_fast: 如果连接数超过了最大同时在线数(由-c选项指定),立即关闭新连接上的客户端。该选项将settings.maxconns_fast赋值为true
- hashpower: 哈希表的长度是2^n。可以通过选项hashpower设置指数n的初始值。如果不设置将取默认值16。该选项必须有参数,参数取值范围只能为[12, 64]。本选项参数值赋值给settings.hashpower_init
- slab_reassign: 该选项没有参数。用于调节不同类型的item所占的内存。不同类型是指大小不同。某一类item已经很少使用了,但仍占用着内存。可以通过开启slab_reassign调度内存,减少这一类item的内存。如果使用了本选项,settings.slab_reassign赋值为true
- slab_automove: 依赖于slab_reassign。用于主动检测是否需要进行内存调度。该选项的参数是可选的。参数的取值范围只能为0、1、2。参数2是不建议的。本选项参数赋值给settings.slab_automove。如果本选项没有参数,那么settings.slab_automove赋值为1
- hash_algorithm: 用于指定哈希算法。该选项必须带有参数。并且参数只能是字符串jenkins或者murmur3
- tail_repair_time: 用于检测是否有item被已死线程所引用。一般不会出现这种情况,所以默认不开启这种检测。如果需要开启这种检测,那么需要使用本选项。本选项需要一个参数,参数值必须不小于10。该参数赋值给settings.tail_repair_time
- lru_crawler: 本选项用于启动LRU爬虫线程。该选项不需要参数。本选项会导致settings.lru_crawler赋值为true
- lru_crawler_sleep: LRU爬虫线程工作时的休眠间隔。本选项需要一个参数作为休眠时间,单位为微秒,取值范围是[0, 1000000]。该参数赋值给settings.lru_crawler_sleep
- lru_crawler_tocrawl: LRU爬虫检查每条LRU队列中的多少个item。该选项带有一个参数。参数会赋值给settings.lru_crawler_tocrawl
1、作为前台程序运行:
/usr/local/memcached/bin/memcached -p 11211 -m 64m -vv
这样会显示调试信息。命令在前台启动了Memcached,监听TCP端口11211,最大内存使用量为64M。调试信息的内容大部分是关于存储的信息。
2、作为后台服务程序运行:
/usr/local/memcached/bin/memcached -p 11211 -m 64m -d
或者
/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid
3、查看启动状态
sudo netstat -ntpl | grep memcached
测试
telnet 192.168.0.200 11211
增加开机启动
Ubuntu:
有两种方式:1在rc.local中设置启动,2使用update-rc.d增加开机启动服务
下面是通过rc.local启动的脚本:
#!/bin/sh -e
rc.local
This script is executed at the end of each multiuser runlevel.
Make sure that the script will "exit 0" on success or any other
value on error.
In order to enable or disable this script just change the execution
bits.
By default this script does nothing.
#log
exec 2> /tmp/rc.local.log # send stderr from rc.local to a log file
exec 1>&2 # send stdout to the same log file
set -x # tell sh to display commands before execution
#Memcached
/usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root exit 0
CentOS(没实践过):
有三种方式:
1在rc.local中设置启动(位置在/etc/rc.d/rc.local)。
2使用chkconfig增加开机启动服务。
3在scripts文件夹下有个memcaed.sysv的文件(注意:这个文件不适合Ubuntu),拷贝到/etc/init.d下,然后使用chkconfig进行服务的添加即可。
离线版本:
链接: https://pan.baidu.com/s/1kU9DLI3 密码: k6qg
参考:
http://www.linuxidc.com/Linux/2016-07/133423.htm
http://www.runoob.com/memcached/memcached-install.html
http://www.wuwenhui.cn/3714.html(CentOS卸载Memcached)
http://blog.csdn.net/ydwei918/article/details/46455471(CentOS卸载Memcached)
http://blog.csdn.net/qq_33862332/article/details/50907951(启动参数参考)