|
<p>//使用autoload加载相关库,这边重点就是为了require $file;<br> spl_autoload_register(function($class) {<!-- --><br> $file = __DIR__.'/lib/Predis/'.$class.'.php';<br> if (file_exists($file)) {<!-- --><br> require $file;<br> return true;<br> }<br> });<br> <br> //配置连接的IP、端口、以及相应的数据库<br> $server = array(<br> 'host' => '127.0.0.1',<br> 'port' => 6379,<br> 'database' => 15<br> );<br> $redis = new Client($server);<br> <br> //普通set/get操作<br> $redis->set('library', 'predis');<br> $retval = $redis->get('library');<br> echo $retval; //显示 'predis'<br> <br> //setex set一个存储时效<br> $redis->setex('str', 10, 'bar'); //表示存储有效期为10秒<br> <br> //setnx/msetnx相当于add操作,不会覆盖已有值<br> $redis->setnx('foo',12); //true<br> $redis->setnx('foo',34); //false<br> <br> //getset操作,set的变种,结果返回替换前的值<br> $redis->getset('foo',56);//返回34<br> <br> // incrby/incr/decrby/decr 对值的递增和递减<br> $redis->incr('foo'); //foo为57<br> $redis->incrby('foo',2); //foo为59<br> <br> //exists检测是否存在某值<br> $redis->exists('foo');//true<br> <br> //del 删除<br> $redis->del('foo');//true<br> <br> //type 类型检测,字符串返回string,列表返回 list,set表返回set/zset,hash表返回hash<br> $redis->type('foo');//不存在,返回none<br> $redis->set('str','test');<br> $redis->type('str'); //字符串,返回string<br> <br> //append 连接到已存在字符串<br> $redis->append('str','_123'); //返回累加后的字符串长度8,此进str为 'test_123'<br> <br> //setrange 部分替换操作<br> $redis->setrange('str',0,'abc'); //返回3,参数2为0时等同于set操作<br> $redis->setrange('str',2,'cd');//返回4,表示从第2个字符后替换,这时'str'为'abcd'<br> <br> //substr 部分获取操作<br> $redis->substr('str',0,2);//表示从第0个起,取到第2个字符,共3个,返回'abc'<br> <br> //strlen 获取字符串长度<br> $redis->strlen('str'); //返回4<br> <br> //setbit/getbit 位存储和获取<br> $redis->setbit('binary',31,1); //表示在第31位存入1,这边可能会有大小端问题?不过没关系,getbit 应该不会有问题<br> $redis->getbit('binary',31); //返回1<br> <br> //keys 模糊查找功能,支持*号以及?号(匹配一个字符)<br> $redis->set('foo1',123);<br> $redis->set('foo2',456);<br> $redis->keys('foo*'); //返回foo1和foo2的array<br> $redis->keys('f?o?'); //同上<br> <br> //randomkey 随机返回一个key<br> $redis->randomkey(); //可能是返回 'foo1'或者是'foo2'及其它任何一存在redis的key<br> <br> //rename/renamenx 对key进行改名,所不同的是renamenx不允许改成已存在的key<br> $redis->rename('str','str2'); //把原先命名为'str'的key改成了'str2'<br> <br> //expire 设置key-value的时效性,ttl 获取剩余有效期,persist 重新设置为永久存储<br> $redis->expire('foo', 1); //设置有效期为1秒<br> $redis->ttl('foo'); //返回有效期值1s<br> $redis->expire('foo'); //取消expire行为<br> <br> //dbsize 返回redis当前数据库的记录总数<br> $redis->dbsize();<br> <br> /*<br> 队列操作<br> */<br> <br> //rpush/rpushx 有序列表操作,从队列后插入元素<br> //lpush/lpushx 和rpush/rpushx的区别是插入到队列的头部,同上,'x'含义是只对已存在的key进行操作<br> $redis->rpush('fooList', 'bar1'); //返回一个列表的长度1<br> $redis->lpush('fooList', 'bar0'); //返回一个列表的长度2<br> $redis->rpushx('fooList', 'bar2'); //返回3,rpushx只对已存在的队列做添加,否则返回0<br> //llen返回当前列表长度<br> $redis->llen('fooList');//3<br> <br> //lrange 返回队列中一个区间的元素<br> $redis->lrange('fooList',0,1); //返回数组包含第0个至第1个共2个元素<br> $redis->lrange('fooList',0,-1);//返回第0个至倒数第一个,相当于返回所有元素,注意redis中很多时候会用到负数,下同<br> <br> //lindex 返回指定顺序位置的list元素<br> $redis->lindex('fooList',1); //返回'bar1'<br> <br> //lset 修改队列中指定位置的value<br> $redis->lset('fooList',1,'123');//修改位置1的元素,返回true<br> <br> //lrem 删除队列中左起指定数量的字符<br> $redis->lrem('fooList',1,'_'); //删除队列中左起(右起使用-1)1个字符'_'(若有)<br> <br> //lpop/rpop 类似栈结构地弹出(并删除)最左或最右的一个元素<br> $redis->lpop('fooList'); //'bar0'<br> $redis->rpop('fooList'); //'bar2'<br> <br> //ltrim 队列修改,保留左边起若干 |
|