游戏开发中redis的使用
2014-04-07 15:02
453 查看
<?php class RedisCAO extends CAO { private $_redis_rank = 'redis_rank'; protected function mao_config($type) { $maoconfig = null; return false; return $maoconfig; } public function getRedisConnect($type,$split_id) { $conf = __redis_config_default(''); if ( class_exists('Redis')) { $redis = new Redis(); $redis->connect($conf['host'],$conf['port']); $redis->select(REDIS_DB_1); } else { return false; } return $redis; } private function makeKey($type,$sid) { if(!$sid) return false; return $type."_".$sid; } public function setUserValue($sid,$sid_uid,$value) { $redis = $this->getRedisConnect($this->_redis_rank, $sid); if(!$redis) return false; $key = $this->makeKey($this->_redis_rank, $sid); if(!$key) return false; $r = $redis->zadd($key,$value,$sid_uid); $redis->close(); return $r; } public function delUser($sid,$sid_uid) { $redis = $this->getRedisConnect($this->_redis_rank, $sid); if(!$redis) return false; $key = $this->makeKey($this->_redis_rank, $sid); if(!$key) return false; $r = $redis->zrem($key,$sid_uid); $redis->close(); return $r; } public function getTop($sid,$p=0,$page_size=5) { $redis = $this->getRedisConnect($this->_redis_rank, $sid); if(!$redis) return false; $key = $this->makeKey($this->_redis_rank, $sid); if(!$key) return false; // return $redis->zRange($key, -1, -5, true); //TODO $total = $redis->zcard($key); $pages = (int)ceil($total/$page_size); if(!$p || $total<=$page_size) { $data = $redis->zrevrange($key,0,-1,true); } else { $data = $redis->zrevrange($key,($p-1)*$page_size,$p*$page_size-1,true); } /* if($total>100) { $redis->zremrangebyrank($key,100,$total); } */ if(!$data) $data=array(); $redis->close(); return array('total'=>$total,'list'=>$data,'pages'=>$pages); } public function getoneRank($union_id,$sid) { $redis = $this->getRedisConnect($this->_redis_rank, $key); $key = $this->makeKey($this->_redis_rank, $sid); if(!$redis) return false; $r['value'] = $redis->zscore($key,$union_id); $r['list'] = $redis->zrevrank($key,$union_id); $redis->close(); return $r; } /* * 挑战联盟列表 */ public function getUnionpkExpTop($exp_start,$exp_end,$key='union:exp:top') { $redis = $this->getRedisConnect($this->_redis_key_union_list, $key); if(!$redis) return false; $res = $redis->zrangebyscore($key,$exp_start,$exp_end,array('withscores' =>false,'limit'=>array(0, 100))); if(empty($res) || count($res)<5 ) { $total = $redis->zcard($key); $page_size=50; $pages = (int)ceil($total/$page_size); if($pages>1) { $p = rand(1,$pages); } else { $p = 1; } $res = $redis->zrevrange($key,($p-1)*$page_size,$p*$page_size-1); } $redis->close(); shuffle($res); return $res; } public function getUnionExpTopRank($union_id) { $redis = $this->getRedisConnect($this->_redis_key_union_list, $key); if(!$redis) return false; $r = $redis->zrevrank('union:exp:top',$union_id); $redis->close(); return $r; } public function getUnionExpTopExp($union_id) { $redis = $this->getRedisConnect($this->_redis_key_union_list, $key); if(!$redis) return false; $r = $redis->zscore('union:exp:top',$union_id); $redis->close(); return $r; } /** * @用于申请 * @redis 存帮派id list */ public function addSearchId($union_id) { $redis = $this->getRedisConnect($this->_redis_key_union_list, $union_id); if(!$redis) return false; $r = $redis->zadd('union:apply:list', $union_id, $union_id); $redis->close(); return $r; } public function delSearchId($union_id) { $redis = $this->getRedisConnect($this->_redis_key_union_list, $union_id); if(!$redis) return false; $r = $redis->zrem('union:apply:list',$union_id); $redis->close(); if(!$r) return false; } public function getSearchList($union_id) { $redis = $this->getRedisConnect($this->_redis_key_union_list, $union_id); if(!$redis) return false; $total = $redis->zcard('union:apply:list'); $page_size=10; $pages = (int)ceil($total/$page_size); if($pages>1) { $p = rand(1,$pages); } else { $p = 1; } $data = $redis->zrevrange('union:apply:list',($p-1)*$page_size,$p*$page_size-1); if(!$data) $data=array(); $redis->close(); return $data; } } ?>
相关文章推荐
- 三体争霸网络游戏开发之一:redis下载连接使用
- [转] DirectX开发的游戏如何使用DirectXTex实现截屏
- [入门教程]使用Cocos2d-html5游戏引擎编写一个简单的游戏 第一回合: 搭建开发环境
- iphone游戏开发之cocos2d(四)cocos2d中的常用类及使用方法粗览,导演,场景,层,精灵;
- libgdx游戏引擎开发笔记(五)粒子编辑器的使用
- iphone游戏开发之cocos2d ( 十 )使用纹理图册,更方便生成精灵动画
- Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
- 【Cocos2d-X(2.x) 游戏开发系列之三】最新版本cocos2d-2.0-x-2.0.2使用资源加载策略
- android游戏开发框架libgdx的使用(二)--图形绘制
- 使用MIDP2.0开发游戏(2)使用Sprite
- 使用MIDP2.0开发游戏 (1) GameCanvas基础
- android游戏开发框架libgdx的使用(四)--舞台和演员
- android游戏开发框架libgdx的使用(十五)—TWL布局
- 使用MIDP2.0开发游戏 (3) 添加背景和前景
- 使用Photon引擎进行unity网络游戏开发(四)——Photon引擎实现网络游戏逻辑
- 在项目开发中使用Redis作缓存
- 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比
- linux使用Ogre+SDL进行游戏开发
- 游戏开发完要申请软件著作权,那么怎么写软件设计和使用说明呢?给出模板目录
- HTML 5游戏开发框架使用建议