memcache

1.什么是memcache?

答:是一个分布式的内存数据缓存服务器。
在应用系统中处于数据库层和应用层之间。
是多线程的,读写速度非常快。

2. 为什么使用memcache数据库?

答:关系型数据库的数据存储在磁盘中,而memcache将数据存储在内存中,在内存中读取数据比从磁盘上读取数据要快好几倍。所以目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。

3.memcache使用方式?

首次访问,数据从DB中读取,返回给应用服务器,并保存到memcache,以后的访问,数据直接从memcache中读取,不再访问DB。

4. memcache特性和限制?

在这里插入图片描述

5. memcache安装及使用

  • 下载memcached安装包,版本为1.4.5:
    windows系统64位版下载地址
  • 安装并启动memcached服务:
    注意: 版本<1.4.5为安装版本,非如下安装步骤!!!
    windows平台1.4.5为免安装 版本,下载安装包memcached-1.4.5-amd64.zip后,解压到文件夹。
    可以看到memcached-amd64文件夹下包括memcached.exe 和 pthreadGC2.dll 两个文件,直接双击memcached.exe启动服务。
    弹出服务窗口,此时已启动完成,请勿关闭。默认服务端口为11211。
    在这里插入图片描述
  • 使用客户端连接memcache:
    (1)连接和退出
    开始,cmd,打开命令窗口,输入 telnet 127.0.0.1 11211
    (注:若提示telnet命令不存在,则设置,程序,打开或关闭windows功能,在这里找到telnet 客户端并打钩,确定即可)
    退出:quit
    在这里插入图片描述
    ctrl+]回显信息
    输入stats回车,可以得到memcached的基本信息。
    (2)基本命令
    set
    add
    replace
    get
    delete
command <key> <flags> <expiration time> <bytes>
<value>

参数说明如下:
command set/add/replace
key     key 用于查找缓存值
flags     可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time     在缓存中保存键值对的时间长度(以秒为单位,0 表示永远,最多能保存30天)
bytes     在缓存中存储的字节点
value     存储的值(始终位于第二行)

set
set 命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。如果使用 set 命令正确设定了键值对,服务器将使用单词 STORED 进行响应。
add
仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
replace
仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。

command <key>

get
get 命令用于检索与之前添加的键值对相关的值。您将使用 get 执行大多数检索操作。您使用一个键来调用 get,如果这个键存在于缓存中,则返回相应的值。如果不存在,则不返回任何内容。
delete
delete 命令用于删除 memcached 中的任何现有值。您将使用一个键调用delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND 消息。
append
append 将数据追加到当前缓存数据的之后,当缓存数据存在时才存储。

set username 0 0 8
wayne173
STORED
get username
VALUE username 0 8
wayne173
END
append username 0 0 5
_ages
STORED
get username
VALUE username 0 13
wayne173_ages
END

prepend
prepend 将数据追加到当前缓存数据的之前,当缓存数据存在时才存储。

set username 0 0 8
wayne173
STORED
get username
VALUE username 0 8
wayne173
END
prepend username 0 0 5
name_
STORED
get username
VALUE username 0 13
name_wayne173
END

(3)缓存管理命令
stats
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息:

STAT pid 22459                             进程ID
STAT uptime 1027046                        服务器运行秒数
STAT time 1273043062                       服务器当前unix时间戳
STAT version 1.4.4                         服务器版本
STAT libevent 2.0.21-stable
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000                  进程累计用户时间
STAT rusage_system 0.260000                进程累计系统时间
STAT curr_connections 10                   当前打开连接数
STAT total_connections 82                  曾打开的连接总数
STAT connection_structures 13              服务器分配的连接结构数
STAT reserved_fds 20
STAT cmd_get 54                            执行get命令总数
STAT cmd_set 34                            执行set命令总数
STAT cmd_flush 3                           指向flush_all命令总数
STAT get_hits 9                            get命中次数
STAT get_misses 45                         get未命中次数
STAT delete_misses 5                       delete未命中次数
STAT delete_hits 1                         delete命中次数
STAT incr_misses 0                         incr未命中次数
STAT incr_hits 0                           incr命中次数
STAT decr_misses 0                         decr未命中次数
STAT decr_hits 0                           decr命中次数
STAT cas_misses 0                          cas未命中次数
STAT cas_hits 0                            cas命中次数
STAT cas_badval 0                          使用擦拭次数
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785                      读取字节总数
STAT bytes_written 15222                   写入字节总数
STAT limit_maxbytes 67108864               分配的内存数(字节)
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 malloc_fails 0
STAT conn_yields 0
STAT bytes 0                               存储item字节数
STAT curr_items 0                          item个数
STAT total_items 34                        item总数
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0                           为获取空间删除item的总数
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0

stats items

STAT items:1:number 3
STAT items:1:age 1698
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:1:crawler_reclaimed 0
STAT items:1:crawler_items_checked 0
STAT items:1:lrutail_reflocked 0
END

stats cachedump slabs_id limit_num
slabs_id:由stats items返回的结果(STAT items后面的数字)决定的
limit_num:返回的记录数,0表示返回所有记录
通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

stats cachedump 1 0
ITEM userId [5 b; 1467903379 s]
ITEM accountId [5 b; 1467903379 s]
ITEM companyId [3 b; 1467903379 s]
END
stats cachedump 1 2
ITEM userId [5 b; 1467903379 s]
ITEM accountId [5 b; 1467903379 s]
END

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

STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 3
STAT 1:free_chunks 10919
STAT 1:free_chunks_end 0
STAT 1:mem_requested 232
STAT 1:get_hits 9
STAT 1:cmd_set 14
STAT 1:delete_hits 1
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512

stats sizes
stats sizes 输出所有item的大小和个数
stats reset
stats reset 清空统计数据
flush_all
。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。下面是一个使用 flush_all 的例子:

set userId 0 0 5
STORED
get userId
VALUE userId 0 5
END
flush_all
OK
get userId
END

6. 在PHP中安装memcache扩展

(1)扩展下载地址
注意: 这里下载的是avx目录下的dll,其它目录下的dll在Win10环境中有问题。
下载的版本基于自己的Php环境
在这里插入图片描述
(2)下载完成后,将该文件放到php扩展目录/ext文件夹中
(3)打开php.ini开启memcache扩展模块,添加extension=php_memcache.dll
(4)重启Apache,通过phpinfo.php查看是否安装成功,显示如下则安装成功!
在这里插入图片描述

7. php使用api操作memcache

$mem = new Memcache();
if (!$mem->connect('127.0.0.1')) {
    exit('连接失败');
}
if ($mem->set('my', 'hello world', MEMCACHE_COMPRESSED, 50)) {
    echo '设置成功';
}
$mem->delete('my');
//清空
$mem->flush();

echo $mem->get('my');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值