Laravel中Redis有序集合使用

在项目中用到Redis有序集合操作,故整理使用方法。

目录

方法

sadd

zincrby

zrem

zrange

zrevrange

zrangebyscore

zrevrangebyscore

zunionstore

zinterstore

zcount

zcard

zscore

zremrangebyscore

zrank

zrevrank

zremrangebyrank

总结


方法

sadd

增加元素,并设置序号,成功返回true,重复返回false。

举例:

$redis->zadd('zset1', 1, 'zhangsan');

$redis->zadd('zset1', 2, 'lisi');

$redis->zadd('zset1', 3, 'wangwu');

 

zincrby

对指定元素索引值的增减,改变元素排列次序。

举例:

$redis->zincrby('zset1', 10, 'zhangsan'); // 返回11

 

zrem

移除指定元素

举例:

$redis->zrem('zset1', 'zhangsan'); // 返回 true or false

zrange

按位置次序返回表中指定区间的元素

举例:

$redis->zrange('zset1', 0, 1); 
// 返回位置 0 和 1的元素
/*
Array
(
    [0] => lisi
    [1] => zhangsan
)
*/


$redis->zrange('zset1', 0, -1); 
// 返回所有元素
/*
Array
(
    [0] => lisi
    [1] => zhangsan
    [2] => wangwu
)
*/


$redis->zrange('zset1', 0, -1, 'withscores'); 
// 返回所有元素 并包含索引值
/*
Array
(
    [lisi] => 1
    [wangwu] => 1
    [zhangsan] => 1
)
*/

zrevrange

同上,返回表中指定区间的元素,按次序倒排。

举例:

$redis->zrevrange('zset1', 0, -1); // 元素顺序和zrange相反

 

zrangebyscore

zrevrangebyscore

按顺序/降序返回表中指定索引区间的元素。

举例:

$redis->zadd('zset1', 3, 'wangwu');

$redis->zadd('zset1', 5, 'liliu');

// 返回索引值2-9之间的元素 array('wangwu','liliu')
$redis->zrangebyscore('zset1', 2, 9); 

// 返回索引值2-9之间的元素并包含索引值
$redis->zrangebyscore('zset1', 2, 9, 'withscores'); 

// 返回索引值2-9之间的元素,'withscores' =>true表示包含索引值; 'limit'=>array(1, 2),
// 表示偏移1条,返回2条,结果为array(array('wangwu',3),array('liliu',5))
$redis->zrangebyscore('zset1', 2, 9, array('withscores'=>true, 'limit'=>array(1, 2)));

zunionstore

zinterstore

将多个表的并集/交集存入另一个表中。

举例:

// 将'zset1','zset2','zset0'的并集存入'zset3'
$redis->zunionstore('zset3', array('zset1', 'zset2', 'zset0')); 

// weights参数表示权重,其中表示并集后 zset1集合的分 * 2 后存储到 zset3 集合, zset2集合的分 * 1 后存储到 zset3 集合
$redis->zunionstore('zset3', array('zset1', 'zset2'), array('weights' => array(2, 1))); 

// 'aggregate' => 'max'或'min'表示并集后相同的元素是取大值或是取小值
$redis->zunionstore('zset3', array('zset1', 'zset2'), array('aggregate' => 'max')); 

zcount

统计一个索引区间的元素个数。

举例:

$redis->zcount('zset1', 3, 5); // 返回 2

//'(3'表示索引值在3-5之间但不含3,同理也可以使用'(5'表示上限为5但不含5
$redis->zcount('zset1', '(3', 5)); 

zcard

统计元素个数。

举例:

$redis->zcard('zset1'); // 返回 4

 

zscore

查询元素的索引。

举例:

$redis->zscore('zset1', 'wangwu'); // 返回 3

zremrangebyscore

删除一个索引区间的元素。

举例:

$redis->zremrangebyscore('zset1', 0, 2);

// 删除索引在0-2之间的元素('zhangsan','lisi'), 返回删除元素个数2

zrank

zrevrank

返回元素所在表顺序/降序的位置(不是索引)。

举例:

// 返回0,因为它是第一个元素;zrevrank则返回1(最后一个)

$redis->zrank('zset1', 'ef');

zremrangebyrank

删除表中指定位置区间的元素。

举例:

// 删除位置为0-10的元素,返回删除的元素个数2

$redis->zremrangebyrank('zset1', 0, 10);

总结

Redis 有序集合操作方法及举例如上,可当字典查阅。

你可能感兴趣的:(#,Redis,#,Laravel,redis,laravel,数据库)