Memcached

1.介绍

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它基于LRU(Least Recently Used)算法自动删除不使用的缓存。
Memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

特点
    协议简单
    基于libevent的事件处理
    内置内存存储方式
    memcached不互相通信的分布式

2.安装

# libevent安装
yum install libevent libevent-devel  

# memcached安装
wget --no-check-certificate https://www.memcached.org/files/memcached-1.5.12.tar.gz
tar -zvxf memcached-1.5.12.tar.gz
cd memcached-1.5.12
./configure --prefix=/usr/local/memcached
make && make install

# 帮助
/usr/local/memcached/bin/memcached -h  
    -d  启动一个守护进程
    -m  分配给Memcache使用的内存数量 单位是MB;
    -u  运行Memcache的用户
    -l  监听的服务器IP地址 可以有多个地址
    -p  设置Memcache监听的端口 最好是1024以上的端口
    -c  最大运行的并发连接数,默认是1024
    -P  设置保存Memcache的pid文件。

# 作为后台服务程序运行
/usr/local/memcached/bin/memcached -d -m 256M -u root -l 172.22.7.38 -p 11211 -c 256 -P /home/memcached.pid

# telnet安装
yum install telnet-server # 服务端
yum install telnet.* # 客户端

# Memcached连接
telnet 172.22.7.38 11211

3.Memcached常用命令

## set命令
set key flags exptime bytes [noreply] 
value
    参数解释 
        key                  键值key-value结构中的key 用于查找缓存值
        flags                可以包括键值对的整型参数 客户机使用它存储关于键值对的额外信息
        exptime              在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
        bytes                在缓存中存储的字节数
        noreply(可选)         该参数告知服务器不需要返回数据
        value                存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
        
set name 0 900 9
memcached11
key(runoobb) -->  value(memcached)

STORED:保存成功后输出
ERROR:在保存失败后输出

## get命令
get key1 key2 key3
    参数解释
        key                 键值key-value结构中的key 用于查找缓存值

get runoobb    

## add命令
如果add的key已经存在 则不会更新数据(过期的key会更新) 之前的值将仍然保持相同 并且您将获得响应NOT_STORED
add key flags exptime bytes [noreply]
value

add new_key 0 900 10
data_value

STORED:保存成功后输出
NOT_STORED:在保存失败后输出

## replace命令
替换已存在的key(键)的value(数据值) 如果key不存在 则替换失败 并且您将获得响应NOT_STORED
replace key flags exptime bytes [noreply]
value

replace new_key 0 900 9
data_uu

STORED:保存成功后输出
NOT_STORED:执行替换失败后输出

## append命令
用于向已存在key(键)的value(数据值)后面追加数据
append key flags exptime bytes [noreply]
value

append new_key 0 900 9
ss 

STORED:保存成功后输出
NOT_STORED:该键在Memcached上不存在
CLIENT_ERROR:执行错误

## prepend命令
用于向已存在key(键)的value(数据值)前面追加数据
prepend key flags exptime bytes [noreply]
value

STORED:保存成功后输出
NOT_STORED:该键在Memcached上不存在
CLIENT_ERROR:执行错误

## CAS命令
它仅在当前客户端最后一次取值后 该key对应的值没有被其他客户端修改的情况下 才能够将值写入
cas key flags exptime bytes unique_cas_token [noreply]
value
    参数解释
        unique_cas_token 通过gets命令获取的一个唯一的64位值

## gets命令
获取带有CAS令牌存的value(数据值)
gets key1 key2 key3

set runoob 0 900 9
memcached   

gets runoob
VALUE runoob 0 9 5 (5就是令牌)

## delete命令
delete key [noreply]

DELETED:删除成功
ERROR:语法错误或删除失败
NOT_FOUND:key 不存在

## incr与decr命令
对已存在的 key(键) 的数字值进行自增或自减操作
incr key increment_value

NOT_FOUND:key不存在
CLIENT_ERROR:自增值不是对象
ERROR:其他错误 如语法错误等

## stats命令
用于返回统计信息例如 PID(进程号)、版本号、连接数等
    pid:	memcache服务器进程ID
    uptime:服务器已运行秒数
    time:服务器当前Unix时间戳
    version:memcache版本
    pointer_size:操作系统指针大小
    rusage_user:进程累计用户时间
    rusage_system:进程累计系统时间
    curr_connections:当前连接数量
    total_connections:Memcached运行以来连接总数
    connection_structures:Memcached分配的连接结构数量
    cmd_get:get命令请求次数
    cmd_set:set命令请求次数
    cmd_flush:flush命令请求次数
    get_hits:get命令命中次数
    get_misses:get命令未命中次数
    delete_misses:delete命令未命中次数
    delete_hits:delete命令命中次数
    incr_misses:incr命令未命中次数
    incr_hits:incr命令命中次数
    decr_misses:decr命令未命中次数
    decr_hits:decr命令命中次数
    cas_misses:cas命令未命中次数
    cas_hits:cas命令命中次数
    cas_badval:使用擦拭次数
    auth_cmds:认证命令处理的次数
    auth_errors:认证失败数目
    bytes_read:读取总字节数
    bytes_written:发送总字节数
    limit_maxbytes:分配的内存总大小(字节)
    accepting_conns:服务器是否达到过最大连接(0/1)
    listen_disabled_num:失效的监听数
    threads:当前线程数
    conn_yields:连接操作主动放弃数目
    bytes:当前存储占用的字节数
    curr_items:当前存储的数据总数
    total_items:启动以来存储的数据总数
    evictions:LRU释放的对象数目
    reclaimed:已过期的数据条目来存储新数据的数目
             
## stats items命令   
用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)                       
stats items
   
## stats slabs命令     
用于显示各个slab的信息,包括chunk的大小、数目、使用情况等
stats slabs   
       
## stats sizes命令  
用于显示所有item的大小和个数(第一列是 item 的大小,第二列是 item 的个数)   
   
## flush_all命令
清理缓存中的所有key=>value(键=>值)对
flush_all [time] [noreply]

源码 https://gitee.com/jsjack_wang/springboot-demo dev-memcached分支(springboot整合memcached)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值