thinkphp5操作zset有序集合

野性酷女 2023-06-16 04:56 52阅读 0赞

**

thinkphp5操作zset有序集合

**
**redis 五大类型之zset有序集合
基本命令:
zadd 给有序集合添加一个成员和分支
zrem 删除一个有序集合的成员
zcard 集合数量
zcount 返回分支介于min和max中间的成员数量
zincrby 给集合成员加上value值
zrank 返回成员在集合中的位置
zscore 返回成员的分值
zrange 返回集合的元素,0 -1 为所有成员
zrangesbycore返回集合中给定分值的成员

服务端redis.php扩展

  1. /*
  2. * zadd 给有序集合添加一个成员和分支
  3. */
  4. public function zAdd($name,$val,$key)
  5. {
  6. return $this->handler->zadd($name,$val,$key);
  7. }
  8. /*
  9. * zrem 删除一个有序集合的成员
  10. */
  11. public function zRem($name,$key)
  12. {
  13. $num = 0;
  14. if(is_array($key)){
  15. foreach ($key as $row){
  16. $num+= $this->handler->zrem($name,$row);
  17. }
  18. return $num;
  19. }else{
  20. return $this->handler->zrem($name,$key);
  21. }
  22. }
  23. /*
  24. * zcard 集合数量
  25. */
  26. public function zCart($name)
  27. {
  28. return $this->handler->zcard($name);
  29. }
  30. /*
  31. * zincrby 给集合成员加上value值
  32. */
  33. public function zIncRby($name,$val,$key)
  34. {
  35. return $this->zincrby($name,$val,$key);
  36. }
  37. /*
  38. * zcount 返回分支介于min和max中间的成员数量
  39. */
  40. public function zCount($name,$min=0,$max=100000000)
  41. {
  42. return $this->handler->zount($name,$min,$max);
  43. }
  44. /*
  45. * zrank 返回成员在集合中的位置
  46. */
  47. public function zRank($name,$key)
  48. {
  49. return $this->handler->zrank($name,$key);
  50. }
  51. /*
  52. * zscore 返回成员的分值
  53. */
  54. public function zScore($name,$key)
  55. {
  56. return $this->handler->zscore($name,$key);
  57. }
  58. /*
  59. * zrange 返回集合的元素,0 -1 为所有成员
  60. */
  61. public function zRange($name,$start = 0 , $over = -1 ,$withscores)
  62. {
  63. if($withscores){
  64. return $this->handler->zrange($name,$start,$over,$withscores);
  65. }else{
  66. return $this->handler->zrange($name,$start,$over);
  67. }
  68. }
  69. /*
  70. * zrangescore 返回集合中给定分值的成员
  71. */
  72. public function zRangeByScore($name,$start = 0 , $over = 100000000 ,$withscores)
  73. {
  74. if($withscores){
  75. return $this->handler->zrangebyscore($name,$start,$over,$withscores);
  76. }else{
  77. return $this->handler->zrangebyscore($name,$start,$over);
  78. }
  79. }

1.zadd ,zrem ,zcount ,zrange
客户端请求

  1. public function redis()
  2. {
  3. $redis= new Redis();
  4. $redis->zAdd('demo','10','v1');
  5. $redis->zAdd('demo','20','v2');
  6. $redis->zAdd('demo','30','v3');
  7. dump($redis->zRange('demo'));
  8. echo $redis->zCount('demo');
  9. $redis->zRem('demo','v3');
  10. dump($redis->zRange('demo'));
  11. }

结果:

  1. array(3) {
  2. [0] => string(2) "v1"
  3. [1] => string(2) "v2"
  4. [2] => string(2) "v3"
  5. }
  6. 3
  7. array(2) {
  8. [0] => string(2) "v1"
  9. [1] => string(2) "v2"
  10. }

2.zincrby ,zscore
客户端请求

  1. public function redis()
  2. {
  3. $redis= new Redis();
  4. echo $redis->zScore('demo','v1');
  5. $redis->zIncRby('demo','10','v1');
  6. echo $redis->zScore('demo','v1');
  7. }

结果

  1. 10
  2. 20

3.zcard ,zrank
客户端请求

  1. public function redis()
  2. {
  3. $redis= new Redis();
  4. echo $redis->zCart('demo');
  5. echo $redis->zrank ('demo','v1');
  6. }

结果

  1. 2
  2. 1

4.zrangescore
客户端请求

  1. public function redis()
  2. {
  3. $redis= new Redis();
  4. dump($redis->zRangeByScore('demo','10','20'));
  5. }

结果

  1. v1

发表评论

表情:
评论列表 (有 0 条评论,52人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Zset有序集合

    有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)...

    相关 redis:有序集合zset

    介绍 有序集合保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作