Redis 有序集合 存取

2017-07-22 03:15:33

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

Redis Zrangebyscore 命令

Redis Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。

具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。

默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。


注意 : 特别注意 存入的时候 value 要和分数值以一对一 否则达不到你想要的列表内容

实例如下

先插入100 条数据

for ($x=0; $x<=100; $x++) {
    $redis = RedisClient::instance(self::REDIS_STRING)->zAdd('Text:niefengjun', $x, 'niefengjun.cn_'.$x);
    //print_r($redis);

}

$redis = RedisClient::instance(self::REDIS_STRING)->ZRANGE('Text:niefengjun', 10,15);
Fn::outputToJson(ResponseCode::OK,'请求成功',$redis) ;


{
  "meta": {
    "code": 0,
    "message": "请求成功",
    "timestamp": 1500529917075
  },
  "data": [
    "niefengjun.cn_10",
    "niefengjun.cn_11",
    "niefengjun.cn_12",
    "niefengjun.cn_13",
    "niefengjun.cn_14",
    "niefengjun.cn_15"
  ]
}



你打算打赏多少钱呢?

打赏
(微信扫一扫)