memcached的安装和使用

简介

Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中。

准备

  1. 下载:http://memcached.org/ 下载 memcached-1.4.20.tar.gz 的文件
  2. 系统环境 Libevent是一套C开发的程序库(后续再讲) yum -y install gcc-c++ libevent libevent-devel

安装

  1. install memcached
    tar xzf memcached-1.4.20.tar.gz
    cd memcached-1.4.20
    ./configure
    make && make install

使用

  1. 设置为服务 保存以下代码到/etc/init.d/memcached
#! /bin/sh
#
# chkconfig: - 55 45
# description: The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# Source function library - for other linux
#. /etc/rc.d/init.d/functions
# Source function library - for SUSE linux
. /etc/init.d/functions
PORT=11211
USER=root
MAXCONN=128
CACHESIZE=128
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
. /etc/sysconfig/network
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="memcached"
start () {
echo -n $"Starting $prog: "
# insure that /usr/local/memcached has proper permissions
chown $USER /usr/local/bin/memcached
/usr/local/bin/memcached -l 127.0.0.1 -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /tmp/memcached.pid $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
echo -n $"Stopping $prog: "
killproc memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/memcached
rm -f /usr/local/memcached/memcached.pid
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status memcached
;;
restart|reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/memcached ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $?
  1. 默认配置文件
/usr/local/bin/memcached -h
memcached 1.4.20
-p 指定端口号(默认11211)  
-m 指定最大使用内存大小(默认64MB)
-c 最大同时连接数,默认是1024  
-t 线程数(默认4)  
-l 连接的IP地址, 默认是所有IP  
-m 最大内存使用,单位MB。默认64MB  
-M 内存耗尽时返回错误,而不是删除项  
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
  1. 设置为自启动
chmod +x /etc/init.d/memcached
chkconfig --add memcached
chkconfig memcached on #设置开机启动
service memcached start
  1. 使用 todo

  2. 内存管理机制

    memcached中保存的数据都存储在memcached内置的内存存储空间中。因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU算法自动删除不使用的缓存。 数据存储方式:Slab Allocation 结构图如下: Slab Allocation

    Slab Allocation的主要术语

    Page 分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。

    Chunk 用于缓存记录的内存空间,每个Chunk里面都是分配同样的数值大小

    Slab Class 特定大小的chunk的组。

memcached根据收到的数据的大小,选择最适合数据大小的slab。 memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中。 数据过期方式:Lazy Expiration + LRU Lazy Expiration memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过 期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。 LRU memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不 足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。 6. 优化 todo

扩展阅读

转载于:https://my.oschina.net/2688/blog/700877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值