------------------------------------------------------------
------------------------------------------------------------
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:
memcached,memcacheq队列的相关
最新推荐文章于 2021-03-24 09:21:26 发布