操作说明
- 文件夹 /of/accy/com/kv 下存储着不同方式的对接文件
- 目前有 files, memcache 和 redis(单点 集群 分布式) 三种存储方式
- 可以通过配置文件 _of.com.kv 来使用不同方式, 支持多连接池
- 如果开发更多的存储方式, 要继承 of_base_com_kv 类并实现以下方法
- "defalut"默认存在, 未设置时使用"files"方式
- "_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)
-
namestring
指定操作的键名, 可为数组 {
"name" : 指定键名
"value" : 默认值, 默认false
"time" : 过期时间秒, 默认86400, 0为永久有效
"pool" : 连接池, 默认'default'
"json" : 数据是否为json, 默认true,
"retry" : 尝试重试到成功, 0=不尝试
}
-
valuestring, array
添加的数据
-
timeint
过期时间, 可以是时间戳, 也可以指定秒数, 0=永不过期
-
poolstring
连接池
-
retryint
尝试重试到成功, 0=不尝试, 正数=尝试不超过秒数(可以是小数)
<?php
/**
* 返回值 false=指定键名已存在, true=成功创建
*/
of_base_com_kv::add('test', 'demo', 10); //添加 键为"test", 值为"demo", 有效期 10s的数据
of_base_com_kv::del($name, $pool = 'default')
删除数据
-
namestring
指定操作的键名
-
poolstring
连接池
<?php
/**
* 返回值 false=删除失败, true=删除成功
*/
of_base_com_kv::del('test'); //删除 键为"test" 的数据
of_base_com_kv::set($name, $value = '', $time = 86400, $pool = 'default')
修改数据
-
namestring
指定操作的键名, 可为数组 {
"name" : 指定键名
"value" : 默认值, 默认false
"time" : 过期时间秒, 默认86400, 0为永久有效
"pool" : 连接池, 默认'default'
"json" : 数据是否为json, 默认true
}
-
valuestring, array
添加的数据
-
timeint
过期时间, 可以是时间戳, 也可以指定秒数, 0=永不过期
-
poolstring
连接池
<?php
/**
* 返回值 false=修改失败, true=修改或创建成功
*/
of_base_com_kv::set('test', 'demo', 10); //修改 键为"test", 值为"demo", 有效期 10s的数据
of_base_com_kv::get($name, $default = false, $pool = 'default')
查询数据
-
namestring
指定操作的键名, 可为数组 {
"name" : 指定键名
"default" : 默认值, 默认false
"pool" : 连接池, 默认'default'
"json" : 数据是否为json, 默认true
}
-
poolstring
连接池
<?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 返回存储路径