memcached,memcacheq队列的相关


------------------------------------------------------------

------------------------------------------------------------

1,安装libeventhttps://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz

2,安装BerkeleyDBwget http://download.oracle.com/otn/berkeley-db/db-6.0.20.tar.gz
或者http://download.huihoo.com/berkeleydb/bdb/
http://wiki.huihoo.com/index.php?title=Berkeley_DB#Linux.E7.8E.AF.E5.A2.83.E4.B8.8B.E5.AE.89.E8.A3.85
tar zxvf db-5.2.36.tar.gz
cd build_unix
../dist/configure --prefie=/usr/local/db6.0.20makesudo make install
----------------------------------------------------------------------

-----------------------------------------------------------------------

3,安装Memcacheqhttps://code.google.com/p/memcacheq/downloads/list
注意指定:--with-bdb=/usr/local/db6.0.20 
./configure --prefix=/usr/local/memcacheq --enable-threads --with-bdb=/usr/local/db6.0.20
make 
sudo make install
error while loading shared libraries: libdb-6.0.so: cannot open shared object file: No such file or directory
sudo ln -s /usr/local/db6.0.20/lib/libdb-6.0.so  /usr/lib/libdb-6.0.so

一,memcacheq的使用:
①,当使用set命令时,就向指定的消息队列中写入了一条新消息,也就是向BerkeleyDB中新insert了一条数据;
②,当使用get命令时,就从 指定队列中取出一条新消息,也就是向BerkeleyDB中delete了一条数据,这个时候再去get的话就返回空了,队列里没消息;
③,可以通过:stats,stats queue来查看。


hadoop@hadoopslave1:~/bigdata/hbase/bin$ telnet 172.16.201.170 11212
Trying 172.16.201.170...
Connected to 172.16.201.170.
Escape character is '^]'.
stats
STAT pid 31183
STAT uptime 605
STAT time 1372580856
STAT version 0.2.0
STAT pointer_size 64
STAT rusage_user 0.076004
STAT rusage_system 0.892055
STAT curr_connections 6
STAT total_connections 9
STAT connection_structures 7
STAT get_cmds 4
STAT get_hits 1
STAT set_cmds 1
STAT set_hits 1
STAT bytes_read 415
STAT bytes_written 2870
STAT threads 4
END
stats queue
STAT q4 1/1
END
set q  0 0 5
hhhhh
STORED
set qq 0 0 5
qqqqq
STORED
stats 
STAT pid 31183
STAT uptime 661
STAT time 1372580912
STAT version 0.2.0
STAT pointer_size 64
STAT rusage_user 0.080005
STAT rusage_system 0.908056
STAT curr_connections 6
STAT total_connections 9
STAT connection_structures 7
STAT get_cmds 4
STAT get_hits 1
STAT set_cmds 3
STAT set_hits 3
STAT bytes_read 478
STAT bytes_written 3273
STAT threads 4
END
stats queue
STAT q 1/0
STAT qq 1/0
STAT q4 1/1
END
get qq
VALUE qq 0 5
qqqqq
END
stats queue
STAT q 1/0
STAT qq 1/1
STAT q4 1/1
END
stats queue
STAT q 1/0
STAT qq 1/1
STAT q4 1/1
END
get q
VALUE q 0 5
hhhhh
END
stats queue
STAT q 1/1
STAT qq 1/1
STAT q4 1/1
END
get q
END
get qq
END 


二,Ubuntu下安装Memcached


1,安装libevent
wget http://www.monkey.org/~provos/libevent-2.0.13-stable.tar.gz
tar xzvf  libevent-2.0.13-stable.tar.gz
./configure
make
sudo make install
2,安装memcached
wget http://memcached.googlecode.com/files/memcached-1.4.7.tar.gz
tar xvzf memcached-1.4.7.tar.gz 
cd memcached-1.4.7
./configure --prefix=/usr/local/memcached/
make
make install
有时需要创建软链接
ln -s /usr/local/lib/libevent-2.0.so.5 /lib/libevent-2.0.so.5
memcached的启动
./memcached -d -m 2048 -l 10.0.0.40 -p 11211
-d 守护进程的方式启动
内存设置-------------------
-m 制定内存
-M 内存不够是禁止LRU,报错
-n 48 初始化chuck=key+suffix+value+32结构体,默认48字节
-f 增长银子,默认1.25
-L 启动大内存页,可以降低内存浪费,改进性能
链接设置------------------
-l 服务器名
-p TCP端口号,默认11211
-U UDP端口 默认11211


-c 设置最大并发的线程数
-t 线程数 默认4,由于memcached采用NIO,过多线程作用不大
-P 保存memcached的pid文件
-C 禁止使用那个CAS命令,可以禁止版本计数,减少开销
-R 每个event连接最大并发数,默认20
-h 显示帮助
连接到memcached服务器
telnet localhost 11211/telnet localhost 11211
stats


/shell&
echo stats | nc localhost 11211
watch "echo stats | nc 192.168.1.123 11200" (实时状态)
STAT pid 22021


STAT uptime 78


STAT time 1366042693


STAT version 1.4.7


STAT libevent 2.0.13-stable


STAT pointer_size 32


STAT rusage_user 0.000000


STAT rusage_system 0.000000


----------连接数是否太多--------------------
STAT curr_connections 5
------open连接数量
STAT total_connections 6
-----服务器运行以来接受的连接总数
----------------------------
STAT connection_structures 6


STAT cmd_get 0
----取回请求总数
STAT cmd_set 0
----存储请求总数
STAT cmd_flush 0


----------命中率+STAT cmd_get 0
-------------
STAT get_hits 0
---------请求成功的总次数
STAT get_misses 0
-------请求失败的总次数
-------------------------------------------
STAT delete_misses 0


STAT delete_hits 0


STAT incr_misses 0


STAT incr_hits 0


STAT decr_misses 0


STAT decr_hits 0


STAT cas_misses 0


STAT cas_hits 0


STAT cas_badval 0


STAT auth_cmds 0


STAT auth_errors 0


STAT bytes_read 7
------------服务器从网络读取到的总字节数
STAT bytes_written 0
---------服务器向网络发送的总字节
STAT limit_maxbytes 2147483648


STAT accepting_conns 1


STAT listen_disabled_num 0


STAT threads 4


STAT conn_yields 0


STAT bytes 0


STAT curr_items 0


STAT total_items 0


STAT evictions 0


STAT reclaimed 0


<command> <key> <flags> <expiretime> <bytes> [version]
- <flags> 是在取回内容时,与数据和发送块一同保存服务器上的任意16位无符号整形(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。
<expiretime> 0表示永远,《30天60*60*24*30》
<bytes> value的字节数
<command name> is "set", "add" or "replace"
set 意思是 “储存此数据” 
add 意思是 “储存此数据,只在服务器*未*保留此键值的数据时” (key不存在是保存)
replace意思是 “储存此数据,只在服务器*曾*保留此键值的数据时”
(key存在时replace)
"set" means "store this data". 
"add" means "store this data, but only if the server *doesn't* already
hold data for this key". 
"replace" means "store this data, but only if the server *does*
already hold data for this key".


set 无论如何都进行存储
add 只有key不存在时进行添加
repalce 只有数据存在时进行替换
cas操作,means:check and set 只有版本号相匹配是才能存取,否则返回EXISTS
目的:多客户端并发修改同一条记录的问题,防止使用改变了的key/valuee对




status slabs 区块数据统计
stats slabs


STAT 1:chunk_size 80


STAT 1:chunks_per_page 13107


STAT 1:total_pages 1


STAT 1:total_chunks 13107


STAT 1:used_chunks 2


STAT 1:free_chunks 1


STAT 1:free_chunks_end 13104


STAT 1:mem_requested 111


STAT 1:get_hits 4


STAT 1:cmd_set 6


STAT 1:delete_hits 0


STAT 1:incr_hits 0


STAT 1:decr_hits 0


STAT 1:cas_hits 0


STAT 1:cas_badval 0


STAT active_slabs 1


STAT total_malloced 1048560


stats settings 设置查看
stats settings


STAT maxbytes 2147483648


STAT maxconns 1024


STAT tcpport 11211


STAT udpport 11211


STAT inter 127.0.0.1


STAT verbosity 0


STAT oldest 0


STAT evictions on


STAT domain_socket NULL


STAT umask 700


STAT growth_factor 1.25


STAT chunk_size 48


STAT num_threads 4


STAT num_threads_per_udp 4


STAT stat_key_prefix :


STAT detail_enabled no


STAT reqs_per_event 20


STAT cas_enabled yes


STAT tcp_backlog 1024


STAT binding_protocol auto-negotiate


STAT auth_enabled_sasl no


STAT item_size_max 1048576


stats items
数据项统计
stats items


STAT items:1:number 2


STAT items:1:age 13982


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 0


END


stats sizes
对象数据统计
stats sizes


STAT 64 2


END


/////////////
注意点
1,必须长度适合才可以存取<bytes>
2,set 存取
3,add只能添加不存在的key
4,replace只能操作存在的key
5, gets版本书+1
6,cas check and set 多客户端并发 
版本号匹配才可以存取
set mc 12 0 9


memcached


STORED


get mc


VALUE mc 12 9


memcached


END


add mc 12 0 9


hadooperr


NOT_STORED


get mc


VALUE mc 12 9


memcached


END


repalace mc 12 0 9 


ERROR


get mc   


VALUE mc 12 9


memcached


END


replace mc 12 0 9 


memcachef


STORED


get mc


VALUE mc 12 9


memcachef


END


replace kkk 0 0 5


mmmmm 


NOT_STORED


gets mc


VALUE mc 12 9 5


memcachef


END


get mc


VALUE mc 12 9


memcachef


END


gets mc


VALUE mc 12 9 5


memcachef


END


replace mc 12 0 9


memcacheg


STORED


get mc


VALUE mc 12 9


memcacheg


END


gets mc


VALUE mc 12 9 6


memcacheg


END


cas mc 21 0 9 6


gets mc






STORED


gets mc


VALUE mc 21 9 7


gets mc




END


---只有版本号匹配才可以存取,否则EXISTS
cas mc 12 0 9 6


memcaches


EXISTS


gets mc


VALUE mc 21 9 7


gets mc

END


打算在看看UC的UCMQ:

https://github.com/ucweb/ucmq




























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值