<?php  $redis = new redis();  $redis->connect('192.168.1.108', 6379);  $redis->flushall();   $array=array('tank'=>'1',  'zhang'=>'2',  'ying'=>'3',  'test'=>'4');  $redis->mset($array);  print_r($redis->keys('*s*'));        // 结果:Array ( [0] => test )  print_r($redis->keys('y???'));       // 结果:Array ( [0] => ying )  print_r($redis->keys('t[e]*'));  // 结果:Array ( [0] => test )  print_r($redis->keys('*'));      // 结果:Array ( [0] => ying [1] => test [2] => zhang [3] => tank )   print_r($redis->mget(array("tank","ying")));     // 结果:Array ( [0] => 1 [1] => 3 )
?>4) sort--最简单的 SORT 使用方法是 SORT key 和 SORT key DESC --因为 SORT 命令默认排序对象为数字, 当需要对字符串进行排序时, 需要显式地在 SORT 命令之后添加 ALPHA 修饰符:# 网址redis> LPUSH website "www.reddit.com"
(integer) 1redis> LPUSH website "www.slashdot.com"
(integer) 2redis> LPUSH website "www.infoq.com"
(integer) 3# 默认(按数字)排序redis> SORT website
1) "www.infoq.com"
2) "www.slashdot.com"
3) "www.reddit.com"# 按字符排序redis> SORT website ALPHA
1) "www.infoq.com"
2) "www.reddit.com"
3) "www.slashdot.com"描述:按条件取得数据
参数:代码如下:array('by' => 'pattern', //匹配模式'limit' => array(0, 1),'get' => 'pattern''sort' => 'asc' or 'desc','alpha' => TRUE,'store' => 'external-key'
)返回或保存给定列表、集合、有序集合key中经过排序的元素。一般排序代码如下:<?php  $redis = new redis();  $redis->connect('192.168.1.108', 6379);  $redis->flushall();  $redis->lpush('test', 1);  $redis->lpush('test', 10);  $redis->lpush('test', 8);  print_r($redis->sort('test')); //结果:Array ( [0] => 1 [1] => 8 [2] => 10 )
?>字母排序代码如下:<?php  $redis = new redis();  $redis->connect('192.168.1.108', 6379);  $redis->flushall();  $redis->lpush('test', 'a');  $redis->lpush('test', 'd');  $redis->lpush('test', 'b');  print_r($redis->sort('test')); //结果:Array ( [0] => b [1] => d [2] => a )  print_r($redis->sort('test',array('ALPHA'=>TRUE))); //结果:Array ( [0] => a [1] => b [2] => d )
?>排序取部分数据代码如下:<?php  $redis = new redis();  $redis->connect('192.168.1.108', 6379);  $redis->flushall();  $redis->lpush('test', 31);  $redis->lpush('test', 5);  $redis->lpush('test', 2);  $redis->lpush('test', 23);    $array = array('LIMIT'=>array(0,3),"SORT"=>'DESC');  print_r($redis->sort('test',$array));  //结果:Array ( [0] => 31 [1] => 23 [2] => 5 )
?>使用外部key进行排序有时候你会希望使用外部的key作为权重来比较元素,代替默认的对比方法。假设现在有用户(user)表数据如下:代码如下:id     name    score
-------------------------------
1     tank      89
2     zhang     40
4       ying      70
3      fXXK       90id数据保存在key名为id的列表中。
name数据保存在key名为name_{id}的列表中
score数据保存在score_{id}的key中。代码如下:<?php  $redis = new redis();  $redis->connect('192.168.1.108', 6379);  $redis->flushall();   $redis->lpush('id', 1);  $redis->set('name_1', 'tank');  $redis->set('score_1',89);  $redis->lpush('id', 2);  $redis->set('name_2', 'zhang');  $redis->set('score_2', 40);  $redis->lpush('id', 4);  $redis->set('name_4','ying');  $redis->set('score_4', 70);  $redis->lpush('id', 3);  $redis->set('name_3', 'fXXK');  $redis->set('score_3', 90);  --通过使用 BY 选项,可以让 uid 按其他键的元素来排序。
比如说, 以下代码让 uid 键按照 user_level_{uid} 的大小来排序:
--使用 GET 选项, 可以根据排序的结果来取出相应的键值。
比如说, 以下代码先排序 uid , 再取出键 user_name_{uid} 的值:/** * 按score从大到小排序,取得id */ $sort=array('BY'=>'score_*',  'SORT'=>'DESC' );  print_r($redis->sort('id',$sort)); //结果:Array ( [0] => 3 [1] => 1 [2] => 4 [3] => 2 )   /** * 按score从大到小排序,取得name */ $sort=array('BY'=>'score_*',  'SORT'=>'DESC',  'GET'=>'name_*' );  print_r($redis->sort('id',$sort)); //结果:Array ( [0] => fXXK [1] => tank [2] => ying [3] => zhang )    /** * 按score从小到大排序,取得name,score */ $sort=array('BY'=>'score_*',  'SORT'=>'DESC',  'GET'=>array('name_*','score_*')  );  print_r($redis->sort('id',$sort));  /** *结果:Array ( [0] => fXXK [1] => 90 [2] => tank [3] => 89 [4] => ying [5] => 70 [6] => zhang [7] => 40 )) */ /** * 按score从小到大排序,取得id,name,score */
GET 有一个额外的参数规则,那就是 可以用 # 获取被排序键的值。$sort=array('BY'=>'score_*',  'SORT'=>'DESC',  'GET'=>array('#','name_*','score_*')  );  print_r($redis->sort('id',$sort));  /** * 结果:Array ( [0] => 3 [1] => fXXK [2] => 90 [3] => 1 [4] => tank [5] => 89 [6] => 4 [7] => ying [8] => 70 [9] => 2 [10] => zhang [11] => 40 ) */
?>

 demo

