Memcache 安装配置使用

        Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。                                                                                                            它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
       Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

特点

 

  • · 协议简单
  • · 基于libevent的事件处理
  •  内置内存存储方式
  •  memcached不互相通信的分布式

协议

memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议
因此,通过telnet也能在memcached上保存数据、取得数据。
 
 

事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
 

存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。
由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失
另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。
memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

通信分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。
各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。
 
安装:
这里使用 yum安装
memcache 依赖于 libevent驱动,请先安装libevent
# yum install libevent libevent-devel
# yum install memcached

 

配置启动:
# memcached -d -m 10 -p 12000 -c 256 -u root
 
# memcached --help

memcached 1.5.3
-p, --port=<num> TCP port to listen on (default: 11211)                        监听端口 (tcp)
-U, --udp-port=<num> UDP port to listen on (default: 11211, 0 is off)   监听端口   (udp)
-s, --unix-socket=<file> UNIX socket to listen on (disables network support)
-A, --enable-shutdown enable ascii "shutdown" command       允许客户端发送shutdown 关闭memcache进程
-a, --unix-mask=<mask> access mask for UNIX socket, in octal (default: 0700)
-l, --listen=<addr> interface to listen on (default: INADDR_ANY)      监听地址、默认所有
-d, --daemon run as a daemon   以守护进程方式运行
-r, --enable-coredumps maximize core file limit
-u, --user=<user> assume identity of <username> (only when run as root)   仅当root启动时 要指定运行用户
-m, --memory-limit=<num> item memory in megabytes (default: 64 MB)   设置可使用内存大小、默认64M
-M, --disable-evictions return error on memory exhausted instead of evicting
-c, --conn-limit=<num> max simultaneous connections (default: 1024)   允许多少客户端连接
-k, --lock-memory lock down all paged memory
-F, --disable-flush-all disable flush_all command     禁止客户端使用刷新命令

-v, --verbose verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/responses)
-vvv extremely verbose (internal state transitions)
-h, --help print this help and exit
-V, --version print version and exit

 
 使用语法:

五种基本 memcached 命令执行最简单的操作。这些命令和操作包括:

set     强制新增
add     新增
replace 替换 
get     取值
delete  删除
 

前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用如下 所示的语法:

复制代码
command <key> <flags> <expiration time> <bytes>
<value>

参数说明如下:
command set/add/replace
key       key 用于查找缓存值
flags     可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time     在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes     在缓存中存储的字节数
value     存储的值(始终位于第二行)
get 取值  delete 删除键值  更简单
get|delete key 

 

查看状态   stats

清理缓存中所有键值  flush_all

追加数据(原数据后)  append 

追加数据(原数据前)  prepend

 

 

连接:
许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的语言就有
· Perl
· PHP
· Python
· Ruby
· C#
· C/C++
· Lua
 
这里简单使用 telnet和nc 来连接memcache
# telnet localhost 11211
Trying 127.0.0.1
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3                   (保存命令)
bar                                   (数据)
STORED                        (结果)
get foo                            (取值)
VALUE foo 0 3              (数据)
bar                                   (数据)

 

posted @ 2017-12-01 15:21  乌托邦眺望  阅读(1144)  评论(0编辑  收藏  举报