kvstore存储介质redis代码
<?php
/**
* ShopEx licence
*
* @copyright Copyright (c) 2005-2010 ShopEx Technologies Inc. (http://www.shopex.cn)
* @license http://ecos.shopex.cn/ ShopEx License
*/
/*
* @package base
* @copyright Copyright (c) 2010, shopex. inc
* @author edwin.lzh@gmail.com
* @license
*/
class base_kvstore_redis extends base_kvstore_abstract implements base_interface_kvstore_base,base_interface_kvstore_extension
{
static private $_cacheObj;
function __construct($prefix)
{
$this->connect();
$this->prefix = $prefix;
}//End Function
public function connect()
{
if(!isset(self::$_cacheObj))
{
if(defined('KVSTORE_REDIS_CONFIG') && constant('KVSTORE_REDIS_CONFIG'))
{
self::$_cacheObj = new Redis();
$config = explode(':', KVSTORE_REDIS_CONFIG);
self::$_cacheObj->connect($config[0], $config[1]);
} else {
trigger_error('Can\'t load KVSTORE_REDIS_CONFIG, please check it', E_USER_ERROR);
}
}
}//End Function
public function fetch($key, &$value, $timeout_version=null)
{
$store = self::$_cacheObj->get($this->create_key($key));
$store = json_decode($store,true);
if($store !== false)
{
if($timeout_version < $store['dateline'])
{
if($store['ttl'] > 0 && ($store['dateline']+$store['ttl']) < time()){
return false;
}
$value = $store['value'];
return true;
}
}
return false;
}//End Function
public function store($key, $value, $ttl=0)
{
$store['value'] = $value;
$store['dateline'] = time();
$store['ttl'] = $ttl;
return self::$_cacheObj->set($this->create_key($key), json_encode($store));
}//End Function
public function delete($key)
{
return self::$_cacheObj->delete($this->create_key($key));
}//End Function
public function recovery($record)
{
$key = $record['key'];
$store['value'] = $record['value'];
$store['dateline'] = $record['dateline'];
$store['ttl'] = $record['ttl'];
return self::$_cacheObj->set($this->create_key($key), json_encode($store));
}//End Function
public function increment($key, $offset=1)
{
$real_key = $this->create_key($key);
return self::$_cacheObj->incr($real_key, $offset);
}//End Function
public function decrement($key, $offset=1)
{
$real_key = $this->create_key($key);
return self::$_cacheObj->decr($real_key, $offset);
}//End Function
}//End Class
kvstore存储类选用base_kvstore_redis(app/base/lib/kvstore/redis.php)
kvstore存储介质redis代码的更多相关文章
- Session for Tornado(Redis) - 代码分享
Session for Tornado(Redis) - 代码分享 Session for Tornado(Redis) session id的生成借用了web.py. 使用了 redis 的 h ...
- Spring集成Redis集群(含spring集成redis代码)
代码地址如下:http://www.demodashi.com/demo/11458.html 一.准备工作 安装 Redis 集群 安装参考: http://blog.csdn.net/zk6738 ...
- springboot整合mybatis,redis,代码(二)
一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包 ...
- 阿里云PHP Redis代码示例
测试代码示例 <?php /* 这里替换为连接的实例host和port */ $host = "localhost"; $port = 6379; /* 这里替换为实例id和 ...
- C#操作redis代码汇总
马上要用redis来改造现有的o2o项目了,在linux下部署了个redis,顺便研究了下代码操作,分享下代码 using System; using System.Collections.Gener ...
- springboot整合mybatis,redis,代码(一)
一 搭建项目,代码工程结构 使用idea或者sts构建springboot项目 二 数据库sql语句 SQLyog Ultimate v12.08 (64 bit) MySQL - 5.7.14-l ...
- springboot整合mybatis,redis,代码(五)
redis注解开发过程中包含许多注解 1.@Cacheable 可以标记在方法上,也可以标记在类上.当标记在方法上时表示该方法是支持缓存的,当标记在类上时则表示该类所有的方法都是支持缓存的.应用到读取 ...
- Redis代码阅读之Hacking Strings
Hacking Strings The implementation of Redis strings is contained in sds.c ( sds stands for Simple Dy ...
- php redis 代码实例
<?phpheader("Content-type:text/html;charset=utf8");$redis = new redis();$redis ->con ...
随机推荐
- css animation 动画的制作
上效果 效果描述:原来这些图片都绝对定位在最右边,并有一个css3 3D的旋转初始效果.随着动画的开始,依次向左移动,并旋转到0度.(主要用于引导页步骤的描述) 上代码: html布局 <div ...
- socket编程之TCP/UDP
目标: 1.编写TCP服务端客户端,实现客户端发送数据,服务端接收打印 2.采用OOP方式编写TCP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端 3.采用OOP方式编写UDP服务端 ...
- 2014年蓝桥杯预选赛 C/C++ 本科A组试题--切面条
//主要是要找到f(n)=2*f(n-1)-1的规律. #include <stdio.h> #include <math.h> int f(int n) { if(n==0) ...
- SpringMVC一路总结(一)(转)
itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...
- angular js一探
下一代angular js. 概念:mvc:作为dataModel的$scope. 还必须导入angular的库. ng-app:告诉angular引擎从这里开始是他因该管理的内容.(引入之后,可以在 ...
- PHP字符串转义
与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_runtime 2.magic_quotes_gpc 3.addslashes()和stripslashes() 4.mysql ...
- 关于oracle数据库(11)
事务 事务是最小的工作单元,是对数据库的若干操作,增删查改(要不就都成功,要不就都失败) 在oracle数据库中,事务是默认打开的,其他数据库都需要一条语句来打开事务,默认关闭的 事务的特征 原子性. ...
- ccf cv讲座记录
- 学会Nodejs 的require和exports
NodeJs中模块的导入和导出,是最基本的概念,但是看了之后,心里还是有一些疑惑的地方,比如: 1.有两个文件:part.js 和 main.js,main.js中要想使用part.js中定义的变量和 ...
- spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常
转自:http://blog.sina.com.cn/s/blog_1549fb0710102whz2.html spring+ibatis程序测试时报错:java.sql.SQLException: ...