<-
Apache > HTTP 服务器 > 文档 > 2.4 版

Apache HTTP 服务器中的共享对象缓存

可用语言:  en  |  fr 

共享对象缓存提供了一种机制,可以在服务器的所有工作进程之间共享简单数据,无论线程和进程模型如何。它适用于跨进程共享数据的优势超过进程间通信的性能开销的情况。

top

共享对象缓存提供程序

共享对象缓存本身是一个抽象概念。五个不同的模块实现了它。要使用缓存,必须存在并配置一个或多个这些模块。

唯一需要的配置是选择要使用的缓存提供程序。这是使用缓存的模块的责任,它们使用诸如CacheSocacheAuthnCacheSOCacheSSLSessionCacheSSLStaplingCache之类的指令来启用选择。

当前可用的提供程序是

"dbm" (mod_socache_dbm)
它使用 DBM 哈希文件。如果已安装的 APR 版本支持多个 DBM 实现,则可以使用配置来选择底层的 DBM。
"dc" (mod_socache_dc)
它使用distcache 分布式会话缓存库。
"memcache" (mod_socache_memcache)
它使用memcached 高性能分布式内存对象缓存系统。
"redis" (mod_socache_redis)
它使用Redis 高性能分布式内存对象缓存系统。
"shmcb" (mod_socache_shmcb)
它使用共享内存段中的高性能循环缓冲区。

API 提供以下函数

const char *create(ap_socache_instance_t **instance, const char *arg, apr_pool_t *tmp, apr_pool_t *p);
根据给定的配置字符串创建会话缓存。在 instance 参数中返回的 instance 指针将作为后续调用的第一个参数传递。
apr_status_t init(ap_socache_instance_t *instance, const char *cname, const struct ap_socache_hints *hints, server_rec *s, apr_pool_t *pool)
初始化缓存。cname 的最大长度为 16 个字符,并在服务器中唯一标识缓存的使用者;建议使用模块名称,例如“mod_ssl-sess”。此字符串可能在文件系统路径中使用,因此建议仅使用字母数字 [a-z0-9_-] 字符。如果 hints 不为空,则它为提供程序提供一组提示。返回 APR 错误代码。
void destroy(ap_socache_instance_t *instance, server_rec *s)
销毁给定的缓存实例对象。
apr_status_t store(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_time_t expiry, unsigned char *data, unsigned int datalen, apr_pool_t *pool)
将对象存储在缓存实例中。
apr_status_t retrieve(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, unsigned char *data, unsigned int *datalen, apr_pool_t *pool)
检索缓存的对象。
apr_status_t remove(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_pool_t *pool)
从缓存中删除对象。
void status(ap_socache_instance_t *instance, request_rec *r, int flags)
为 mod_status 转储缓存实例的状态。
apr_status_t iterate(ap_socache_instance_t *instance, server_rec *s, void *userctx, ap_socache_iterator_t *iterator, apr_pool_t *pool)
通过迭代器回调转储所有缓存的对象。

可用语言:  en  |  fr 

top

评论

注意
这不是问答部分。此处发布的评论应针对改进文档或服务器的建议,如果我们的版主认为这些评论已实现或被认为无效/主题不相关,则可能会被删除。有关如何管理 Apache HTTP 服务器的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的邮件列表