memcached

主要命令

  • 启动memcached

    ./memcached -u root -p 11212 -d

  • 连接

    telnet 192.168.1.2 11211

  • add命令

    add keyname flag timeout(s) datasize

    add mykey 0 10 12

  • get命令

    get keyname

  • 启动magent
    ./magent -u root -l 192.168.1.2 -p 11220 -s 192.168.1.2:11211 -s 192.168.1.2:11212 -b 192.168.1.2:11213 -b 192.168.1.2:11214

说明

  • 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
  • 各服务器间彼此无视:不在服务器间进行数据同步;
  • O(1)的执行效率
  • 默认情况下,Memcached是一个LRU(Least Recently Used)缓存,同时,它按事先预订的时长清理超期数据。但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见,而仅是当get命令到达时检查其时长;
  • 存储大小:大于48bytes 小于1MB
  • 使用一致性哈希管理
  • Memcache是项目的名称,memcached是服务器端的主程序文件名

安装

  • 安装libevent

    • tar xf libevent-2.0.20-stable.tar.gz
    • cd libevent-2.0.20
    • ./configure --prefix=/usr/local/libevent
    • make && make install
    • echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
    • ldconfig
  • 安装memcached

    • 如需启用sasl验证功能,要先安装sasl
    • yum -y install cyrus-sasl-devel
    • tar xf memcached-1.4.15.tar.gz
    • cd memcached-1.4.15
    • ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
    • make && make install

常用选项

  • memcached

    • -l <ip_addr> 指定进程监听的地址
    • -d 以服务模式运行
    • -u <username> 以指定的用户身份运行memcached进程
    • -m <num> 用于缓存数据的最大内存空间,单位为MB,默认为64MB
    • -c <num> 最大支持的并发连接数,默认为1024
    • -p <num> 指定监听的TCP端口,默认为11211
    • -U <num> 指定监听的UDP端口,默认为11211,0表示关闭UDP端口
    • -t <threads> 用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效
    • -f <num> 设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子
    • -M 当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间
    • -n 指定最小的slab chunk大小;单位是字节
    • -S 启用sasl进行用户认证
  • 存储类命令

    set, add, replace, append, prepend

  • 获取数据类命令

    get, delete, incr/decr
  • 统计类命令

    stats, stats items, stats slabs, stats sizes
  • 清理命令

    flush_all

集群

  • 普通方式连接多个memcached

    1. 如果其中一个宕机,会造成数据丢失
    2. 如果其中一个宕机,并且插入和读取操作会继续操作已损坏的memcached,增加延迟。

      多个memcached
  • 集群方式连接多个memcached

    1. 可以设置多个magent
    2. 主memcached宕机,会读取从memcached
    3. 若宕机的memcached恢复,备份数据不会拷贝回来,会读到null

      集群)

安装magent

0.6版的magent,java第一次连接正常,第二次连接卡住,并且magent的cpu占用达到99%。后改用0.5版的magent恢复正常

cd /usr/local/

mkdir ./magent

cd ./magent

wget -c http://memagent.googlecode.com/files/magent-0.6.tar.gz 需要翻墙,直接在网上下载

tar xzvf ./magent-0.6.tar.gz

/sbin/ldconfig 让动态链接库为系统所共享

sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile 修改文件

make

cp ./magent /usr/bin/magent

错误总结
  • 缺少文件解决思路,用find / -name 文件名查到文件位置,并且链接到需要的位置即可。

  • magent.c:71:19: 致命错误:event.h:没有那个文件或目录

    1. 把libevent/include下的所有文件链接到/usr/local/include,一定使用完整路径,否则报连接层数过多错误

      ln -s /usr/local/libevent/include/* /usr/local/include/
  • magent.c:729:17: 错误:‘SSIZE_MAX’未声明(在此函数内第一次使用)

    1. 在ketama.h**开头**加入SSIZE_MAX定值

      vim ketama.h

      c
      #ifndef SSIZE_MAX
      #define SSIZE_MAX 32767
      #endif
  • gcc: 错误:/usr/lib64/libevent.a:没有那个文件或目录

    gcc: 错误:/usr/lib64/libm.a:没有那个文件或目录

    1. 把libevent/lib/下的所有文件链接到/usr/lib64下

      ln -s /usr/local/libevent/lib/* /usr/lib64
    2. 把/usr/lib64/libm.so重命名链接到/usr/lib64/libm.a

      ln -s /usr/lib64/libm.so /usr/lib64/libm.a

启动magent

./magent -u root -l 192.168.1.2 -p 11220 -s 192.168.1.2:11211 -s 192.168.1.2:11212 -b 192.168.1.2:11213 -b 192.168.1.2:11214

-u 用户名
-n 设置最大连接数,默认4096
-l 本地绑定ip,默认0.0.0.0
-p 端口,默认11211.
-s 设置memcached服务ip和端口,例如(192.168.1.1:11211-b 设置memcached备份服务ip和端口,例如(192.168.1.1:11211

Nginx整合

server {
        listen       80;
        server_name  www.magedu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
                set $memcached_key $uri;
                memcached_pass     127.0.0.1:11211;
                default_type       text/html;
                error_page         404 @fallback;
        }

        location @fallback {
                proxy_pass http://172.16.0.1;
        }
}

引用来源

  1. 马哥linux运维视频教程
  2. Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值