php redis 代码实例

<?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

原文地址:https://www.cnblogs.com/feiyujinghong/p/php_redis.html