<?phpheader("Content-type: text/html; charset=utf-8");
$arr = [['1','张三',98,'http://www.img.com/3.jpg'],['2','李四',79,'http://www.img.com/4.jpg'],['3','王五',48,'http://www.img.com/5.jpg'],['4','赵六',85,'http://www.img.com/6.jpg'],['5','钱八',19,'http://www.img.com/8.jpg'],['6','孙吉',38,'http://www.img.com/9.jpg'],['7','张飞',46,'http://www.img.com/f.jpg'],['8','关羽',65,'http://www.img.com/g.jpg'],['9','德玛',73,'http://www.img.com/dm.jpg'],['10','盖伦',73,'http://www.img.com/gl.jpg']
];$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->del('uid');foreach($arr as $k=>$v){$redis->lpush('uid',$v[0]);$redis->set('name_'.$v[0], $v[1]);  $redis->set('score_'.$v[0], $v[2]);  $redis->set('user_img_'.$v[0], $v[3]);  }$sort = ['BY'=>'score_*','SORT'=>'DESC' ,//'LIMIT'=>array(0,3),'GET'=>array('name_*','score_*','user_img_*')
];  echo '<pre>';$res = array_chunk($redis->sort('uid',$sort), 3);foreach($res as $k=>$v){$res[$k]['sort'] = $k+1;
}print_r($res);foreach($res as $k=>$v){$tr.="<tr><td>{$v['sort']}</td><td>{$v[0]}</td><td>{$v[2]}</td><td>{$v[1]}</td></tr>";
}echo '<h1>排行榜</h1>';$html = "<table><tr><th>排名</th><th>用户名</th><th>头像</th><th>分数 </th>> </tr>{$tr}</table>";echo $html;?>

