这篇文章介绍的内容是关于redis常见使用场景下PHP实现 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
在 http://www.redis.net.cn/ 能找到所有关于redis的信息,包括安装、命令、在编程语言中的使用等等。这里就不讲如何安装redis了,因为在上面的网站中都能找到。下面直接讲redis是如何在php中使用的,这里我选择的是phpredis扩展。
执行phpinfo()函数,根据下面截图中的“NTS”和“VCn”选择对应的压缩包,https://github.com/phpredis/phpredis/downloads。另外注意,PHP版本也要对应好。
首先把压缩包中的 php_igbinary.dll和php_redis.dll 文件放到PHP安装目录的 ext 目录中
然后在 php.ini 添加如下配置
extension=php_igbinary.dll extension=php_redis.dll
$redis = new Redis(); //连接redis服务器 $redis->connect('127.0.0.1', '6379'); echo "Connection to server sucessfully <br>"; //查看服务是否运行 echo "Server is running: " . $redis->ping();
结果如下,连接redis服务器成功
Connection to server sucessfully Server is running: +PONG
至此,我们可以在php中痛痛快快的使用redis了。
1 $redis = new Redis(); 2 //连接redis服务器 3 $redis->connect('127.0.0.1', '6379'); 4 5 6 $key = "key"; 7 $val = "val"; 8 9 //redis key操作 10 $redis->exists($key); //判断key值是否存在 11 $redis->expire($key, 10); //设置key在10秒后过期 12 13 //redis string 字符串 14 $redis->set($key, $val); 15 $redis->incr($key); //key值+1,除非val是整数,否则函数执行失败 16 $redis->decr($key); //key值-1,同上 17 $redis->append($key, "ue"); //追加key值内容 18 $redis->strlen($key); //返回key值的长度 19 20 //当第一次设置key值后,key值的数据类型就不能改变了。 21 $redis->del($key); //删除key值 22 23 //redis hash 哈希 24 $redis->hset($key, 'field1', 'val1'); //设置一个key-value键值对 25 $redis->hmset($key, array('field2'=>'val2', 'field3'=>'val3')); //设置多个k-v键值对26 $redis->hget($key, 'field2'); //获取hash其中的一个键值 27 $redis->hmget($key, array('field2', 'field1')); //获取hash的多个键值 28 $redis->hgetall($key); //获取hash中所有的键值对 29 $redis->hlen($key); //获取hash中键值对的个数 30 $redis->hkeys($key); //获取hash中所有的键 31 $redis->hvals($key); //获取hash中所有的值 32 $redis->del($key); //删除key值 33 34 //redis list 列表 35 $index = $start = 0; 36 $redis->lpush($key, 'val1', 'val2'); //在list的开头添加多个值 37 $redis->lpop($key); //移除并获取list的第一个元素 38 $redis->rpop($key); //移除并获取list的最后一个元素 39 $stop = $redis->llen($key) - 1; //获取list的长度 40 $redis->lindex($key, $index); //通过索引获取list元素 41 $redis->lrange($key, $start, $stop); //获取指定范围内的元素 42 43 $redis->del($key); 44 45 //redis set 无序集合 46 $redis->sadd($key, 'val1', 'val2'); //向集合中添加多个元素 47 $redis->scard($key); //获取集合元素个数 48 $redis->spop($key); //移除并获取集合内随机一个元素 49 $redis->srem($key, 'val1', 'val2'); //移除集合的多个元素 50 $redis->sismember($key, 'val1'); //判断元素是否存在于集合内 51 52 $redis->del($key); 53 //redis sorted set 有序集合 54 //有序集合里的元素都和一个分数score关联,就靠这个分数score对元素进行排序 55 $redis->zadd($key, $score1, $val1, $score2, $val2); //向集合内添加多个元素 56 $redis->zcard($key); //获取集合内元素总数 57 $redis->zcount($key, $minScore, $maxScore); //获取集合内分类范围内的元素 58 $redis->zrem($key, $member1, $member2); //移除集合内多个元素
附:Redis类的源码
<?php /** * Helper autocomplete for php redis extension * @author Max Kamashev <max.kamashev@gmail.com> * @link https://github.com/ukko/phpredis-phpdoc * * @method echo string $string Sends a string to Redis, which replies with the same string * * @method eval( $script, $args = array(), $numKeys = 0 ) * Evaluate a LUA script serverside * @param string $script * @param array $args * @param int $numKeys * @return Mixed. What is returned depends on what the LUA script itself returns, which could be a scalar value * (int/string), or an array. Arrays that are returned can also contain other arrays, if that's how it was set up in * your LUA script. If there is an error executing the LUA script, the getLastError() function can tell you the * message that came back from Redis (e.g. compile error). * @link http://redis.io/commands/eval * @example * <pre class="brush:php;toolbar:false"> * $redis->eval("return 1"); // Returns an integer: 1 * $redis->eval("return {1,2,3}"); // Returns Array(1,2,3) * $redis->del('mylist'); * $redis->rpush('mylist','a'); * $redis->rpush('mylist','b'); * $redis->rpush('mylist','c'); * // Nested response: Array(1,2,3,Array('a','b','c')); * $redis->eval("return {1,2,3,redis.call('lrange','mylist',0,-1)}}"); *
* $redis->connect('127.0.0.1', 6379); * $redis->connect('127.0.0.1'); // port 6379 by default * $redis->connect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout. * $redis->connect('/tmp/redis.sock'); // unix domain socket. *
* $it = NULL; // Initialize our iterator to NULL * $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); // retry when we get no keys back * while($arr_keys = $redis->scan($it)) { * foreach($arr_keys as $str_key) { * echo "Here is a key: $str_key\n"; * } * echo "No more keys to scan!\n"; * } *
* $redis->client('list'); * $redis->client('getname'); * $redis->client('setname', 'somename'); * $redis->client('kill', <ip:port>); *
* // Get ten slowlog entries * $redis->slowlog('get', 10); * * // Get the default number of slowlog entries * $redis->slowlog('get'); * * // Reset our slowlog * $redis->slowlog('reset'); * * // Retrieve slowlog length * $redis->slowlog('len'); *
* $redis->connect('127.0.0.1', 6379); * $redis->connect('127.0.0.1'); // port 6379 by default * $redis->connect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout. * $redis->connect('/tmp/redis.sock'); // unix domain socket. *
* $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); // don't serialize data * $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // use built-in serialize/unserialize * $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); // use igBinary serialize/unserialize * $redis->setOption(Redis::OPT_PREFIX, 'myAppName:'); // use custom prefix on all keys *
* $redis->setnx('key', 'value'); // return TRUE * $redis->setnx('key', 'value'); // return FALSE *
* $redis->set('key1', 'val1'); * $redis->set('key2', 'val2'); * $redis->set('key3', 'val3'); * $redis->set('key4', 'val4'); * $redis->delete('key1', 'key2'); // return 2 * $redis->delete(array('key3', 'key4')); // return 2 *
* $ret = $redis->multi() * ->set('key1', 'val1') * ->get('key1') * ->set('key2', 'val2') * ->get('key2') * ->exec(); * * //$ret == array ( * // 0 => TRUE, * // 1 => 'val1', * // 2 => TRUE, * // 3 => 'val2'); *
* $redis->watch('x'); * // long code here during the execution of which other clients could well modify `x` * $ret = $redis->multi() * ->incr('x') * ->exec(); * // $ret = FALSE if x has been modified between the call to WATCH and the call to EXEC. *
* function f($redis, $chan, $msg) { * switch($chan) { * case 'chan-1': * ... * break; * * case 'chan-2': * ... * break; * * case 'chan-2': * ... * break; * } * } * * $redis->subscribe(array('chan-1', 'chan-2', 'chan-3'), 'f'); // subscribe to 3 chans *
* function psubscribe($redis, $pattern, $chan, $msg) { * echo "Pattern: $pattern\n"; * echo "Channel: $chan\n"; * echo "Payload: $msg\n"; * } *
* $redis->set('key', 'value'); * $redis->exists('key'); // TRUE * $redis->exists('NonExistingKey'); // FALSE *
* $redis->incr('key1'); // key1 didn't exists, set to 0 before the increment and now has the value 1 * $redis->incr('key1'); // 2 * $redis->incr('key1'); // 3 * $redis->incr('key1'); // 4 *
* $redis = new Redis(); * $redis->connect('127.0.0.1'); * $redis->set('x', 3); * var_dump( $redis->incrByFloat('x', 1.5) ); // float(4.5) * * // ! SIC * var_dump( $redis->get('x') ); // string(3) "4.5" *
* $redis->incr('key1'); // key1 didn't exists, set to 0 before the increment and now has the value 1 * $redis->incr('key1'); // 2 * $redis->incr('key1'); // 3 * $redis->incr('key1'); // 4 * $redis->incrBy('key1', 10); // 14 *
* $redis->decr('key1'); // key1 didn't exists, set to 0 before the increment and now has the value -1 * $redis->decr('key1'); // -2 * $redis->decr('key1'); // -3 *
* $redis->decr('key1'); // key1 didn't exists, set to 0 before the increment and now has the value -1 * $redis->decr('key1'); // -2 * $redis->decr('key1'); // -3 * $redis->decrBy('key1', 10); // -13 *
* $redis->set('key1', 'value1'); * $redis->set('key2', 'value2'); * $redis->set('key3', 'value3'); * $redis->getMultiple(array('key1', 'key2', 'key3')); // array('value1', 'value2', 'value3'); * $redis->getMultiple(array('key0', 'key1', 'key5')); // array(`FALSE`, 'value2', `FALSE`); *
* $redis->lPush('l', 'v1', 'v2', 'v3', 'v4') // int(4) * var_dump( $redis->lRange('l', 0, -1) ); * //// Output: * // array(4) { * // [0]=> string(2) "v4" * // [1]=> string(2) "v3" * // [2]=> string(2) "v2" * // [3]=> string(2) "v1" * // } *
* $redis->rPush('l', 'v1', 'v2', 'v3', 'v4'); // int(4) * var_dump( $redis->lRange('l', 0, -1) ); * //// Output: * // array(4) { * // [0]=> string(2) "v1" * // [1]=> string(2) "v2" * // [2]=> string(2) "v3" * // [3]=> string(2) "v4" * // } *
* $redis->delete('key1'); * $redis->lPushx('key1', 'A'); // returns 0 * $redis->lPush('key1', 'A'); // returns 1 * $redis->lPushx('key1', 'B'); // returns 2 * $redis->lPushx('key1', 'C'); // returns 3 * // key1 now points to the following list: [ 'A', 'B', 'C' ] *
* $redis->delete('key1'); * $redis->rPushx('key1', 'A'); // returns 0 * $redis->rPush('key1', 'A'); // returns 1 * $redis->rPushx('key1', 'B'); // returns 2 * $redis->rPushx('key1', 'C'); // returns 3 * // key1 now points to the following list: [ 'A', 'B', 'C' ] *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ] * $redis->lPop('key1'); // key1 => [ 'B', 'C' ] *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ] * $redis->rPop('key1'); // key1 => [ 'A', 'B' ] *
* // Non blocking feature * $redis->lPush('key1', 'A'); * $redis->delete('key2'); * * $redis->blPop('key1', 'key2', 10); // array('key1', 'A') * // OR * $redis->blPop(array('key1', 'key2'), 10); // array('key1', 'A') * * $redis->brPop('key1', 'key2', 10); // array('key1', 'A') * // OR * $redis->brPop(array('key1', 'key2'), 10); // array('key1', 'A') * * // Blocking feature * * // process 1 * $redis->delete('key1'); * $redis->blPop('key1', 10); * // blocking for 10 seconds * * // process 2 * $redis->lPush('key1', 'A'); * * // process 1 * // array('key1', 'A') is returned *
* // Non blocking feature * $redis->lPush('key1', 'A'); * $redis->delete('key2'); * * $redis->blPop('key1', 'key2', 10); // array('key1', 'A') * // OR * $redis->blPop(array('key1', 'key2'), 10); // array('key1', 'A') * * $redis->brPop('key1', 'key2', 10); // array('key1', 'A') * // OR * $redis->brPop(array('key1', 'key2'), 10); // array('key1', 'A') * * // Blocking feature * * // process 1 * $redis->delete('key1'); * $redis->blPop('key1', 10); * // blocking for 10 seconds * * // process 2 * $redis->lPush('key1', 'A'); * * // process 1 * // array('key1', 'A') is returned *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ] * $redis->lLen('key1'); // 3 * $redis->rPop('key1'); * $redis->lLen('key1'); // 2 *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ] * $redis->lGet('key1', 0); // 'A' * $redis->lGet('key1', -1); // 'C' * $redis->lGet('key1', 10); // `FALSE` *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); // key1 => [ 'A', 'B', 'C' ] * $redis->lGet('key1', 0); // 'A' * $redis->lSet('key1', 0, 'X'); * $redis->lGet('key1', 0); // 'X' *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); * $redis->lRange('key1', 0, -1); // array('A', 'B', 'C') *
* $redis->rPush('key1', 'A'); * $redis->rPush('key1', 'B'); * $redis->rPush('key1', 'C'); * $redis->lRange('key1', 0, -1); // array('A', 'B', 'C') * $redis->lTrim('key1', 0, 1); * $redis->lRange('key1', 0, -1); // array('A', 'B') *
* $redis->lPush('key1', 'A'); * $redis->lPush('key1', 'B'); * $redis->lPush('key1', 'C'); * $redis->lPush('key1', 'A'); * $redis->lPush('key1', 'A'); * * $redis->lRange('key1', 0, -1); // array('A', 'A', 'C', 'B', 'A') * $redis->lRem('key1', 'A', 2); // 2 * $redis->lRange('key1', 0, -1); // array('C', 'B', 'A') *
* $redis->delete('key1'); * $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); // 0 * * $redis->lPush('key1', 'A'); * $redis->lPush('key1', 'B'); * $redis->lPush('key1', 'C'); * * $redis->lInsert('key1', Redis::BEFORE, 'C', 'X'); // 4 * $redis->lRange('key1', 0, -1); // array('A', 'B', 'X', 'C') * * $redis->lInsert('key1', Redis::AFTER, 'C', 'Y'); // 5 * $redis->lRange('key1', 0, -1); // array('A', 'B', 'X', 'C', 'Y') * * $redis->lInsert('key1', Redis::AFTER, 'W', 'value'); // -1 *
* $redis->sAdd('k', 'v1'); // int(1) * $redis->sAdd('k', 'v1', 'v2', 'v3'); // int(2) *
* var_dump( $redis->sAdd('k', 'v1', 'v2', 'v3') ); // int(3) * var_dump( $redis->sRem('k', 'v2', 'v3') ); // int(2) * var_dump( $redis->sMembers('k') ); * //// Output: * // array(1) { * // [0]=> string(2) "v1" * // } *
* $redis->sAdd('key1' , 'set11'); * $redis->sAdd('key1' , 'set12'); * $redis->sAdd('key1' , 'set13'); // 'key1' => {'set11', 'set12', 'set13'} * $redis->sAdd('key2' , 'set21'); * $redis->sAdd('key2' , 'set22'); // 'key2' => {'set21', 'set22'} * $redis->sMove('key1', 'key2', 'set13'); // 'key1' => {'set11', 'set12'} * // 'key2' => {'set21', 'set22', 'set13'} *
* $redis->sAdd('key1' , 'set1'); * $redis->sAdd('key1' , 'set2'); * $redis->sAdd('key1' , 'set3'); // 'key1' => {'set1', 'set2', 'set3'} * * $redis->sIsMember('key1', 'set1'); // TRUE * $redis->sIsMember('key1', 'setX'); // FALSE *
* $redis->sAdd('key1' , 'set1'); * $redis->sAdd('key1' , 'set2'); * $redis->sAdd('key1' , 'set3'); // 'key1' => {'set1', 'set2', 'set3'} * $redis->sCard('key1'); // 3 * $redis->sCard('keyX'); // 0 *
* $redis->sAdd('key1' , 'set1'); * $redis->sAdd('key1' , 'set2'); * $redis->sAdd('key1' , 'set3'); // 'key1' => {'set3', 'set1', 'set2'} * $redis->sPop('key1'); // 'set1', 'key1' => {'set3', 'set2'} * $redis->sPop('key1'); // 'set3', 'key1' => {'set2'} *
* $redis->sAdd('key1' , 'set1'); * $redis->sAdd('key1' , 'set2'); * $redis->sAdd('key1' , 'set3'); // 'key1' => {'set3', 'set1', 'set2'} * $redis->sRandMember('key1'); // 'set1', 'key1' => {'set3', 'set1', 'set2'} * $redis->sRandMember('key1'); // 'set3', 'key1' => {'set3', 'set1', 'set2'} *
* $redis->sAdd('key1', 'val1'); * $redis->sAdd('key1', 'val2'); * $redis->sAdd('key1', 'val3'); * $redis->sAdd('key1', 'val4'); * * $redis->sAdd('key2', 'val3'); * $redis->sAdd('key2', 'val4'); * * $redis->sAdd('key3', 'val3'); * $redis->sAdd('key3', 'val4'); * * var_dump($redis->sInter('key1', 'key2', 'key3')); * * //array(2) { * // [0]=> * // string(4) "val4" * // [1]=> * // string(4) "val3" * //} *
* $redis->sAdd('key1', 'val1'); * $redis->sAdd('key1', 'val2'); * $redis->sAdd('key1', 'val3'); * $redis->sAdd('key1', 'val4'); * * $redis->sAdd('key2', 'val3'); * $redis->sAdd('key2', 'val4'); * * $redis->sAdd('key3', 'val3'); * $redis->sAdd('key3', 'val4'); * * var_dump($redis->sInterStore('output', 'key1', 'key2', 'key3')); * var_dump($redis->sMembers('output')); * * //int(2) * // * //array(2) { * // [0]=> * // string(4) "val4" * // [1]=> * // string(4) "val3" * //} *
* $redis->delete('s0', 's1', 's2'); * * $redis->sAdd('s0', '1'); * $redis->sAdd('s0', '2'); * $redis->sAdd('s1', '3'); * $redis->sAdd('s1', '1'); * $redis->sAdd('s2', '3'); * $redis->sAdd('s2', '4'); * * var_dump($redis->sUnion('s0', 's1', 's2')); * * array(4) { * // [0]=> * // string(1) "3" * // [1]=> * // string(1) "4" * // [2]=> * // string(1) "1" * // [3]=> * // string(1) "2" * //} *
* $redis->delete('s0', 's1', 's2'); * * $redis->sAdd('s0', '1'); * $redis->sAdd('s0', '2'); * $redis->sAdd('s1', '3'); * $redis->sAdd('s1', '1'); * $redis->sAdd('s2', '3'); * $redis->sAdd('s2', '4'); * * var_dump($redis->sUnionStore('dst', 's0', 's1', 's2')); * var_dump($redis->sMembers('dst')); * * //int(4) * //array(4) { * // [0]=> * // string(1) "3" * // [1]=> * // string(1) "4" * // [2]=> * // string(1) "1" * // [3]=> * // string(1) "2" * //} *
* $redis->delete('s0', 's1', 's2'); * * $redis->sAdd('s0', '1'); * $redis->sAdd('s0', '2'); * $redis->sAdd('s0', '3'); * $redis->sAdd('s0', '4'); * * $redis->sAdd('s1', '1'); * $redis->sAdd('s2', '3'); * * var_dump($redis->sDiff('s0', 's1', 's2')); * * //array(2) { * // [0]=> * // string(1) "4" * // [1]=> * // string(1) "2" * //} *
* $redis->delete('s0', 's1', 's2'); * * $redis->sAdd('s0', '1'); * $redis->sAdd('s0', '2'); * $redis->sAdd('s0', '3'); * $redis->sAdd('s0', '4'); * * $redis->sAdd('s1', '1'); * $redis->sAdd('s2', '3'); * * var_dump($redis->sDiffStore('dst', 's0', 's1', 's2')); * var_dump($redis->sMembers('dst')); * * //int(2) * //array(2) { * // [0]=> * // string(1) "4" * // [1]=> * // string(1) "2" * //} *
* $redis->delete('s'); * $redis->sAdd('s', 'a'); * $redis->sAdd('s', 'b'); * $redis->sAdd('s', 'a'); * $redis->sAdd('s', 'c'); * var_dump($redis->sMembers('s')); * * //array(3) { * // [0]=> * // string(1) "c" * // [1]=> * // string(1) "a" * // [2]=> * // string(1) "b" * //} * // The order is random and corresponds to redis' own internal representation of the set structure. *
* $redis->set('x', '42'); * $exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol' * $newValue = $redis->get('x')' // return 'lol' *
* $key = $redis->randomKey(); * $surprise = $redis->get($key); // who knows what's in there. *
* $redis->select(0); // switch to DB 0 * $redis->set('x', '42'); // write 42 to x * $redis->move('x', 1); // move to DB 1 * $redis->select(1); // switch to DB 1 * $redis->get('x'); // will return 42 *
* $redis->select(0); // switch to DB 0 * $redis->set('x', '42'); // write 42 to x * $redis->move('x', 1); // move to DB 1 * $redis->select(1); // switch to DB 1 * $redis->get('x'); // will return 42 *
* $redis->set('x', '42'); * $redis->rename('x', 'y'); * $redis->get('y'); // → 42 * $redis->get('x'); // → `FALSE` *
* $redis->set('x', '42'); * $redis->rename('x', 'y'); * $redis->get('y'); // → 42 * $redis->get('x'); // → `FALSE` *
* $redis->set('x', '42'); * $redis->setTimeout('x', 3); // x will disappear in 3 seconds. * sleep(5); // wait 5 seconds * $redis->get('x'); // will return `FALSE`, as 'x' has expired. *
* $redis->set('x', '42'); * $redis->pExpire('x', 11500); // x will disappear in 11500 milliseconds. * $redis->ttl('x'); // 12 * $redis->pttl('x'); // 11500 *
* $redis->set('x', '42'); * $now = time(NULL); // current timestamp * $redis->expireAt('x', $now + 3); // x will disappear in 3 seconds. * sleep(5); // wait 5 seconds * $redis->get('x'); // will return `FALSE`, as 'x' has expired. *
* $redis->set('x', '42'); * $redis->pExpireAt('x', 1555555555005); * echo $redis->ttl('x'); // 218270121 * echo $redis->pttl('x'); // 218270120575 *
* $allKeys = $redis->keys('*'); // all keys will match this. * $keyWithUserPrefix = $redis->keys('user*'); *
* $count = $redis->dbSize(); * echo "Redis has $count keys\n"; *
* $redis->slaveof('10.0.1.7', 6379); * // ... * $redis->slaveof(); *
* $redis->object("encoding", "l"); // → ziplist * $redis->object("refcount", "l"); // → 1 * $redis->object("idletime", "l"); // → 400 (in seconds, with a precision of 10 seconds). *
* $redis->set('key', 'value1'); * $redis->append('key', 'value2'); // 12 * $redis->get('key'); // 'value1value2' *
* $redis->set('key', 'string value'); * $redis->getRange('key', 0, 5); // 'string' * $redis->getRange('key', -5, -1); // 'value' *
* $redis->set('key', 'Hello world'); * $redis->setRange('key', 6, "redis"); // returns 11 * $redis->get('key'); // "Hello redis" *
* $redis->set('key', 'value'); * $redis->strlen('key'); // 5 *
* $redis->set('key', "\x7f"); // this is 0111 1111 * $redis->getBit('key', 0); // 0 * $redis->getBit('key', 1); // 1 *
* $redis->set('key', "*"); // ord("*") = 42 = 0x2f = "0010 1010" * $redis->setBit('key', 5, 1); // returns 0 * $redis->setBit('key', 7, 1); // returns 0 * $redis->get('key'); // chr(0x2f) = "/" = b("0010 1111") *
* $redis->set('bit', '345'); // // 11 0011 0011 0100 0011 0101 * var_dump( $redis->bitCount('bit', 0, 0) ); // int(4) * var_dump( $redis->bitCount('bit', 1, 1) ); // int(3) * var_dump( $redis->bitCount('bit', 2, 2) ); // int(4) * var_dump( $redis->bitCount('bit', 0, 2) ); // int(11) *
* $redis->set('bit1', '1'); // 11 0001 * $redis->set('bit2', '2'); // 11 0010 * * $redis->bitOp('AND', 'bit', 'bit1', 'bit2'); // bit = 110000 * $redis->bitOp('OR', 'bit', 'bit1', 'bit2'); // bit = 110011 * $redis->bitOp('NOT', 'bit', 'bit1', 'bit2'); // bit = 110011 * $redis->bitOp('XOR', 'bit', 'bit1', 'bit2'); // bit = 11 *
* $redis->delete('s'); * $redis->sadd('s', 5); * $redis->sadd('s', 4); * $redis->sadd('s', 2); * $redis->sadd('s', 1); * $redis->sadd('s', 3); * * var_dump($redis->sort('s')); // 1,2,3,4,5 * var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1 * var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5 *
* $redis->info(); * * or * * $redis->info("COMMANDSTATS"); //Information on the commands that have been run (>=2.6 only) * $redis->info("CPU"); // just CPU information from Redis INFO *
* $redis->mset(array('key0' => 'value0', 'key1' => 'value1')); * var_dump($redis->get('key0')); * var_dump($redis->get('key1')); * // Output: * // string(6) "value0" * // string(6) "value1" *
* $redis->delete('x', 'y', 'z', 'h'); // remove x y z * $redis->mset(array('x' => 'a', 'y' => 'b', 'z' => 'c')); * $redis->hset('h', 'field', 'value'); * var_dump($redis->mget(array('x', 'y', 'z', 'h'))); * // Output: * // array(3) { * // [0]=> * // string(1) "a" * // [1]=> * // string(1) "b" * // [2]=> * // string(1) "c" * // [3]=> * // bool(false) * // } *
* $redis->delete('x', 'y'); * * $redis->lPush('x', 'abc'); * $redis->lPush('x', 'def'); * $redis->lPush('y', '123'); * $redis->lPush('y', '456'); * * // move the last of x to the front of y. * var_dump($redis->rpoplpush('x', 'y')); * var_dump($redis->lRange('x', 0, -1)); * var_dump($redis->lRange('y', 0, -1)); * * //Output: * // * //string(3) "abc" * //array(1) { * // [0]=> * // string(3) "def" * //} * //array(3) { * // [0]=> * // string(3) "abc" * // [1]=> * // string(3) "456" * // [2]=> * // string(3) "123" * //} *
* <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> * $redis->zAdd('z', 1, 'v2', 2, 'v2', 3, 'v3', 4, 'v4' ); // int(2) * $redis->zRem('z', 'v2', 'v3'); // int(2) * var_dump( $redis->zRange('z', 0, -1) ); * //// Output: * // array(2) { * // [0]=> string(2) "v1" * // [1]=> string(2) "v4" * // } *
* $redis->zAdd('key1', 0, 'val0'); * $redis->zAdd('key1', 2, 'val2'); * $redis->zAdd('key1', 10, 'val10'); * $redis->zRange('key1', 0, -1); // array('val0', 'val2', 'val10') * // with scores * $redis->zRange('key1', 0, -1, true); // array('val0' => 0, 'val2' => 2, 'val10' => 10) *
* $redis->zAdd('key', 0, 'val0'); * $redis->zAdd('key', 2, 'val2'); * $redis->zAdd('key', 10, 'val10'); * $redis->zRevRange('key', 0, -1); // array('val10', 'val2', 'val0') * * // with scores * $redis->zRevRange('key', 0, -1, true); // array('val10' => 10, 'val2' => 2, 'val0' => 0) *
* $redis->zAdd('key', 0, 'val0'); * $redis->zAdd('key', 2, 'val2'); * $redis->zAdd('key', 10, 'val10'); * $redis->zRangeByScore('key', 0, 3); // array('val0', 'val2') * $redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE); // array('val0' => 0, 'val2' => 2) * $redis->zRangeByScore('key', 0, 3, array('limit' => array(1, 1)); // array('val2' => 2) * $redis->zRangeByScore('key', 0, 3, array('limit' => array(1, 1)); // array('val2') * $redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE, 'limit' => array(1, 1)); // array('val2' => 2) *
* $redis->zAdd('key', 0, 'val0'); * $redis->zAdd('key', 2, 'val2'); * $redis->zAdd('key', 10, 'val10'); * $redis->zCount('key', 0, 3); // 2, corresponding to array('val0', 'val2') *
* $redis->zAdd('key', 0, 'val0'); * $redis->zAdd('key', 2, 'val2'); * $redis->zAdd('key', 10, 'val10'); * $redis->zRemRangeByScore('key', 0, 3); // 2 *
* $redis->zAdd('key', 1, 'one'); * $redis->zAdd('key', 2, 'two'); * $redis->zAdd('key', 3, 'three'); * $redis->zRemRangeByRank('key', 0, 1); // 2 * $redis->zRange('key', 0, -1, array('withscores' => TRUE)); // array('three' => 3) *
* $redis->zAdd('key', 0, 'val0'); * $redis->zAdd('key', 2, 'val2'); * $redis->zAdd('key', 10, 'val10'); * $redis->zCard('key'); // 3 *
* $redis->zAdd('key', 2.5, 'val2'); * $redis->zScore('key', 'val2'); // 2.5 *
* $redis->delete('z'); * $redis->zAdd('key', 1, 'one'); * $redis->zAdd('key', 2, 'two'); * $redis->zRank('key', 'one'); // 0 * $redis->zRank('key', 'two'); // 1 * $redis->zRevRank('key', 'one'); // 1 * $redis->zRevRank('key', 'two'); // 0 *
* $redis->delete('key'); * $redis->zIncrBy('key', 2.5, 'member1'); // key or member1 didn't exist, so member1's score is to 0 * // before the increment and now has the value 2.5 * $redis->zIncrBy('key', 1, 'member1'); // 3.5 *
* $redis->delete('k1'); * $redis->delete('k2'); * $redis->delete('k3'); * $redis->delete('ko1'); * $redis->delete('ko2'); * $redis->delete('ko3'); * * $redis->zAdd('k1', 0, 'val0'); * $redis->zAdd('k1', 1, 'val1'); * * $redis->zAdd('k2', 2, 'val2'); * $redis->zAdd('k2', 3, 'val3'); * * $redis->zUnion('ko1', array('k1', 'k2')); // 4, 'ko1' => array('val0', 'val1', 'val2', 'val3') * * // Weighted zUnion * $redis->zUnion('ko2', array('k1', 'k2'), array(1, 1)); // 4, 'ko2' => array('val0', 'val1', 'val2', 'val3') * $redis->zUnion('ko3', array('k1', 'k2'), array(5, 1)); // 4, 'ko3' => array('val0', 'val2', 'val3', 'val1') *
* $redis->delete('k1'); * $redis->delete('k2'); * $redis->delete('k3'); * * $redis->delete('ko1'); * $redis->delete('ko2'); * $redis->delete('ko3'); * $redis->delete('ko4'); * * $redis->zAdd('k1', 0, 'val0'); * $redis->zAdd('k1', 1, 'val1'); * $redis->zAdd('k1', 3, 'val3'); * * $redis->zAdd('k2', 2, 'val1'); * $redis->zAdd('k2', 3, 'val3'); * * $redis->zInter('ko1', array('k1', 'k2')); // 2, 'ko1' => array('val1', 'val3') * $redis->zInter('ko2', array('k1', 'k2'), array(1, 1)); // 2, 'ko2' => array('val1', 'val3') * * // Weighted zInter * $redis->zInter('ko3', array('k1', 'k2'), array(1, 5), 'min'); // 2, 'ko3' => array('val1', 'val3') * $redis->zInter('ko4', array('k1', 'k2'), array(1, 5), 'max'); // 2, 'ko4' => array('val3', 'val1') *
* $redis->delete('h') * $redis->hSet('h', 'key1', 'hello'); // 1, 'key1' => 'hello' in the hash at "h" * $redis->hGet('h', 'key1'); // returns "hello" * * $redis->hSet('h', 'key1', 'plop'); // 0, value was replaced. * $redis->hGet('h', 'key1'); // returns "plop" *
* $redis->delete('h') * $redis->hSetNx('h', 'key1', 'hello'); // TRUE, 'key1' => 'hello' in the hash at "h" * $redis->hSetNx('h', 'key1', 'world'); // FALSE, 'key1' => 'hello' in the hash at "h". No change since the field * wasn't replaced. *
* $redis->delete('h') * $redis->hSet('h', 'key1', 'hello'); * $redis->hSet('h', 'key2', 'plop'); * $redis->hLen('h'); // returns 2 *
* $redis->hMSet('h', * array( * 'f1' => 'v1', * 'f2' => 'v2', * 'f3' => 'v3', * 'f4' => 'v4', * )); * * var_dump( $redis->hDel('h', 'f1') ); // int(1) * var_dump( $redis->hDel('h', 'f2', 'f3') ); // int(2) * s * var_dump( $redis->hGetAll('h') ); * //// Output: * // array(1) { * // ["f4"]=> string(2) "v4" * // } *
* $redis->delete('h'); * $redis->hSet('h', 'a', 'x'); * $redis->hSet('h', 'b', 'y'); * $redis->hSet('h', 'c', 'z'); * $redis->hSet('h', 'd', 't'); * var_dump($redis->hKeys('h')); * * // Output: * // array(4) { * // [0]=> * // string(1) "a" * // [1]=> * // string(1) "b" * // [2]=> * // string(1) "c" * // [3]=> * // string(1) "d" * // } * // The order is random and corresponds to redis' own internal representation of the set structure. *
* $redis->delete('h'); * $redis->hSet('h', 'a', 'x'); * $redis->hSet('h', 'b', 'y'); * $redis->hSet('h', 'c', 'z'); * $redis->hSet('h', 'd', 't'); * var_dump($redis->hVals('h')); * * // Output * // array(4) { * // [0]=> * // string(1) "x" * // [1]=> * // string(1) "y" * // [2]=> * // string(1) "z" * // [3]=> * // string(1) "t" * // } * // The order is random and corresponds to redis' own internal representation of the set structure. *
* $redis->delete('h'); * $redis->hSet('h', 'a', 'x'); * $redis->hSet('h', 'b', 'y'); * $redis->hSet('h', 'c', 'z'); * $redis->hSet('h', 'd', 't'); * var_dump($redis->hGetAll('h')); * * // Output: * // array(4) { * // ["a"]=> * // string(1) "x" * // ["b"]=> * // string(1) "y" * // ["c"]=> * // string(1) "z" * // ["d"]=> * // string(1) "t" * // } * // The order is random and corresponds to redis' own internal representation of the set structure. *
* $redis->hSet('h', 'a', 'x'); * $redis->hExists('h', 'a'); // TRUE * $redis->hExists('h', 'NonExistingKey'); // FALSE *
* $redis->delete('h'); * $redis->hIncrBy('h', 'x', 2); // returns 2: h[x] = 2 now. * $redis->hIncrBy('h', 'x', 1); // h[x] ← 2 + 1. Returns 3 *
* $redis = new Redis(); * $redis->connect('127.0.0.1'); * $redis->hset('h', 'float', 3); * $redis->hset('h', 'int', 3); * var_dump( $redis->hIncrByFloat('h', 'float', 1.5) ); // float(4.5) * * var_dump( $redis->hGetAll('h') ); * * // Output * array(2) { * ["float"]=> * string(3) "4.5" * ["int"]=> * string(1) "3" * } *
* $redis->delete('user:1'); * $redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000)); * $redis->hIncrBy('user:1', 'salary', 100); // Joe earns 100 more now. *
* $redis->delete('h'); * $redis->hSet('h', 'field1', 'value1'); * $redis->hSet('h', 'field2', 'value2'); * $redis->hmGet('h', array('field1', 'field2')); // returns array('field1' => 'value1', 'field2' => 'value2') *
* $redis->config("GET", "*max-*-entries*"); * $redis->config("SET", "dir", "/var/run/redis/dumps/"); *
* $script = 'return 1'; * $sha = $redis->script('load', $script); * $redis->evalSha($sha); // Returns 1 *
* $redis->script('load', $script); * $redis->script('flush'); * $redis->script('kill'); * $redis->script('exists', $script1, [$script2, $script3, ...]); *
* $redis->eval('this-is-not-lua'); * $err = $redis->getLastError(); * // "ERR Error compiling script (new function): user_script:1: '=' expected near '-'" *
* $redis->set('x', 'a'); * $redis->incr('x'); * $err = $redis->getLastError(); * // "ERR value is not an integer or out of range" * $redis->clearLastError(); * $err = $redis->getLastError(); * // NULL *
* $redis->setOption(Redis::OPT_PREFIX, 'my-prefix:'); * $redis->_prefix('my-value'); // Will return 'my-prefix:my-value' *
* $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); * $redis->_unserialize('a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}'); // Will return Array(1,2,3) *
* $redis->set('foo', 'bar'); * $val = $redis->dump('foo'); // $val will be the Redis encoded key value *
* $redis->set('foo', 'bar'); * $val = $redis->dump('foo'); * $redis->restore('bar', 0, $val); // The key 'bar', will now be equal to the key 'foo' *
* $redis->migrate('backup', 6379, 'foo', 0, 3600); *
* var_dump( $redis->time() ); * // array(2) { * // [0] => string(10) "1342364352" * // [1] => string(6) "253002" * // } *
以上就是redis常见使用场景下PHP实现 的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号