您的位置:首页 > 数据库 > Redis

【redis】 redis常用方法输出整理

2015-05-05 18:28 204 查看
1,咱们使用的redis 很多是经过封装的 源码 使用 ,原始的则是 redis/autoload.php 加载后 使用的 <pre name="code" class="php">new Predis\Client($redisConfig);
2,



<?php
require_once 'redis/autoload.php' ;
$redisHost = '127.0.0.1' ; //reids配置主机ip
$redisPort = '6379' ; //redis配置主机端口
$redisDatabase = '97' ; //redis读写时选择的库

$redisConfig = array("host"=>$redisHost, "port"=>$redisPort, "database"=>$redisDatabase) ;
$redis = new Predis\Client($redisConfig);
//获取
<span style="color:#cc0000;"> $val = $redis->get('admin');</span>
//设置
<span style="color:#cc0000;"> $happy=$redis->set('str','happy');//set 还回 true </span>
//var_dump($happy) ;//bool(true)
//设置 setex
<span style="color:#990000;">$setex = $redis->setex ( 'str' , 10 , 'bar' ) ; </span>
//表示 将key 'str'的值 设置为 bar 并且有效时期是10s
//表示存储有效期为10秒
//var_dump($setex);
//setnx 相当于add 操作 不会覆盖已有值
// $setnx=$redis->setnx('shi','1226');
//var_dump($setnx);//bool(true)
//
//$setnx1=$redis->setnx('shi','1223');
//var_dump($setnx1);//bool(false)
//set的变种 值为 56了
//$getset =$redis -> getset ( 'shi' , 56 ) ;
//使用递增递减
// $redis->incr('shi');
//按照长度进行递增
// $redis->incrby('shi',4);
//exists检测是否存在某值
<span style="color:#990000;"> // $exists=$redis -> exists ( 'foo' );
// var_dump($exists); bool(false)</span>
// $redis -> del ( 'hui' ) ; //true
//type 类型检测,字符串返回string,列表返回 list,set表返回set/zset,hash表返回hash
<span style="color:#990000;">// $val1= $redis -> type ( 'foo' ) ; //不存在,返回none
// var_dump($val1);//string(4) "none"</span>
// $val2= $redis -> set ( 'str' , 'test' ) ;//set 成功则还回 true
// var_dump($val2);//bool(true)
<span style="color:#990000;">// $val3= $redis -> type ( 'str' ) ; //字符串,返回string
// var_dump($val3);//string(6) string</span>

//append 连接到已存在字符串 追加在 当前 key的value后面 继续赋值
<span style="color:#990000;"> // $redis -> append ( 'str','_123' ) ; //返回累加后的字符串长度8,此进str为 ‘xx_123′</span>
//setrange 部分替换操作
<span style="color:#660000;"> //$redis -> setrange ( 'str' , 0 , 'abc' ) ; //返回3,参数2为0时等同于set操作
// $redis -> setrange ( 'str' , 2 , 'ef') ; //返回4,表示从第2个字符后替换,这时 abef </span>
//$redis ->set( 'str','abcdef') ;
//substr 部分获取操作
<span style="color:#990000;"> // $substr= $redis -> substr ( 'str', 0 , 1 ) ; //表示从第0个起,取到第1个字符,共3个,返回’abc’
// var_dump($substr);
// $strlen= $redis -> strlen ('shi') ; //返回长度</span>
// var_dump($strlen);
//setbit/getbit 位存储和获取
// // redis 用setbit(bitmap)统计活跃用户
// $redis -> setbit ( 'binary' , 31 , 1 ) ; //表示在第31位存入1,这边可能会有大小端问题?不过没关系,getbit 应该不会有问题
// $getbit =$redis -> getbit ( 'binary' , 31 ) ; //返回
// var_dump($getbit);

