ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Cache Cache用于缓存管理,提供三种缓存方式: * Redis redis缓存,需要安装hiredis扩展 * File 文件缓存 * Table 内存表缓存 #### Redis 同步: ~~~PHP /** * 同步reids * @param array $options 连接配置 * @param is_sync true * / $redis = Redis::getInstance(array $options = [], true); /** * 获取同步客户端的缓存前缀 * @return string */ $redis->getRedisPrefix(); /** * redis操作魔术方法,自动映射 */ $redis->__call($name, $arguments); ~~~ 异步: 基于swoole_redis,依赖于hiredis扩展 ~~~PHP /** * 异步reids * @param array $options 连接配置 * @param bool $is_sync false * @param callable $callback 回调函数 * / Redis::getInstance(array $options = [], false,callable $callback); /** * 异步redis的操作必须在回调函数中写,支持类方法,函数,匿名函数等回调函数写法 * 回调函数提供两个参数 * @param $redis redis操作句柄 * @param $get_redis_key 获取redis实际缓存key函数,会返回一个拼接配置中缓存前缀的实际缓存key值 */ Redis::getInstance(['host'=>'127.0.0.1','port'=>6379,'password'=>''], false,function ($redis,$get_redis_key) { $redis->get($get_redis_key('vswoole')); }); ~~~ #### File 缓存文件位于根目录下的data/cache/目录下。 ~~~PHP /** * 设置缓存 * @param string $key 缓存key * @param null $value 缓存value * @param string $prefix 缓存前缀 * @param int $expire 缓存有效期 * @return bool|int 返回设置状态 */ File::set(string $key, $value = null, string $prefix = '', int $expire = 0); //缓存设置 //支持所有PHP基本数据类型,除匿名函数以及带匿名函数的类 //设置字符串 File::set('a',1); //设置数组 File::set('b',[1,2,3]); //删除设置 File::set('a',null); //带缓存前缀 File::set('c',1,'vswoole_'); //带有效期,单位为s,0为永久生效,负值为立即失效 File::set('d',1'vswoole',60); //缓存读取 File::get(string $key, $prefix = '') //如果缓存未过期,返回对应的数据 //如果缓存key过期或缓存key不存在,返回null File::get('a'); File::get('c','vswoole_'); ~~~ #### Table Table缓存基于swoole_table,是将数据存储在内存中,服务进程关闭,数据将会销毁,适用于非重要或无需物理物理存储的数据存储。 优点:Table缓存直接操作内存,因此IO效率很高。 缺点:需要在服务启动前创建缓存表,不能随时创建。 ~~~PHP /** * 实例化缓存Table对象 * @param int $table_size 数据可存储条数 */ $table = new Table(int $table_size = 1024); /** * 创建缓存表 * @param array $column 缓存表结构字段 * @param string $field 表字段名称 * @param string $field_type 表字段类型[string/\swoole_table::TYPE_STRING,int/\swoole_table::TYPE_INT,float/\swoole_table::TYPE_FLOAT] * @param int $field_length 表字段最大长度 */ $table->create([$field=>[$field_type,'$filed_legth]]); //举例 $table->create(['name'=>['string',16],'age'=>['int',2]]); /** * 显示已设置的内存表结构 * @return string */ $table->show(); /** * 获取内存表物理大小 * @return int */ $table->getTableSize(); /** * 获取内存表内存大小 * @return mixed */ $table->getTableMemorySize(); /** * 获取内存表所有数据 * @return array */ $table->getAll(); /** * 删除内存表所有数据 * @return int */ $table->deleteAll(); /** * 获取内存表对象实例 * @return null|\swoole_table */ $table->getTable(); /** * 魔术方法,执行原生方法 * @param $name * @param $arguments * @return mixed */ $table->__call($name, $arguments); ~~~