mysql加memcache缓存_基于mysql的仿memcache缓存类

基于mysql的仿memcache缓存类

当年在sae的时候,内置的mysql类用得挺舒服的。后来自己简单封装了下,runSql方法执行的sql语句,getData方法取得结果数组,Transactions方法实现事务。 mysql = new FaMysql(); } function set($key,$value,$expire = 31536000){//默认有效期一年 $now = ti

当年在sae的时候,内置的mysql类用得挺舒服的。后来自己简单封装了下,runSql方法执行的sql语句,getData方法取得结果数组,Transactions方法实现事务。

mysql = mysql_connect($options['host'],$options['username'],$options['password']) or die ("Database connection error.");

mysql_select_db($options['database'],$this->mysql);

mysql_query("set names '" . $options['charset'] . "'");

}

public function Transactions(array $sql){

mysql_query("BEGIN");

$r = 1;

foreach($sql as $key => $row) {

$res = mysql_query($row);

if(!$res) {$r = 0;}

}

if(!$r){mysql_query("ROLLBACK");}else{mysql_query("COMMIT");}

mysql_query("END");

}

public function runSql($sql){

mysql_query($sql) or die(mysql_error());

}

public function getData($sql){

$result = mysql_query($sql) or die(mysql_error());

$array = array();

while($row = mysql_fetch_assoc($result)) {

$array[] = $row;

}

return $array;

}

}

刚开始没买vps,RP主机又不提供memcache缓存,所以自己实现的这么个玩意。set方法存储数据,get方法获取数据,del方法删除数据,都只支持string哦。

class FaMemcache{

private $mysql;

private $TABLENAME = 'memcache';

public function __construct(){

$this->mysql = new FaMysql();

}

function set($key,$value,$expire = 31536000){//默认有效期一年

$now = time();

$valid = $now + $expire;

$data = $this->mysql->getData("SELECT Fa_key FROM `$this->TABLENAME` WHERE Fa_key = '$key'");

if(count($data)!=0){

$this->mysql->runsql("UPDATE `$this->TABLENAME` SET Fa_value = '$value',Valid = '$valid' WHERE Fa_key = '$key'");

}else{

$this->mysql->runsql("INSERT INTO `$this->TABLENAME` (Fa_key,Fa_value,Valid) VALUES ('$key','$value','$valid')");

}

}

function get($key){

$now = time();

$data = $this->mysql->getData("SELECT Fa_value FROM `$this->TABLENAME` WHERE Fa_key = '$key' AND $now > Valid");

if(count($data)!=0){

return $data[0]['Fa_value'];

}else{

return null;

}

}

function del($key){

$this->mysql->runsql("DELETE FROM `$this->TABLENAME` WHERE Fa_key = '$key'");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值