php redis 排行榜相关推荐

  1. redis排行榜之日排行周排行设计

    排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如"用户积分榜".如果没有实效性一直按照总榜来排,可能榜 ...

  2. Redis 排行榜 相同分数根据时间优先排行

      版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 需求 Redis 提供了按分数进行排序的有序集合. 比如在游戏里面,比如战斗力排行,充值排行,用默认的Redis 实现就可以达到需求. ...

  3. 【开发经验】redis排行榜功能(日榜、周榜、月榜)

    文章目录 前言 一.redis实现排行榜 1.新增操作 2.加分值 3.展示榜单 4.查看直播间人数 5.离开直播间 6.周榜 前言 redis中有一个有序集合(sorted set),通过此数据结构 ...

  4. tp6 redis 排行榜

    下载redis 扩展 "predis/predis": "^2.1"    放在composer.json 中 composer update 更新一下即可 然 ...

  5. redis排行榜_java_【Redis 源码日志】- Redis 应用:积分排行榜 - Java 技术驿站-Java 技术驿站...

    积分排行榜是 Redis 的经典应用. 倘若数据都存在数据库中,每次访问网页都需要对所有的数据做排序,对于日访问量大的网站来说,不仅服务器吃不消,用户体验也不佳.在 Redis 中提供了 sorted ...

  6. Redis实现排行榜、延迟队列、LRU、消息已读未读(Redisson客户端实现)

    目录 序言 Redis客户端选型 Redis配置 Redis实现排行榜 Redis实现延迟队列 Redis LRU(Least Recently Used)使用 Redis实现消息已读未读 总结 序言 ...

  7. Redis实现排行榜设计

    Redis实现排行榜设计 redis的zset结构有着天然的排序功能,十分适合并发量大的排行功能.通过key值确定排行榜的范围,使用members来作为排序的标识,score作为排序的依据.redis ...

  8. 基于Redis中 Zset数据类型实现各类高性能排行榜日榜、周榜(附上整合SpringBoot示例代码)

    目录 为什么要使用redis? 日榜.周榜实现方案介绍 热度增加代码参考 日榜获取 周榜获取 为什么要使用redis? 如果使用mysql 要实现排行榜功能,如果使用 mysql或其它关系型数据库 来 ...

  9. 大规模排行榜系统实践及挑战

    声明:本文来自腾讯增值产品部官方公众号小时光茶社,为CSDN原创投稿,未经许可,禁止任何形式的转载. 作者:唐聪,2014年毕业加入腾讯,SNG增值产品部后台开发工程师,一直从事QQ会员后台基础系统. ...

最新文章

  1. k8s中service类型
  2. jquery UI 后台图
  3. log4net环境配置
  4. spring3依赖包下载
  5. Java 中的位移运算符
  6. LDAP 中关于CN,OU,DC的含义
  7. pyspark分类算法之决策树分类器模型实践【decisionTreeClassifier】
  8. 计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令
  9. 2017锤子科技发布会
  10. UDP协议和TCP协议
  11. 系统迁移工具迁移操作系统到别的硬盘
  12. 扫描到pc服务器位置,打印机s2520 扫描到PC服务器之通讯录怎么设置
  13. ensp 不兼容 virtualbox,virtualbox version not support (AR 报错40 41 解决思路)
  14. Java Web HTML基础 静态网页制作
  15. 正版方舟建服务器,搭建ARK服务器
  16. html5中表单属性值_如何在HTML表单中使用Autocompletetype属性
  17. 专栏结语:基于spring cloud的工具栈
  18. Nginx 日志采集与分析
  19. item_search_shop - 获得alibaba店铺的所有商品
  20. 程序数据集散地:数据库(3)

热门文章

  1. db2界面调用存储过程_DB2 存储过程调用 存储过程
  2. 瑞芯微开发板资料收集
  3. 八、基本数据类型内置方法
  4. python绘制立体心形折纸图解_简单带翅膀的爱心立体卡片制作方法
  5. 第七届NVIDIA Sky Hackathon项目报告书
  6. [UE4]使用材质将图片变成黑白
  7. 2016计算机微课作品,Office 2016电脑办公基础教程(微课版)
  8. 儿童过敏性体质为什么越来越多?
  9. Android打开第三方APP
  10. 圈子决定地位,怎么去混好一个圈子…