Apache HTTP Server中的共享对象缓存
共享对象缓存提供了一种在所有服务器工作程序之间共享简单数据的方法,而与线程和进程模型无关。在跨进程共享数据的优势超过进程间通信的性能开销的地方,可以使用它。
共享对象缓存本身就是一种抽象。五个不同的模块实现了它。要使用缓存,必须存在并配置这些模块中的一个或多个。
唯一需要的配置是选择要使用的缓存提供程序。这是使用高速缓存模块的责任,他们使用指令,如能选择
CacheSocache
,
AuthnCacheSOCache
,
SSLSessionCache
,和
SSLStaplingCache
。
当前可用的提供者是:
- “ dbm”(
mod_socache_dbm
)
- 这利用了DBM哈希文件。如果已安装的APR版本支持多种DBM实现,则所使用的基础DBM的选择可以是可配置的。
- “ dc”(
mod_socache_dc
)
- 这利用了distcache
分布式会话缓存库。
- “内存缓存”(
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参数中返回的实例指针将作为第一个参数传递给后续调用。
- 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_-]字符。如果提示为非NULL,则为提供程序提供一组提示。返回APR错误代码。
- void destroy(ap_socache_instance_t * instance,server_rec * s)
- 销毁给定的缓存实例对象。
- apr_status_t存储区(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检索(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)
- 从缓存中删除一个对象。
- 无效状态(ap_socache_instance_t * instance,request_rec * r,int标志)
- 转储mod_status的缓存实例的状态。
- apr_status_t迭代(ap_socache_instance_t * instance,server_rec * s,void * userctx,ap_socache_iterator_t * iterator,apr_pool_t * pool)
- 通过迭代器回调转储所有缓存的对象。