memcached 的接口支持以下用于在缓存中存储和检索信息的方法,这些方法在所有不同的 API 中都是一致的,尽管特定于语言的机制可能不同:
get(
:从缓存中检索信息。如果指定的键存在,则返回与该键关联的值。如果指定的键不存在,则 返回key
)NULL
、nil
、 或相应语言中最接近的等价物。undefined
set(
:将与缓存中的键关联的项目设置为指定值。如果键已经存在,这将更新现有项目,或者如果键不存在,则添加新的键值对。如果指定了过期时间,则该项目会在达到过期时间时过期(并被删除)。时间以秒为单位,小于30天(30*24*60*60)为相对时间,大于此为绝对时间(epoch)。key
,value
[,expiry
])add(
:如果指定的键尚不存在,则将键和关联值添加到缓存中。key
,value
[,expiry
])replace(
: 替换与指定关联的项目key
,value
[,expiry
])key
,仅当键已经存在时。新值由value
参数给出。delete(
:从缓存中删除key
[,time
])key
及其关联的项目。如果您提供 a ,则在指定的时间段内阻止time
添加具有指定的另一个项目。key
incr(
: 将与 关联的项目增加key
,value
)key
指定的value
.decr(
: 将与 关联的项目递减key
,value
)key
指定的value
.flush_all
:使缓存中的所有当前项目无效(或过期)。从技术上讲,它们仍然存在(它们没有被删除),但是当您下次尝试访问它们时,它们会被悄无声息地销毁。
在所有实现中,大部分或所有这些功能都通过相应的本地语言接口进行复制。
在可行的情况下,使用memcached来存储完整的项目,而不是缓存数据库中的单个列值。例如,当显示有关对象(发票、用户历史记录或博客文章)的记录时,从数据库中加载相关条目的所有数据,并将其编译到应用程序通常需要的内部结构中。将完整的对象保存在缓存中。
复杂的数据结构不能直接存储。大多数接口都会为你序列化数据,也就是说,把它放在一个可以重建原始指针和嵌套的文本形式中。Perl 使用Storable
,PHP 使用
serialize
,Python 使用
cPickle
(or Pickle
) 而 Java 使用Serializable
接口。在大多数情况下,使用的序列化接口是可定制的。要在不同语言接口之间共享存储在memcached实例中的数据,请考虑使用常见的序列化解决方案,例如 JSON(Javascript 对象表示法)。