您的位置:首页 > 数据库 > Memcache

Memcached

2016-03-02 16:19 519 查看
memcached: udp/11211 , tcp/11211

优点:是一款kv存储,能够快速的对数据进行查询,对过期数据进行惰性管理,即检查到过期数据(LRU),将其标记为过期,但不会清理,当下次有新的数据需要缓存这部分空间的时候,直接覆盖掉这部分就可以了,因此不会对过期数据采取动作而消耗性能
缺点:kv缓存的数据模式过于单一,不能处理更复杂的数据格式,并且无存储功能,默认没有认证功能,通常都是在系统内部完成数据的存储,但是可以通过sasl完成认证功能

INSTALL

yum install -y memcached 即可,已收录到centos的base源中了

Use

telnet 127.0.0.1 11211
format: command flag timeout datasize
command:add,append,prepend,delete

eg1:

# telnet 127.0.0.1 11211

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

add 1key 0 300 5

hello

STORED

get 1key

VALUE 1key 0 5

hello

END

append 1key 0 300 2

hi

STORED

get 1key

VALUE 1key 0 7

hellohi

END

prepend 1key 0 30 3

use

STORED

get 1key

VALUE 1key 0 10

usehellohi

END

get 1key

VALUE 1key 0 10

usehellohi

END

add counts 0 300 2

20

STORED

incr counts 2

22

decr counts 1

21

stats items

STAT items:1:number 2

STAT items:1:age 107

STAT items:1:evicted 0

STAT items:1:evicted_nonzero 0

STAT items:1:evicted_time 0

STAT items:1:outofmemory 0

STAT items:1:tailrepairs 0

STAT items:1:reclaimed 2

STAT items:1:expired_unfetched 0

STAT items:1:evicted_unfetched 0

END

quit

总结:
存储类命令:set,add,pretent,append,replace
获取类命令:get ,delete,incr/decr
统计类命令:stats ,stats items,stats slabs,stats sizes
清理类命令:flush_all

eg2:

# memcached -f 2 -vv -u root ///-f 指定增长因子,默认为1.25倍,即在指定的缓存空间中,指定每个chunk的增长因子,以避免空间的浪费,或者chunk的种类,两者取一

slab class 1: chunk size 96 perslab 10922

slab class 2: chunk size 192 perslab 5461

slab class 3: chunk size 384 perslab 2730

slab class 4: chunk size 768 perslab 1365

slab class 5: chunk size 1536 perslab 682

slab class 6: chunk size 3072 perslab 341

slab class 7: chunk size 6144 perslab 170

slab class 8: chunk size 12288 perslab 85

slab class 9: chunk size 24576 perslab 42

slab class 10: chunk size 49152 perslab 21

slab class 11: chunk size 98304 perslab 10

slab class 12: chunk size 196608 perslab 5

slab class 13: chunk size 393216 perslab 2

slab class 14: chunk size 1048576 perslab 1

LAMP + memcached
yum install -y httpd php php-pecl-memcache memcached
[root@zhuyuan src]# cat /var/www/html/mem.php

cat /var/www/html/mem.php

<?php

$mem = new Memcache;

$mem-> connect('127.0.0.1',11211) or die ("could not connetc.");

$version = $mem->getVersion();

echo "server's version is: $version ";

$mem->set('putty','sunset nimo',0,300);

?>

用浏览器访问地址,http://172.16.52.59/mem.php
]# telnet 127.0.0.1 11211

telnet 127.0.0.1 11211

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

get putty

VALUE putty 0 11

sunset nimo

分布式缓存:
取膜法:一旦增加新的memcached服务器容易产生雪崩效应
一致性哈希:除了解决取膜法的蝴蝶效应,还解决哈希环偏斜,将同一个节点虚拟映射分散到环上的多处,因此虚拟节点可以解决哈希环偏斜

若想以c语言来连接memcached
yum list all |grep "memcache"

////libmemcached就是memcache的c库
yum install -y libmemcached
rpm -ql libmemcached|less
///可以看到提供了很多命令,比如memping检查主机与memcached连接服务是否正常
]# memping --servers=172.16.52.59
///因为本机的ip地址为59,并且连接了memcached,因此无报错

]# memping --servers=172.16.52.60

Failed to ping 172.16.52.60:11211 CONNECTION FAILURE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: