memcached的认识
<?php /* memcached概念: Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中。 操作流程: 1、检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作 2、如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现) 3、每次更新数据库的同时更新memcached中的数据,保证一致性。 4、当分配给memcached内存空间用完之后,失效数据首先被替换,然后再替换掉最近未使用的数据。 内置的内存管理方式 所有数据都保存在内存中,存取数据比硬盘快,当内存满后,通过LRU算法自动删除不使用的缓存,但没有考虑数据的容灾问题,重启服务,所有数据会丢失。 memcached 存数据 Set:添加一个新条目到memcached或是用新的数据替换替换掉已存在的条目 Add:当KEY不存在的情况下,它向memcached存数据,否则,返回NOT_STORED响应 Replace:当KEY存在的情况下,它才会向memcached存数据,否则返回NOT_STORED响应 Cas:改变一个存在的KEY值 ,但它还带了检查的功能 Append:在这个值后面插入新值 Prepend:在这个值前面插入新值 memcached 获取数据 Get:取单个值 ,从缓存中返回数据时,将在第一行得到KEY的名字,flag的值和返回的value长度,真正的数据在第二行,最后返回END,如KEY不存在,第一行就直接返回END Get_multi:一次性取多个值 memcached 删除数据 Delete 需要注意: 1.不能往Memcached存储一个大于1MB的数据. 2.往Memcached存储的所有数据,如果数据的大小分布于各种chunk大小区间,从64B到1MB都有,可能会造成内存的极大浪费以及Memcached的异常. 3.memcached的一个空间利用,以及安全 内存分配机制:首先要说明的是Memcached支持最大的存储对象为1M。它的内存分配比较特殊,但是这样的分配方式其实也是对于性能考虑的,简单的分配机制可以更容易回收再分配,节省对于CPU的使用。 */
memcached 缓存原理: