<?php
header("Content-type:text/html;charset=utf8");
$redis = new redis();
$redis ->connect("127.0.0.1",'6379');
$redis ->select (1);

var_dump("############################################LIST队列##################################################");
$list1 = "list1";
$list2 = "list2";
$list3 = "list3";
//del 删除key 多个参数删除多个key
$redis->del($list1,$list2);

//lpush 左推入队列 || rpush 右推入队列
//@push 1,2,3,4,5,6,7,8,9,10
$redis->lpush($list1,1,2,3,4,5,6,7,8,9,10);
//llen 获取队列长度
$llen = $redis->llen($list2);
var_dump("队列长度(llen):".$llen);

//rpop 在队列右侧弹出元素 || lpop 在队列左侧弹出元素
$item = $redis->rpop($list1);
var_dump("右弹出元素(rpop):".$item);

//rpoplpush 队列右侧弹出元素,并且将元素左推入另一个队列
$redis->rpoplpush($list1,$list2);

//rpushx/lpushx 当队列存在时右/左推入元素,否则失败 添加成功返回队列长度,否则返回0
$ret = $redis->rpushx($list3,1);
var_dump("右推入不存在的队列(rpushx):".$ret);
$ret = $redis->rpushx($list1,11);
var_dump("右推入存在的队列(rpushx):".$ret);

//lrange(key,start,end)返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)
//@return array
$ret = $redis->lrange($list1,0,-1);
var_dump("获取队列中的元素(lrange):",$ret);

//blpop/brpop 弹出元素,阻塞(等待队列加入元素,直到超时,当队列加入元素,立即弹出)
//@return array 0-key名称 1-元素值
// $redis->del($list1);
// $item = $redis->brpop($list1,10);
// var_dump("获取队列中的元素(阻塞)(brpop):",$item);

//brpoplpush rpoplpush 的阻塞型 参考BRPOP和RPOPLPUSH
// $redis->del($list1,$list2);
// $item = $redis->brpoplpush($list1,$list2);

//lindex 通过index索引获取元素值
$item = $redis->lindex($list1,8);
var_dump("通过index索引获取元素值(brpop):",$item);

//linsert在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1
$redis->linsert($list1,REDIS::AFTER,"11","12");
$item = $redis->lrange($list1,0,-1);
var_dump("查找元素11,存在则在其后加入元素12(linsert):",$item);
$ret = $redis->linsert($list1,REDIS::AFTER,"NONE","12");
var_dump("查找元素NONE,不存在则返回(linsert):",$ret);

//LREM 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素
$redis->lrem($list1,11,2);
$item = $redis->lrange($list1,0,-1);
var_dump("移除2个值为11的元素之后(LREM):",$item);

//LSET 根据索引设置队列中元素的值
$redis->lset($list1,0,88);
$item = $redis->lrange($list1,0,-1);
var_dump("将队列第一个元素设置为88之后(LSET):",$item);

var_dump("############################################SET集合##################################################");
$set1 = "set1";
$set2 = "set2";
$set3 = "set3";
$redis->del($set1,$set2,$set3);
//SADD 集合添加元素
$redis->sadd($set1,1,2,3,4,5,6,7,8,9);
$redis->sadd($set2,2,43,54,6,7,8,2);
//SMEMBERS 获取集合全部元素
//@return ARRAY
$item = $redis->smembers($set1);
var_dump("获取集合全部元素(smembers):",$item);

//SCARD 获取集合元素数量
$ret = $redis->scard($set1);
var_dump("获取集合元素数量(SCARD):".$ret);

//SDIFF 求差集,返回第一个集合差集元素,返回结果中无第二个集合元素
//@return ARRAY
$item = $redis->sdiff($set1,$set2);
var_dump("求差集(SDIFF):",$item);

//SDIFFSTORE 求差集并将差集保存到output的集合 ,如果新集合已经存在则覆盖
//@return 新集合的长度
$item = $redis->sdiffstore($set3,$set1,$set2);
var_dump("求差集,新集合放到set3,返回新集合长度(SDIFFSTORE):".$item);
$item = $redis->smembers($set3);
var_dump("求差集,新集合放到set3(SDIFFSTORE):",$item);

//SINTER 求交集
//@return array
var_dump("交集计算++++++++++++++++++++++++++++++++");
$item = $redis->smembers($set1);
var_dump("set1:",$item);
$item = $redis->smembers($set2);
var_dump("set2:",$item);

$item = $redis->sinter($set1,$set2);
var_dump("求交集,返回交集结果(SINTER):",$item);

//SINTERSTORE 求交集并将结果写入新的集合,如果新集合已经存在则覆盖
//@return 交集长度
$item = $redis->sinterstore($set3,$set1,$set2);
var_dump("求交集,结果写入set3,返回交集长度(SINTERSTORE):".$item);
$item = $redis->smembers($set3);
var_dump("求交集,新集合放到set3(SINTERSTORE):",$item);

//sismember名称为key的集合中查找是否有value元素,有ture 没有 false
$redis->sIsMember($set1, 7);

//SMOVE 将一个集合中的元素移动到另一个集合
//将set1中的1元素移动到set2中
$ret = $redis->smove($set1,$set2,1);
var_dump("SMOVE返回的结果:",$ret);

//SPOP 在集合中随机弹出一个元素
$item = $redis->spop($set2);
var_dump("SPOP随机弹出得元素:",$item);

//SRANDMEMBER 随机弹出若干个元素
//set1中弹出2个元素
$item = $redis->srandmember($set1,2);
var_dump("SRANDMEMBER随机弹出2个元素:",$item);

//SREM 删除集合元素 ,返回删除的元素个数
//删除set3中的8和7元素
$ret = $redis->srem($set3,8,7);
var_dump("SREM返回结果:",$ret);

//SSCAN 模糊匹配元素名称,并返回
$redis->sadd($set1,"hell",'hall','work','word');
// $item = $redis->sscan();
// var_dump("SSCAN结果:",$item);
//SUNION 取结合并集 sunionstore求并集后赋值给新集合,如果新集合存在则覆盖,省略不表,使用方法参考sdiff,sdiffstore

var_dump("############################################HASH对象##################################################");
//HSET 设置哈希对象中的值
$hash1 = "hash1";
$hash2 = "hash2";
$hash3 = "hash3";
$redis->del($hash1,$hash2,$hash3);
//HSET设置hash对像单个属性值
$redis->hset($hash1,"name",'feiyu');
//HGETALL 获取hash对象所有得key=>value
$item = $redis->hgetall($hash1);
var_dump($item);

//HMSET 批量设置hash对象字段
$ret = $redis->hmset($hash1,array("sex"=>"男","money"=>"$999999999999999999",'age'=>27,'height'=>175.63,"+++"=>"aaaaaa"));
var_dump("HMSET返回结果:",$ret);
$item = $redis->hgetall($hash1);
var_dump("HMSET插入之后的结果:",$item);

//HDEL 根据属性名称删除hash对象的属性
$redis->hdel($hash1,"+++");
$item = $redis->hgetall($hash1);
var_dump("HDEL删除之后:",$item);

//HEXISTS 判断该属性再hash对象中是否存在
$ret = $redis->hexists($hash1,"sex");
var_dump("HEXISTS返回结果:",$ret);
//HGET 获取hash对象的某个值
$item = $redis->hGet($hash1,"name");
var_dump("HGET获取结果",$item);
//HINCRBY 哈希对象字段累加 注:field及value必须为int,否则return false;
$ret = $redis->HINCRBY($hash1,"age",1);
var_dump("HINCRBY执行结果",$ret);
$item = $redis->hGet($hash1,"age");
var_dump("HINCRBY执行之后的结果",$item);

//HINCRBYFLOAT hash对象字段累加浮点数 注:field及value 为int类型时也可以执行,返回值小数点后长度根据累加值决定,但是实际存储位为浮点数,通过HVALS等函数获取时注意舍取
$ret = $redis->HINCRBYFLOAT($hash1,"height",1.223);
var_dump("HINCRBY执行结果",$ret);

//HKEYS 获取hash对象得所有key值
$item = $redis->HKEYS($hash1);
var_dump("KEYS获取hash的所有keys",$item);

//HLEN 获取hash对象的长度
$ret = $redis->hlen($hash1);
var_dump("KEYS获取hash的长度",$ret);

//HMGET 获取多个hash对象的值
$item = $redis->hmget($hash1,array("name","age"));
var_dump("HMGET获取hash的多个值",$item);
//HSETNS 设置hash的值,如果key不存在则创建,如果已经存在则执行失败
$item = $redis->hset($hash1,"name",'feiyu');
var_dump("HSETNS设置已经存在得key",$item);
$item = $redis->hset($hash1,"first",'08');
var_dump("HSETNS设置已经存在得key",$item);
//HVALS 获取hash的所有值
$item = $redis->hvals($hash1);
var_dump("HVALS获取哈希的所有值",$item);
// HSCAN PHP暂时无实例, 服务器命令:HSCAN hash1(哈希对象名称) 0(资源起始) [match nam*] [count 1]
// $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
// $item = $redis->hscan($hash1,0);
// var_dump("HVALS获取哈希的所有值",$item);

var_dump("############################################Sorted SET有序集合##################################################");
$zset1 = "zset1";
$zset2 = "zset2";
$zset3 = "zset3";
$redis->del($zset1,$zset2,$zset3);
//ZADD向集合加入元素,进行排序 命令模式 ZADD source members
//注意:元素值不能重复,如果该元素已经存在则写入失败
$ret = $redis->zadd($zset1,0,"daaa");
$ret = $redis->zadd($zset1,1,"bb");
$ret = $redis->zadd($zset1,1,"cc");
$ret = $redis->zadd($zset1,3,1);
var_dump($ret);
//获取有序集合中start 到 stop位置的元素 ZRange(集合KEY,start,stop)
//返回数组
$item = $redis->zRange($zset1,0,1);
var_dump($item);
//ZCARD获取有序集合的元素个数
$ret = $redis->zcard($zset1);
var_dump($ret);