// //keys 模糊查找功能,支持*号以及?号(匹配一个字符)
// $redis -> set ( 'foo1' , 123 ) ;
// $redis -> set ( 'foo2' , 456 ) ;
<span style="color:#cc0000;">// $keys1 =$redis -> keys ( 'foo*' ) ; //返回foo1和foo2的array *模糊查询
// var_dump($keys1);
// $keys2=$redis -> keys ( 'f?o?' ) ; //同上?</span>
// var_dump($keys2);
//randomkey 随机返回一个key
//$randomkey= $redis -> randomkey() ; //可能是返回 ‘foo1′或者是’foo2′及其它任何一存在redis的key
//var_dump($randomkey);
//rename/renamenx 对key进行改名,所不同的是renamenx不允许改成已存在的key
//重命名
<span style="color:#cc0000;">// $rename=$redis -> rename ( 'str' , 'str2' ) ; //把原先命名为’str’的key改成了’str2′</span>
// var_dump($rename);
//expire 设置key-value的时效性,ttl 获取剩余有效期,persist 重新设置为永久存储
//$redis ->set('foo','qiuhui');

//报错 暂停
// $expire = $redis->expire('xiaoqiu', 10 ); //设置有效期为10秒
// var_dump($expire);
// $ttl = $redis -> ttl ('xiaoqiu'); //返回有效期值1s
// var_dump($ttl);
// $expire = $redis -> expire ('xiaoqiu'); //取消expire行为
// var_dump($expire);
//dbsize 返回redis当前数据库的记录总数
// $dbsize=$redis->dbsize();
// var_dump($dbsize);
/*
队列操作
*/

//rpush/rpushx 有序列表操作,从队列后插入元素
//lpush/lpushx 和rpush/rpushx的区别是插入到队列的头部,同上,’x'含义是只对已存在的key进行操作
<span style="color:#cc0000;">// $redis -> rpush ( 'fooList' , 'bar1' ) ; //返回一个列表的长度1 后
// $redis -> lpush ( 'fooList' , 'bar0') ; //返回一个列表的长度2 头
// $redis -> rpushx ( 'fooList' , 'bar2' ) ; //返回3,rpushx只对<strong>已存在</strong>的队列做添加,否则返回0</span>
// //llen返回当前列表长度
<span style="color:#990000;">// $redis -> llen ( 'fooList' ) ; //3</span>

// //lrange 返回队列中一个区间的元素
<span style="color:#990000;">// $lrange1=$redis -> lrange ( 'fooList' , 0 , 1 ) ; //返回数组包含第0个至第1个共2个元素 还回的 0-1 即[0],[1] </span>
//这里显示的是 bar0 bar1
// array(2) {
// [0]=>
// string(4) "bar0"
// [1]=>
// string(4) "bar1"
// }
// var_dump($lrange1);
<span style="color:#cc0000;">// $lrange2=$redis -> lrange ( 'fooList' , 0 ,-1 ) ; //返回第0个至倒数第一个,相当于返回所有元素,注意redis中很多时候会用到负数,下同
// var_dump($lrange2);</span>
//显示的 bar0 bar1 bar2
// array(3) {
// [0]=>
// string(4) "bar0"
// [1]=>
// string(4) "bar1"
// [2]=>
// string(4) "bar2"
// }
// //lindex 返回指定顺序位置的list元素
<span style="color:#990000;">// $lindex =$redis -> lindex ( 'fooList' , 1 ) ; //返回’bar1′</span>
// var_dump($lindex);//string(4) "bar1" 取的是index

// //lset 修改队列中指定位置的value
// $redis -> lset ( 'fooList' , 1 , '123' ) ; //修改[1]位置1的元素,返回true
//再次获取一下值
//$lrange3=$redis -> lrange ( 'fooList' , 0 ,-1 ) ;
// var_dump($lrange3);

// //lrem 删除队列中左起指定数量的字符
// $lrem=$redis -> lrem ( 'fooList' , 1 , '123' ) ; //删除队列中左起(右起使用-1)1个字符’_'(若有)
// var_dump($lrem);//返回的是 int(1)
<span style="color:#990000;">// $lrange3=$redis -> lrange ( 'fooList' , 0 ,-1 ) ;</span>
// var_dump($lrange3);
// array(2) {
// [0]=>
// string(4) "bar0"
// [1]=>
// string(4) "bar2"
// }
// //lpop/rpop 类似栈结构地弹出(并删除)最左或最右的一个元素
<span style="color:#990000;">// $lpop1=$redis -> lpop ( 'fooList' ) ; //’bar0′</span>
// var_dump($lpop1);
<span style="color:#990000;">// $lpop2=$redis -> rpop ( 'fooList' ) ; //’bar2′&l
bd52
t;/span>
// var_dump($lpop2);
// string(4) "bar0"
// string(4) "bar2"

// //ltrim 队列修改,保留左边起若干元素,其余删除
<span style="color:#990000;">// $ltrim=$redis -> ltrim ( 'fooList' , 0 , 1 ); //保留左边起第0个至第1个元素 bool(true)</span>
// var_dump($ltrim);
// //进行打印一下
// $lrange4=$redis -> lrange ( 'fooList' , 0 ,-1 ) ;
// var_dump($lrange4);
//array(0) {**
// }
//rpoplpush 从一个队列中pop出元素并push到另一个队列
// $redis -> rpush ( 'list1' , 'ab0' );//后
// $redis -> rpush ( 'list1' , 'ab4' );
// $redis -> rpush ( 'list1' , 'ab5' );
// // $redis -> rpush ( 'list2' , 'ab2' );
// //$redis -> rpush ( 'list2' , 'ab3' );
<span style="color:#990000;">// $rpoplpush = $redis -> rpoplpush ( 'list1' , 'list2' ); //从尾部list1拿出 推到list2</span>
// //结果list1 =>array(‘ab0′),list2 =>array(‘ab1′,’ab2′,’ab3′)
// var_dump($rpoplpush);
// //进行打印
// $resul1= $redis->lrange('list1',0,-1);
// var_dump($resul1);
// $resul2= $redis->lrange('list2',0,-1);
// var_dump($resul2);
//结果
// string(3) "ab1"
// array(1) {
// [0]=>
// string(3) "ab0"
// }
// array(3) {
// [0]=>
// string(3) "ab1"
// [1]=>
// string(3) "ab2"
// [2]=>
// string(3) "ab3"
// }
// $redis -> rpoplpush ( 'list2' , 'list2' ); //也适用于同一个队列, 这相当于翻转队列,把最后一个元素移到头部list2 =>array(‘ab3′,’ab1′,’ab2′)

<span style="color:#990000;">// //linsert 在队列的中间指定元素前或后插入元素
$redis -> linsert ( 'list2' , 'before' , 'ab1' , '123' ); //表示在元素’ab1′之前插入’123′</span>
$resul2= $redis->lrange('list2',0,-1);
var_dump($resul2);
//结果
// [2]=>
// string(3) "123"
// [3]=>
// string(3) "ab1"
// [4]=>
// string(3) "ab2"
// [5]=>
<span style="color:#990000;"> $redis -> linsert ( 'list2' , 'after' , 'ab1' , '456' ); //表示在元素’ab1′之后插入’456′</span>
$resul3= $redis->lrange('list2',0,-1);
var_dump($resul3);
//结果
[2]=>
// string(3) "123"
// [3]=>
// string(3) "ab1"
// [4]=>
// string(3) "456"
// [5]=>
// string(3) "ab2"
// [6]=>

// //blpop/brpop 阻塞并等待一个列队不为空时,再pop出最左或最右的一个元素(这个功能在php以外可以说非常好用)
// //brpoplpush 同样是阻塞并等待操作,结果同rpoplpush一样
// $redis -> blpop ( 'list3' , 10 ) ; //如果list3为空则一直等待,直到不为空时将第一元素弹出,10秒后超时

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: