SortedSet(有序集合)
排行榜使用:
1.## 添加用户到有序集, ## 当key不存在,或 member不是key的成员时,ZINCRBY key increment member等同于ZADD key increment member ## score 值可以是整数值或双精度浮点数。 $redis->zIncrBy($rankKey, $num, $uid); 2.## 获取榜单分值 $score = $cache->zScore($rank_key, $uid); 3.## 删除榜单指定元素【榜单存在数据,进行删除操作】 if ($redis->zScore($rank_key, $uid) !== false) { $redis->zRem($rank_key, $uid); } 4.## 获取榜单【获取榜单指定区间元素】 $rankList = $redis->zRevRange($rank_key, $start, $end, true); 5.## 获取榜单成员数 $rankNum = $redis->zCard($rank_key); 6.## 获取榜单成员排名,不在榜单返回false $rank_index = $redis->zRevRank($rank_key, $data_id); $rank_index = ($rank_index === false) ? false : ($rank_index + 1); 7.## 获取倒序排名 $rank_id = $cache->zRevRank($rank_key, $uid); $new_rank_id = $rank_id + 1;//计算真实排名 $result['rank'] = $new_rank_id > 50 ? '50+' : $new_rank_id; ##领先落后,$limit 和多少做比较 function getRankData($limit-1,) { //.... if ($rank_id > $limit){ $result['rank_type'] = 2;//1领先,2落后 $result['rank_contrast_id'] = $limit + 1; $rank_list = $cache->zRevRange($rank_key, $limit, $limit, true); $next_score = empty(current($rank_list)) ? 0 : current($rank_list); $result['rank_score'] = ($next_score - $score) > 0 ? ($next_score-$score) : '0'; } else{ $result['rank_type'] = 1; $result['rank_contrast_id'] = $rank_id + 2; $rank_list = $cache->zRevRange($rank_key, $new_rank_id, $new_rank_id, true); $next_score = empty(current($rank_list)) ? 0 : current($rank_list); $result['rank_score'] = ($score - $next_score) > 0 ? ($score-$next_score) : '0'; } }
Set(集合)
排行榜使用:
1. ## 是否是淘汰用户,判断 member 元素是否集合 key 的成员。 $redis->sIsMember($user_list_key, $uid) 2. ## 添加用户到淘汰列表 $redis->sAdd($user_list_key, $uid); if ($redis->ttl($user_list_key) == -1) { $redis->expire($user_list_key, $this->redis_len); }
Hash(哈希表)
排行榜使用:
1. ## 做任务 , ## 如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。 $total_money = $redis->hIncrBy($hash_key, 'money', $price); 2. ## 做任务 , ## 会先将域 field 的值设为 0 ,然后再执行加法操作 ## 为哈希表 key 中的域 field 加上浮点数增量 increment $total_money = $redis->hIncrByFloat($hash_key, 'money', $price);
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn