首页 > 代码库 > php redis(2)
php redis(2)
【config_inc.php】<?php//APP的读账号//$config[‘appServer‘][‘servername‘] = ‘app.com‘;$config[‘appServer‘][‘servername‘] = ‘127.0.0.1‘;$config[‘appServer‘][‘port‘] = 3306;$config[‘appServer‘][‘username‘] = ‘app‘;$config[‘appServer‘][‘password‘] = ‘fjdi23ksKdj‘;$config[‘appServer‘][‘pconnect‘] = 0;$config[‘appServer‘][‘dbname‘] = ‘research‘;$config[‘appServer‘][‘charset‘] = ‘utf8‘; /*redis 队列配置文件*///默认配置$redis_cfg[‘default‘][‘server‘] = ‘127.0.0.1‘;//write$redis_cfg[‘default‘][‘port‘] = ‘6379‘;//write$redis_cfg[‘read‘][‘server‘] = ‘127.0.0.1‘;$redis_cfg[‘read‘][‘port‘] = ‘6379‘;?> 【redis.class.php】<?php /** * redis 公共类 * 使用phpredis扩展,根据目前应用只提供如下方法,请不要随意添加,如有需要请与作者联系 * @version 1.00 * @author sean */class redis_class{ private $ret = Null; private $rets = Array(); public function __construct(){} public function connect($redis_cfg){ //iflese用来处理是否连接过,连接过则直接返回 if(isset($this -> rets[$redis_cfg[‘server‘]]) === TRUE){ $this -> ret = $this -> rets[$redis_cfg[‘server‘]]; return TRUE; }else{ $this -> ret = new Redis(); //判断是否连接成功 if($this -> ret -> connect($redis_cfg[‘server‘], $redis_cfg[‘port‘]) === TRUE){ $this -> rets[$redis_cfg[‘server‘]] = $this -> ret; return TRUE; } } } public function close(){ foreach($this -> rets as $rets){ $rets -> close(); } } public function sadd($key, $message = ‘‘){ global $redis_cfg; $this -> connnect($redis_cfg[‘default‘]); //sAdd:向键为Key的Set中加值,如果值存在,则不写入,返回FALSE return $this -> ret -> sAdd($key, $message); } public function sget($key){ global $redis_cfg; $this -> connect($redis_cfg[‘read‘]); //sort:对名称为Key的set集合进行排序 默认升序 return $this -> ret -> sort($key); } public function srem($key, $value){ global $redis_cfg; $this -> connect($redis_cfg[‘default‘]); //sRem:删除名为Key的set中的一个value return $this -> ret -> sRem($key, $value); } public function setex($key, $value = http://www.mamicode.com/‘‘, $time = 86400){ global $redis_cfg; $this -> connect($redis_cfg[‘default‘]); //setex: 设置数据缓存时间 return $this -> ret -> setex($key, $time, serialize($value)); } public function set($key, $value){ global $redis_cfg; $this -> connect($redis_cfg[‘default‘]); //set:写入key 和 value return $this -> ret -> set($key, serialize($value)); } public function get($key){ global $redis_cfg; $this -> connect($redis_cfg[‘read‘]); //get:读取某个key的值,如果key不存在,返回FALSE return unserialize($this -> ret -> get($key)); } public function delete($key){ global $redis_cfg; $this -> connect($redis_cfg[‘default‘]); //delete: 删除指定key的值 返回已删除key的个数(长整数) return $this -> ret -> delete($key); } public function hincrby($hash, $key, $num){ global $redis_cfg; $this -> connect($redis_cfg[‘default‘]); //hIncrBy:将名称为hash中的key的值增加num return $this -> ret -> hIncrBy($hash, $key, $num); } public function hget($hash, $key){ global $redis_cfg; $this -> connect($redis_cfg[‘read‘]); //hGet: 返回名称为hash中key的值 return $this -> ret -> hGet($hash, $key); } public function hgetall($hash){ global $redis_cfg; $this -> connect($redis_cfg[‘read‘]); //hGetAll: 返回名称为hash中所有的键及其对应的Value return $this -> ret -> hGetAll($hash); } //key不能md5加密, 否则无法读取信息 public function redis_mc_set($key, $value, $max_cache_file_time = 86400){ //只提取第一个表名 preg_match_all(‘/[\s]+from[\s]+([^,\s(.*)]*)/i‘,$key, $out); if(isset($out[1][0]) === TRUE){ $table_name = $out[1][0]; $all_tables = $this -> sget(‘TABLE_ALL‘); //验证数据库的合法性 if(in_array($table_name, $all_tables) === FALSE){ return FALSE; } }else{ $talbe_name = ‘other_keys‘; } $tmp_res = $this -> sadd(‘TABLE_‘ . $table_name, $key); if($tmp_res){ $this -> hincrby(‘KEY_SIZE‘, $key, strlen(serialize($value))); } $this -> hincrby(‘KEY_WRITE_NUMBER‘,$key, 1); return $this -> setex(md5($key), $value, $max_cache_file_time); } public function redis_mc_get($key){ $this -> hincrby(‘KEY_NUMBER‘, $key, 1); return $this -> get(md5($key)); }}?> 【produc.class.php 数据读取放入redis】<?phprequire_once(‘config_inc.php‘);class product{ function get_sql_array($db,$sql,$flash=0,$max_cache_file_time=3600){ require_once(‘redis.class.php‘); $redis = new redis_class(); if ($flash == 0) { $res = $redis->redis_mc_get($sql); } if ((isset($res) === FALSE) || ($res === FALSE)) { $res = $db->fetch_array($db->query($sql)); $redis -> redis_mc_set($sql , $res, $max_cache_file_time); } return $res; }} //实例$prd = new product();$result = $prd -> get_sql_array($db,$sql,$flash=0,$max_cache_file_time=3600);var_dump($result);?>
php redis(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。