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
php redis 代码实例的更多相关文章
- Redis:安装、配置、操作和简单代码实例(C语言Client端)
Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...
- MATLAB的PLOT函数线型设置及横坐标为字符串的代码实例
2.横坐标为字符串的代码实例 cell={‘PLS’,’SVM’,’RF’,’NNET’,’NB’,’PLR’,’C5.0′,’PDA’,’KNN’,’GLM’,’BCT’};%分类方法yData=[ ...
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- (转)combogrid的代码实例
EasyUI中combogrid的代码实例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- PHP生成迅雷、快车、旋风等软件的下载链接代码实例
PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...
- Scala 深入浅出实战经典 第45讲: scala中context bounds代码实例
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用
http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...
- input文本框实现宽度自适应代码实例
代码实例如下: <!DOCTYPE html> <html><head><meta charset="utf-8"><meta ...
- jQuery实现的鼠标滑过切换图片代码实例
jQuery实现的鼠标滑过切换图片代码实例:有时候网页需要这样的简单效果,那就是当鼠标滑过默认图片的时候,能够实现图片的切换,可能在实际应用中,往往没有这么简单,不过大家可以自行扩展一下,下面简单介绍 ...
随机推荐
- C#如何定义全局变量
C#中没有全局变量的概念,可以定义一个common类,通过静态变量来存放所有需要的全局变量,调用的时候通过common来调用即可. 例如: public static class common // ...
- xml 中转意字符&\/使用方法
所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a paragraph <p>This is another paragr ...
- 转:MVC单表多按钮提交
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...
- AIX系统程序异常不释放光驱处理
AIX操作系统有时会出现程序异常不释放光驱,可以用以下命令进行处理: #fuser -kxuc /dev/cd0 或者 #fuser /dev/cd0 以上命令会列出访问光驱设备的所有进程,然后使用k ...
- PHP echo 即时输出
header(“Content-type:text/html;charset=utf-8″); #设置执行时间不限时 set_time_limit(0); #清除并关闭缓冲,输出到浏览器之前使用这个函 ...
- UVa 490 - Rotating Sentences
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...
- SqlServer2008R2附件数据库失败
MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) 该经验介绍如何处理该 ...
- python学习笔记1-元类__metaclass__
type 其实就是元类,type 是python 背后创建所有对象的元类 python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): ...
- webstorm下搭建编译less环境
webstorm自带less,不过要编译的话需要nodejs环境. 首先去node的主页下载对应版本的nodejs然后安装,下载地址:http://nodejs.org/ 安装完之后打开命令提示符(w ...
- (八) 一起学 Unix 环境高级编程 (APUE) 之 信号
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...