/* 添加一个或者多个value到无顺序集合总,如果value已经成set中,则返回false
* @param key set名称
* @param value
* ...
* @return int 新set长度
*/
$redis->sAdd('key1' , 'member1'); /* 1, 'key1' => {'member1'} */
$redis->sAdd('key1' , 'member2', 'member3'); /* 2, 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sAdd('key1' , 'member2'); /* 0, 'key1' => {'member1', 'member2', 'member3'}*/ /* 返回set的value数量;sSize
* @param key set
* @return int size
*/
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sCard('key1'); /* 3 */
$redis->sCard('keyX'); /* 0 */ /* 返回n个set的差集
* @param key set1
* ...
* @param key setn
* @return array 差集
*/
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s0', '4');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
var_dump($redis->sDiff('s0', 's1', 's2')); // array(0=>'2',1=>'4') /* 求差集,并把差集保存在第一个set中
* @param key set1
* ...
* @param key setn
* @return int 返回差集元素个数或者false
*/
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s0', '3');
$redis->sAdd('s0', '4');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
var_dump($redis->sDiffStore('dst', 's0', 's1', 's2')); //
var_dump($redis->sMembers('dst')); //array(0=>'2',1=>'4') /* 求交集,
* @param key set1
* ...
* @param key setn
* @return array 差集
*/
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val2');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
$redis->sAdd('key3', 'val4');
var_dump($redis->sInter('key1', 'key2', 'key3')); //array(0=>'val3',1=>'val4') /* 求交集,并把差集保存在第一个set中
* @param key set1
* ...
* @param key setn
* @return int 返回交集元素个数或者false
*/
$redis->sAdd('key1', 'val1');
$redis->sAdd('key1', 'val2');
$redis->sAdd('key1', 'val3');
$redis->sAdd('key1', 'val4');
$redis->sAdd('key2', 'val3');
$redis->sAdd('key2', 'val4');
$redis->sAdd('key3', 'val3');
$redis->sAdd('key3', 'val4');
var_dump($redis->sInterStore('output', 'key1', 'key2', 'key3')); //2
var_dump($redis->sMembers('output')); // array(0=>'val3',1=>'val4') /* 判断value是否在set里面,别名:sContains
* @param key
* @param value
* @return bool 包含返回true,失败返回false
*/
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sIsMember('key1', 'member1'); /* TRUE */
$redis->sIsMember('key1', 'memberX'); /* FALSE */ /* 返回一个set
* @param key set
* @param array set_val_array
*/
$redis->delete('s');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'b');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'c');
var_dump($redis->sMembers('s')); //array(0=>'c',1=>'a',3=>'b') /* 将set1中元素移动set2中,set1不保留
* @param key scrkey
* @param key deskey
* @param value 元素
* @return bool 成功返回true,失败返回false
*/
$redis->sAdd('key1' , 'member11');
$redis->sAdd('key1' , 'member12');
$redis->sAdd('key1' , 'member13'); /* 'key1' => {'member11', 'member12', 'member13'}*/
$redis->sAdd('key2' , 'member21');
$redis->sAdd('key2' , 'member22'); /* 'key2' => {'member21', 'member22'}*/
$redis->sMove('key1', 'key2', 'member13');
/* 'key1' => {'member11', 'member12'} */
/* 'key2' => {'member21', 'member22', 'member13'} */ /* 移除并返回随机一个元素从set中
* @param string key
* @return bool/string 元素返回值或者false
*/
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member3', 'member2', 'member1'}*/
$redis->sPop('key1'); /* 'member1', 'key1' => {'member3', 'member2'} */
$redis->sPop('key1'); /* 'member3', 'key1' => {'member2'} */ /* 随机返回一个元素,但是不移除该元素
* @param key list
* @param int(optional)
* 如果count是整数且小于元素的个数,返回含有 count
* 个不同的元素的数组,如果count是个整数且大于集合中元素的个数时,
* 仅返回整个集合的所有元素,当count是负数,
* 则会返回一个包含count的绝对值的个数元素的数组,
* 如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况
* @return string/array/false 如果不提供count参数,则返回元素,如果提供count,
* 则返回元素数组,如果有误,则返回false
*/
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member3', 'member1', 'member2'}*/
// No count
$redis->sRandMember('key1'); /* 'member1', 'key1' => {'member3', 'member1', 'member2'} */
$redis->sRandMember('key1'); /* 'member3', 'key1' => {'member3', 'member1', 'member2'} */
// With a count
$redis->sRandMember('key1', 3); // Will return an array with all members from the set
$redis->sRandMember('key1', 2); // Will an array with 2 members of the set
$redis->sRandMember('key1', -100); // Will return an array of 100 elements, picked from our set (with dups)
$redis->sRandMember('empty-set', 100); // Will return an empty array
$redis->sRandMember('not-a-set', 100); // Will return FALSE /* 移除set中元素
* @param string set
* @param string key1 要移除的元素key
* @...
* @return int 返回移除元素个数
*/
$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sRem('key1', 'member2', 'member3'); /*return 2. 'key1' => {'member1'} */ /* 合并多个set且返回结果
* @param string set1
* @param ...
* @return arrray 合并后结果
*/
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
var_dump($redis->sUnion('s0', 's1', 's2')); /* 参考sUnion函数,却别在意该函数会保存结果
* @param string key 保存结果的key
* @param string set1
* @param ...
* @return arrray 合并后结果
*/
$redis->delete('s0', 's1', 's2');
$redis->sAdd('s0', '1');
$redis->sAdd('s0', '2');
$redis->sAdd('s1', '3');
$redis->sAdd('s1', '1');
$redis->sAdd('s2', '3');
$redis->sAdd('s2', '4');
var_dump($redis->sUnionStore('dst', 's0', 's1', 's2')); //int(4)
var_dump($redis->sMembers('dst')); //array(4) {[0]=>string(1) "3" [1]=>string(1) "4" [2]=>string(1) "1" [3]=>string(1) "2" } /* 遍历set集合
* @param string 迭代器
* @param long(引用)
* @param string optional 匹配模式
* @param long count
* @return array/boolean
*/
$it = NULL;
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); /* don't return empty results until we're done */
while($arr_mems = $redis->sscan('set', $it, "*pattern*")) {
foreach($arr_mems as $str_mem) {
echo "Member: $str_mem\n";
}
} $it = NULL;
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY); /* return after each iteration, even if empty */
while(($arr_mems = $redis->sscan('set', $it, "*pattern*"))!==FALSE) {
if(count($arr_mems) > 0) {
foreach($arr_mems as $str_mem) {
echo "Member found: $str_mem\n";
}
} else {
echo "No members in this iteration, iterator value: $it\n";
}
} /* 添加一个或多个成员到有序集合中,如果存在则更新权重
* @param key 集合
* @param double score 权重
* @param string val 值
* @param long 成功返回1,失败返回0
*/
$redis->zAdd('key', 1, 'val1');
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 5, 'val5');
$redis->zRange('key', 0, -1); // array(val0, val1, val5) /* 返回有序集合大小
* @param key
* @return long 大小
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zSize('key'); /* 3 */ /* 获取指定权重范围的子集中元素个数
* @param int start
* @param int end
* @return long 子集个数
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zCount('key', 0, 3); /* 2, corresponding to array('val0', 'val2') */ /* 增加一个量给权重
* @param string key
* @param double value
* @param string k-value
* @return double 新的权重值
*/
$redis->delete('key');
$redis->zIncrBy('key', 2.5, 'member1'); /* key or member1 didn't exist, so member1's score is to 0 before the increment */ /* and now has the value 2.5 */
$redis->zIncrBy('key', 1, 'member1'); /* 3.5 */ /* 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。
* 对于集合中每一个元素的score,在进行AGGREGATE运算前,
* 都要乘以对于的WEIGHT参数。
* 如果没有提供WEIGHT,默认为1。
* 默认的AGGREGATE是SUM,
* 即结果集合中元素的score是所有集合对应元素进行SUM运算的值,
* 而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。
* @param string keyOutput 保存结果key
* @param array arrayZSetKeys 交集数组key
* @param array arrayWeights 权重数组
* @param aggregateFunction Either SUM/MIN/MAX
* @return long 交集数量
*/
$redis->delete('k1');
$redis->delete('k2');
$redis->delete('k3');
$redis->delete('ko1');
$redis->delete('ko2');
$redis->delete('ko3');
$redis->delete('ko4');
$redis->zAdd('k1', 0, 'val0');
$redis->zAdd('k1', 1, 'val1');
$redis->zAdd('k1', 3, 'val3');
$redis->zAdd('k2', 2, 'val1');
$redis->zAdd('k2', 3, 'val3');
$redis->zInter('ko1', array('k1', 'k2')); /* 2, 'ko1' => array('val1', 'val3') */
$redis->zInter('ko2', array('k1', 'k2'), array(1, 1)); /* 2, 'ko2' => array('val1', 'val3') */
/* Weighted zInter */
$redis->zInter('ko3', array('k1', 'k2'), array(1, 5), 'min'); /* 2, 'ko3' => array('val1', 'val3') */
$redis->zInter('ko4', array('k1', 'k2'), array(1, 5), 'max'); /* 2, 'ko4' => array('val3', 'val1') */ /* 获取指定下标范围的有序集合范围子集
* @param string key 集合
* @param long start
* @param long end
* @param withscore:bool=false
* @return array 返回子集数组
*/
$redis->zAdd('key1', 0, 'val0');
$redis->zAdd('key1', 2, 'val2');
$redis->zAdd('key1', 10, 'val10');
$redis->zRange('key1', 0, -1); /* array('val0', 'val2', 'val10') */
// with scores
$redis->zRange('key1', 0, -1, true); /* array('val0' => 0, 'val2' => 2, 'val10' => 10) */ /* 获取指定范围权重的子集
* @param key 有序集合
* @param int start
* @param int end
* @param array withscores => TRUE / limit => array($offset, $count)
* @return array 子集
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zRangeByScore('key', 0, 3); /* array('val0', 'val2') */
$redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE); /* array('val0' => 0, 'val2' => 2) */
$redis->zRangeByScore('key', 0, 3, array('limit' => array(1, 1)); /* array('val2') */
$redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE, 'limit' => array(1, 1)); /* array('val2' => 2) */ /* 获取子集
* 不清楚,看例子清楚很多
*/
foreach(Array('a','b','c','d','e','f','g') as $c)
$redis->zAdd('key',0,$c);
$redis->zRangeByLex('key','-','[c') /* Array('a','b','c'); */
$redis->zRangeByLex('key','-','(c') /* Array('a','b') */
$redis->zRangeByLex('key','-','[c',1,2) /* Array('b','c') */ /* 返回key对应的权重
* @param key 集合
* @param string member key
* @return long 元素对应的权重
*/
$redis->zAdd('key', 1, 'one');
$redis->zAdd('key', 2, 'two');
$redis->zRank('key', 'one'); /* 0 */
$redis->zRank('key', 'two'); /* 1 */
$redis->zRevRank('key', 'one'); /* 1 */
$redis->zRevRank('key', 'two'); /* 0 */ /* 删除有序集合中元素,别名:zDelete
* @param string key 集合
* @param string member 元素
* @param long 成功返回1,失败返回0
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zDelete('key', 'val2');
$redis->zRange('key', 0, -1); /* array('val0', 'val10') */ /* 移除指定权重范围的元素
* @param string key 集合
* @param long start 下标开始
* @param long end 下标结束
* @return long 删除元素个数
*/
$redis->zAdd('key', 10, 'one');
$redis->zAdd('key', 20, 'two');
$redis->zAdd('key', 30, 'three');
$redis->zRemRangeByRank('key', 0, 1); /* 2 */
$redis->zRange('key', 0, -1); /* array('three' => 3) */ /* 移除权重范围内的元素,别名:zDeleteRangeByScore
* @param string key 集合
* @param double/string start 权重下限
* @param double/string end 权重上限
* @return long 删除元素个数
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zRemRangeByScore('key', 0, 3); /* 2 */ /* 倒序集合
* @param long start 开始下标
* @param long end 结束下标
* @param bool=false 是否返回权重
* @return array 倒序集合数组
*/
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zRevRange('key', 0, -1); /* array('val10', 'val2', 'val0') */
$redis->zRevRange('key', 0, -1, true); /* array('val10' => 10, 'val2' => 2, 'val0' => 0) */ /* 获取元素权重
* @param key 集合
* @param string member 元素
* @return duble 权重
*/
$redis->zAdd('key', 2.5, 'val2');
$redis->zScore('key', 'val2'); /* 2.5 */ /* 求并集,并保存在一个参数
* 看例子吧
*/
$redis->delete('k1');
$redis->delete('k2');
$redis->delete('k3');
$redis->delete('ko1');
$redis->delete('ko2');
$redis->delete('ko3');
$redis->zAdd('k1', 0, 'val0');
$redis->zAdd('k1', 1, 'val1');
$redis->zAdd('k2', 2, 'val2');
$redis->zAdd('k2', 3, 'val3');
$redis->zUnion('ko1', array('k1', 'k2')); /* 4, 'ko1' => array('val0', 'val1', 'val2', 'val3') */
/* Weighted zUnion */
$redis->zUnion('ko2', array('k1', 'k2'), array(1, 1)); /* 4, 'ko2' => array('val0', 'val1', 'val2', 'val3') */
$redis->zUnion('ko3', array('k1', 'k2'), array(5, 1)); /* 4, 'ko3' => array('val0', 'val2', 'val3', 'val1') */ /* 遍历set集合
*
*/
$it = NULL;
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
while($arr_matches = $redis->zscan('zset', $it, '*pattern*')) {
foreach($arr_matches as $str_mem => $f_score) {
echo "Key: $str_mem, Score: $f_score\n";
}
}

最新文章

  1. AspNetPager 多条件分页查询
  2. 编写具有单一职责(SRP)的类
  3. ‘ant-version’不是内部或外部命令,也不是可运行的程序
  4. Unity3D UGUI学习系列索引(暂未完成)
  5. Oracle 10gR2 & 10.2.0.5 的百度网盘下载地址 :)
  6. [WCF REST] Web消息主体风格(Message Body Style)
  7. WAP调用微信支付https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
  8. Mysql之EXPLAIN显示using filesort
  9. OpenDaylight之openflowjava的编译
  10. MYSQL定时创建表分区
  11. Git 将本次修改追加在上一次修改上面
  12. C# API 大全
  13. [JLOI2014]松鼠的新家-树链剖分
  14. java并发编程可见性与线程封闭
  15. 一次国际化记录以及平铺JSON数据
  16. 字符串a-b
  17. 转发 .Net平台下ActiveMQ入门实例 https://www.cnblogs.com/madyina/p/4121458.html
  18. 利用URLConnection http协议实现webservice接口功能(附HttpUtil.java)
  19. 【php增删改查实例】第十八节 - login.php编写
  20. Unigine mesh顶点坐标转换精度问题

热门文章

  1. RESTEasy-Rest服务框架
  2. C# 读取excel日期时获取到数字转换成日期
  3. 高效的jQuery
  4. php5 数据类型
  5. Unix/Linux进程间通信(二):匿名管道、有名管道 pipe()、mkfifo()
  6. MySQL Cluster 数据分布(分区、分组)
  7. iOS开发——高级篇——音频、音乐播放(封装类)
  8. phpcms手机门户相关
  9. MongoDB C Driver使用教程
  10. time和datetime时间戳---python