Memcached学习---安装、使用(PHP)

与Redis对比、安装和使用(PHP)

与Redis对比

  1. 存储方式
    memcached数据完全存储在内存中, 本身无数据持久化机制, 断电挂掉时数据会丢失。
    redis数据也储存在内存中, 但提供RDB快照和AOF全量备份两张数据持久化方式, 断电重启后可恢复数据
  2. 数据类型
    memcached只支持存储string类型
    redis支持string、hash、set、zset、list …
  3. 底层架构不同
    redis自己实现了一套vm机制, 进行内存优化(内存数据与磁盘交换自己实现, 未调用系统函数)

安装篇

libevent:

Memcached依赖于libevent库,因此需要先安装 libevent

libevent官方下载地址:http://libevent.org/

cd libevent-2.1.12-stable
./configure --prefix=/usr/local/libevent
make && make install
Memcached源码编译安装:

Memcached官方下载地址:http://memcached.org/

cd memcached-1.6.6
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install
cd /usr/local/memcached
./bin/memcached -m 64 -p 11211 -u root -vv

-p 监听的TCP端口(默认: 11211)
-U UDP监听端口 (默认: 11211, 0 时关闭)
-d 以守护进程方式运行
-u 运行运行 Memcached的账户 非root用户
-m 最大的内存使用单位是MB 默认是64MB
-c 软连接数量默认是1024
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印memcached和libevent的版权信息
-l 绑定地址 (默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-P 将PID写入文件,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

Memcached Docker安装:
# 默认安装最新版本
docker pull memcached 

# 创建容器并在后台运行
docker run -d -p 11211:11211 --name memcache memcached
libmemcached:

下载链接: https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

cd libmemcached-1.0.18
./configure --help
./configure --prefix=/usr/local/libmemcached
make && make install
php-memcached扩展:

下载地址 http://pecl.php.net/get/memcached-3.1.5.tgz

cd memcached-3.1.5
./configure --with-php-config=/usr/local/php7.2/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make && make install

php.ini 中加入extension=memcached.so
php -m | grep memcached 查看是否安装成功
要在phpinfo中查看安装是否成功记得重启php-fpm!!!


使用篇(PHP)

关于Memcached操作方法 https://www.php.net/manual/zh/book.memcached.php

<?php
$m = new Memcached();
// 添加服务
$m->addServer('127.0.0.1', 11211);
var_dump($m);
$result = $m->add('luwei', '123');
var_dump($result);
var_dump($m->get('luwei'));

在这里插入图片描述
在这里插入图片描述

存储指令
# key:键值 key-value 结构中的 key,用于查找缓存值。
# flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
# exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
# bytes:在缓存中存储的字节数
# value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
# unique_cas_token通过 gets 命令获取的一个唯一的64位值。
# increment_value:增加的数值。
# decrement_value: 减少的数值
# noreply(可选):该参数告知服务器不需要返回数据

# 作用: 保存 key => value, 如果key已存在则更新value
set key flags exptime bytes [noreply]
value

# 保存 key => value, 如果key已存在则输出 NOT_STORED (操作失败)
add key flags exptime bytes [noreply]
value

# 只对已保存的key进行value更新, key过期或不存在则输出 NOT_STORED (操作失败)
replace key flags exptime bytes [noreply]
value

# 向已保存的key 向后追加数据, 比如以保存的数据是qwer,追加tyuiop, 获取值返回qwertyuiop 
append key flags exptime bytes [noreply]
value

# 向已保存的key 向前追加数据, 比如以保存的数据是qwer,追加tyuiop, 获取值返回tyuiopqwer
prepend key flags exptime bytes [noreply]
value

#对一个已存在的key使用gets获取cas令牌, 通过令牌修改数据, 如果数据被修改, 则令牌失效 (类似乐观锁)
cas key flags exptime bytes unique_cas_token [noreply]
value
存储指令
# 获取key的value, key不存在则返回空
get key [key2] [key3] ...

# 获取取带有CAS令牌存的 key的value
gets key [key2] [key3] ...

# 删除已存在的key
delete key [noreply]

# 对key的value进行自增、自减 并返回结果, value必须是十进制的32位无符号整数。
incr key increment_value
decr key decrement_value
统计命令
# 返回统计信息例如 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

# 显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)
stats items

# 用于显示各个slab的信息,包括chunk的大小、数目、使用情况等
stats slabs

# 显示所有item的大小和个数。 第一列是 item 的大小,第二列是 item 的个数
stats sizes
#STAT 96 1
#END

# 用于清理缓存中的所有 key=>value, 该命令提供了一个可选参数 time,用于在指定的时间后执行清理缓存操作。
flush_all [time] [noreply]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值