//ZCOUNT key min max 根据集合中的source 范围获取有序集合得长度 PHP:zcount(key,minsource,maxsource)
$ret = $redis->zcount($zset1,0,1);
var_dump($ret);

//ZINCERBY 有序集合中元素累加
//命令模式:zincerby key increment member
//php:当前版本不支持该方法
// $ret = $redis->zincerby($zset1,12,1);
// var_dump($ret);

//zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。
$redis->zAdd('key', 1, 'val1');
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 5, 'val5');
$redis->zRange('key', 0, -1); // array(val0, val1, val5)

//zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
$redis->zAdd('key1', 0, 'val0');
$redis->zAdd('key1', 2, 'val2');
$redis->zAdd('key1', 10, 'val10');
$redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);

//zDelete, zRem
//zRem(key, member) :删除名称为key的zset中的元素member
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zDelete('key', 'val2');
$redis->zRange('key', 0, -1);

//zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);

//zRangeByScore, zRevRangeByScore
//$redis->zRangeByScore(key, star, end, array(withscores, limit ));
//返回名称为key的zset中score >= star且score <= end的所有元素

//zCount
//$redis->zCount(key, star, end);
//返回名称为key的zset中score >= star且score <= end的所有元素的个数

//zRemRangeByScore, zDeleteRangeByScore
//$redis->zRemRangeByScore('key', star, end);
//删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数

// zSize, zCard
// 返回名称为key的zset的所有元素的个数

// zScore
// $redis->zScore(key, val2);
// 返回名称为key的zset中元素val2的score

// zRank, zRevRank
// $redis->zRevRank(key, val);
// 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序

// zIncrBy
// $redis->zIncrBy('key', increment, 'member');
// 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

// zUnion/zInter
// 参数
// keyOutput
// arrayZSetKeys
// arrayWeights
// aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.
// 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

更多详细内容参考:http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

php redis 代码实例的更多相关文章

  1. Redis:安装、配置、操作和简单代码实例(C语言Client端)

    Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...

  2. MATLAB的PLOT函数线型设置及横坐标为字符串的代码实例

    2.横坐标为字符串的代码实例 cell={‘PLS’,’SVM’,’RF’,’NNET’,’NB’,’PLR’,’C5.0′,’PDA’,’KNN’,’GLM’,’BCT’};%分类方法yData=[ ...

  3. web service上传参数代码实例

    web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...

  4. (转)combogrid的代码实例

    EasyUI中combogrid的代码实例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  5. PHP生成迅雷、快车、旋风等软件的下载链接代码实例

    PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...

  6. Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...

  8. input文本框实现宽度自适应代码实例

    代码实例如下: <!DOCTYPE html> <html><head><meta charset="utf-8"><meta ...

  9. jQuery实现的鼠标滑过切换图片代码实例

    jQuery实现的鼠标滑过切换图片代码实例:有时候网页需要这样的简单效果,那就是当鼠标滑过默认图片的时候,能够实现图片的切换,可能在实际应用中,往往没有这么简单,不过大家可以自行扩展一下,下面简单介绍 ...

随机推荐

  1. js实现判断浏览器版本

    //判断浏览器版本是否过低 var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) var IEversion = ...

  2. ant安装(linux)

    1.下载 下载地址:http://ant.apache.org/bindownload.cgi 下载apache-ant-1.9.7-bin.tar.gz(当前最新版本),将该下载包拷贝到/data/ ...

  3. zabbix通过curl命令判断web服务是否正常并自动重启服务

    zabbix通过curl命令判断web服务是否正常并自动重启服务 主要思路: 通过curl命令获取服务器响应码,如果正常返回200,不正常返回000 具体命令: curl -I -s -w " ...

  4. SBT 构建scala eclipse开发

    scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...

  5. jafka消息结构

  6. python 排序

    python 写的排序,实现起来还是比较简单 #快速排序 def qsort(L): if len(L)>1: return qsort([i for i in L[1:] if i<L[ ...

  7. ES 聚合函数

    https://segmentfault.com/a/1190000004466154#articleHeader0 http://www.cnblogs.com/didda/p/5485681.ht ...

  8. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  9. linux c libcurl的简单使用(转)

    curl是Linux下一个非常著名的下载库,通过这个库,可以很简单的实现文件的下载等操作.看一个简单的例子: #include <curl/curl.h> #include <std ...

  10. 各种 starter poms (启动器)

    starter包含了搭建项目,快速运行所需的依赖.它是一个依赖关系描述符的集合.当应用需要一种spring的服务时,不需要粘贴拷贝大量的依赖关系描述符.例如想在spring中使用redis,只需要在项 ...