K-V 数据存储

操作说明

  1. 文件夹 /of/accy/com/kv 下存储着不同方式的对接文件
  2. 目前有 files, memcache 和 redis(单点 集群 分布式) 三种存储方式
  3. 可以通过配置文件 _of.com.kv 来使用不同方式, 支持多连接池
  4. 如果开发更多的存储方式, 要继承 of_base_com_kv 类并实现以下方法
  5. "defalut"默认存在, 未设置时使用"files"方式
  6. "_ofSelf"为框架是使用, 未设置时配置同"defalut", 性能不足时可能影响一切性能, 如: 消息队列, 数据库监控
<?php
abstract protected function _connect();                                 //连接到存储结构
abstract protected function _add(&$name, &$value, &$time);              //添加数据, value仅字符串
abstract protected function _del(&$name);                               //删除数据
abstract protected function _set(&$name, &$value, &$time);              //设置数据
abstract protected function _get(&$name);                               //读取数据, value仅字符串
abstract protected function _close();                                   //关闭连接源

of_base_com_kv::add($name, $value = '', $time = 86400, $pool = 'default', $retry = 0)

<?php
/**
 * 返回值 false=指定键名已存在, true=成功创建
 */
of_base_com_kv::add('test', 'demo', 10);             //添加 键为"test", 值为"demo", 有效期 10s的数据

of_base_com_kv::del($name, $pool = 'default') 删除数据

<?php
/**
 * 返回值 false=删除失败, true=删除成功
 */
of_base_com_kv::del('test');                //删除 键为"test" 的数据

of_base_com_kv::set($name, $value = '', $time = 86400, $pool = 'default') 修改数据

<?php
/**
 * 返回值 false=修改失败, true=修改或创建成功
 */
of_base_com_kv::set('test', 'demo', 10);             //修改 键为"test", 值为"demo", 有效期 10s的数据

of_base_com_kv::get($name, $default = false, $pool = 'default') 查询数据

<?php
/**
 * 返回值 false=不存在, 数据=数据存在
 */
of_base_com_kv::get('test');             //查询 键为"test" 的数据

of_base_com_kv::link($pool = 'default') 获取原始资源, 通过此函数做更多特性操作

<?php
/**
 * 返回原始资源, 失败返回false
 * redis节点间无联动, 使用事务时注意:
 *      watch监听与multi操作的键不在同节点时无法触发回滚
 *      multi同时操作不同节点键会分别向各节点提交事务
 */
of_base_com_kv::link();             //如: 返回 memcache 或 redis 实例化对象, files 返回存储路径