linux之memcache编译安装及使用
memcache是一套分布式的高速缓存系统,特点为key-value 存储。
1、编译安装memcache
安装依赖工具包
编译安装memcache、redis等,需要 gcc,make,cmake,autoconf,libtool 等工具, 直接使用yum安装即可.
yum install -y gcc make cmake autoconf libtool
下载官方源码
memcached依赖于libevent库,libevent是一个轻量级的基于事件驱动的高性能的开源网络库,并且支持多个平台,对多个平台的I/O复用技术进行了封装,当我们编译库的代码时,编译的脚本将会根据OS支持的处理事件机制,来编译相应的代码,从而在libevent接口上保持一致,因此需要先安装 libevent。
libevent下载地址:http://libevent.org/,最新版本2.1.11
memcache官网下载地址:http://memcached.org/,最新版本1.5.17
cd /opt/
wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz
wget http://www.memcached.org/files/memcached-1.5.17.tar.gz
安装libevent依赖和memcache:
tar zxvf libevent-2.1.11-stable.tar.gz
cd libevent-2.1.11-stable
./configure --prefix=/usr/local/libevent
make && make install
cd ..
tar zxvf memcached-1.5.17.tar.gz
cd memcached-1.5.17
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install
注意在configure过程中如果报错,一般是缺少库,安装完成后就会在/usr/local目录下看到memcached目录,启动memcache:
cd /usr/local/memcached
/usr/local/memcached/bin/memcached -d -m 8192M -p 11211 -c 2048 -I 2m -u memcached
主要参数如下:
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是8192MB
-p 是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了2048
-I 调整分配page页的大小,默认1M,最小1K,最大1024M;
-u 是运行Memcache的用户,如果当前为 root 的话,需要使用此参数指定用户memcached
-l 是监听的服务器IP地址,如果有多个地址的话,默认是服务器的IP地址,可省略
-P 是设置保存Memcache的pid文件,可省略
也可以启动多个守护进程,但是端口不能重复
2、连接使用memcache
telnet连接memcache
[root@localhost ~]# telnet 192.168.168.168 11211
Trying 192.168.168.168...
Connected to 192.168.168.168 (192.168.168.168).
Escape character is '^]'.
连接成功之后,即可对memcache进行操作管理。
常用命令
添加修改
命令格式:<command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n
<command>:add, set或 replace
<key> :缓存的名字
<flag>:16位无符号整数,和key要存储的数据一起存储,并在程序get缓存时,返回。
<exptime>:过去时间,0 表示永远不过期,如果非零,表示unix时间或距此秒数
<bytes>:存储数据的字节数
\r\n: 表示换行回车
命令结果:
STORED :表示成功
NOT_STORED : 表示失败
添加缓存
add id 1 0 4
1234
STORED
如果key已经存在,则会添加失败。
修改缓存
replace id 1 0 4
3456
STORED
key存在时,成功;不存在时,失败。
设置缓存
set id 1 0 4
2345
STORED
key不存在时,添加【add】;已存在时,替换【replace】。
读取
命令格式:get +\r\n
+:表示一个或多个key,多个key时,用空格隔开
a、读取单个key的缓存
get id
VALUE id 1 4
1234
END
b、读取多个key的缓存
get id name
VALUE id 1 4
3456
VALUE name 1 3
jim
END
删除
命令格式:delete \r\n
< key >:要删除的key
删除id
delete id
DELETED
清空所有缓存
命令格式:flush_all
flush_all
OK
查看缓存服务器状态
命令:stats
stats
STAT pid 4843
STAT uptime 863252
STAT time 1568601757
STAT version 1.5.16
STAT libevent 2.1.10-stable
STAT pointer_size 64
STAT rusage_user 104.157308
STAT rusage_system 19.241643
STAT max_connections 2048
STAT curr_connections 12
STAT total_connections 24
STAT rejected_connections 0
STAT connection_structures 13
STAT reserved_fds 20
STAT cmd_get 53
STAT cmd_set 26
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 53
STAT get_expired 0
STAT get_flushed 0
STAT delete_misses 3
STAT delete_hits 2
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 touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 20596
STAT bytes_written 594
STAT limit_maxbytes 8589934592
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT slab_reassign_rescues 0
STAT slab_reassign_chunk_rescues 0
STAT slab_reassign_evictions_nomem 0
STAT slab_reassign_inline_reclaim 0
STAT slab_reassign_busy_items 0
STAT slab_reassign_busy_deletes 0
STAT slab_reassign_running 0
STAT slabs_moved 0
STAT lru_crawler_running 0
STAT lru_crawler_starts 68596
STAT lru_maintainer_juggles 4553164
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 0
STAT curr_items 0
STAT total_items 26
STAT slab_global_page_pool 0
STAT expired_unfetched 3
STAT evicted_unfetched 0
STAT evicted_active 0
STAT evictions 0
STAT reclaimed 3
STAT crawler_reclaimed 0
STAT crawler_items_checked 56
STAT lrutail_reflocked 0
STAT moves_to_cold 17
STAT moves_to_warm 0
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
END
打印版本
命令:version
version
VERSION 1.5.16
打印内存信息
命令:stats slabs
stats slabs
STAT 4:chunk_size 192
STAT 4:chunks_per_page 5461
STAT 4:total_pages 1
STAT 4:total_chunks 5461
STAT 4:used_chunks 0
STAT 4:free_chunks 5461
STAT 4:free_chunks_end 0
STAT 4:mem_requested 0
STAT 4:get_hits 0
STAT 4:cmd_set 2
STAT 4:delete_hits 0
STAT 4:incr_hits 0
STAT 4:decr_hits 0
STAT 4:cas_hits 0
STAT 4:cas_badval 0
STAT 4:touch_hits 0
STAT 5:chunk_size 240
STAT 5:chunks_per_page 4369
STAT 5:total_pages 1
STAT 5:total_chunks 4369
STAT 5:used_chunks 0
STAT 5:free_chunks 4369
STAT 5:free_chunks_end 0
STAT 5:mem_requested 0
STAT 5:get_hits 0
STAT 5:cmd_set 5
STAT 5:delete_hits 0
STAT 5:incr_hits 0
STAT 5:decr_hits 0
STAT 5:cas_hits 0
STAT 5:cas_badval 0
STAT 5:touch_hits 0
STAT 9:chunk_size 600
STAT 9:chunks_per_page 1747
STAT 9:total_pages 1
STAT 9:total_chunks 1747
STAT 9:used_chunks 0
STAT 9:free_chunks 1747
STAT 9:free_chunks_end 0
STAT 9:mem_requested 0
STAT 9:get_hits 0
STAT 9:cmd_set 6
STAT 9:delete_hits 0
STAT 9:incr_hits 0
STAT 9:decr_hits 0
STAT 9:cas_hits 0
STAT 9:cas_badval 0
STAT 9:touch_hits 0
STAT 12:chunk_size 1184
STAT 12:chunks_per_page 885
STAT 12:total_pages 1
STAT 12:total_chunks 885
STAT 12:used_chunks 0
STAT 12:free_chunks 885
STAT 12:free_chunks_end 0
STAT 12:mem_requested 0
STAT 12:get_hits 0
STAT 12:cmd_set 5
STAT 12:delete_hits 0
STAT 12:incr_hits 0
STAT 12:decr_hits 0
STAT 12:cas_hits 0
STAT 12:cas_badval 0
STAT 12:touch_hits 0
STAT 13:chunk_size 1480
STAT 13:chunks_per_page 708
STAT 13:total_pages 1
STAT 13:total_chunks 708
STAT 13:used_chunks 0
STAT 13:free_chunks 708
STAT 13:free_chunks_end 0
STAT 13:mem_requested 0
STAT 13:get_hits 0
STAT 13:cmd_set 6
STAT 13:delete_hits 2
STAT 13:incr_hits 0
STAT 13:decr_hits 0
STAT 13:cas_hits 0
STAT 13:cas_badval 0
STAT 13:touch_hits 0
STAT 14:chunk_size 1856
STAT 14:chunks_per_page 564
STAT 14:total_pages 1
STAT 14:total_chunks 564
STAT 14:used_chunks 0
STAT 14:free_chunks 564
STAT 14:free_chunks_end 0
STAT 14:mem_requested 0
STAT 14:get_hits 0
STAT 14:cmd_set 2
STAT 14:delete_hits 0
STAT 14:incr_hits 0
STAT 14:decr_hits 0
STAT 14:cas_hits 0
STAT 14:cas_badval 0
STAT 14:touch_hits 0
STAT active_slabs 6
STAT total_malloced 6291456
END
参考:https://www.cnblogs.com/52lnamp/p/9554340.html
https://blog.youkuaiyun.com/kankan231/article/details/18656623