zoukankan      html  css  js  c++  java
  • PHP-Redis扩展使用手册(二)

      1 /* 根据多个key获取多个value,不存在的key返回false    getMultiple是别名?
      2      * @param array 包含key的数组
      3      * @return array 返回key对应value的数组
      4      */
      5     $redis->set('key1', 'value1');
      6     $redis->set('key2', 'value2');
      7     $redis->set('key3', 'value3');
      8     $redis->mGet(array('key1', 'key2', 'key3')); // array('value1', 'value2', 'value3')
      9     $redis->mGet(array('key0', 'key1', 'key5')); // array(`FALSE`, 'value2', `FALSE`);
     10     
     11     /* 设置key的value,并返回旧的value
     12      * @param key 
     13      * @return string value 旧的value
     14      */
     15     $redis->set('x', '42');
     16     $exValue = $redis->getSet('x', 'lol');  // return '42', replaces x by 'lol'
     17     $newValue = $redis->get('x');              // return 'lol'
     18     
     19     /* 返回一个随机的key
     20      * @return string key
     21      */
     22     $key = $redis->randomKey();
     23     $surprise = $redis->get($key);  // who knows what's in there.
     24     
     25     /* 将一个key移到不同的数据库中
     26      * @param key 要移动的key
     27      * @param int 数据库索引
     28      * @return bool 成功返回true,失败返回false
     29      */
     30     $redis->select(0);      // switch to DB 0
     31     $redis->set('x', '42'); // write 42 to x
     32     $redis->move('x', 1);   // move to DB 1
     33     $redis->select(1);      // switch to DB 1
     34     $redis->get('x');       // will return 42
     35     
     36     /* 重新命名一个key    别名:renameKey
     37      * @param string srckey 旧key名称
     38      * @param string dstkey 新key名称
     39      * @return bool 成功返回true,失败返回false
     40      */
     41     $redis->set('x', '42');
     42     $redis->rename('x', 'y');
     43     $redis->get('y');   // → 42
     44     $redis->get('x');   // → `FALSE`
     45     
     46     /* 重新命名一个key,如果新key已存在,则不替换
     47      * @param string srckey 旧key名称
     48      * @param string dstkey 新key名称
     49      * @return bool 成功返回true,失败返回false
     50      */
     51     $redis->set('x', '42');
     52     $redis->set('y', '43');
     53     $redis->renameNx('x', 'y');    //替换失败,y已存在,返回false
     54     
     55     /* 设置生存时间,别名:setTimeout, pexpire
     56      * @param key 
     57      * @param int ttl 单位是秒
     58      * @return bool 成功返回true,失败返回false
     59      */
     60     $redis->set('x', '42');
     61     $redis->setTimeout('x', 3);     // x will disappear in 3 seconds.
     62     sleep(5);                       // wait 5 seconds
     63     $redis->get('x');               // will return `FALSE`, as 'x' has expired.
     64     
     65     /* 设置生存时间,别名:pexpireAt
     66      * @param string key
     67      * @param int timestamp 时间戳,超过该时间key戳无效
     68      * @return bool 成功返回true,失败返回false
     69      */
     70     $redis->set('x', '42');
     71     $now = time(NULL); // current timestamp
     72     $redis->expireAt('x', $now + 3);    // x will disappear in 3 seconds.
     73     sleep(5);               // wait 5 seconds
     74     $redis->get('x');       // will return `FALSE`, as 'x' has expired.
     75     
     76     /* 返回和模式匹配成功的所有key 别名:getKeys
     77      * @param string 模式 
     78      * @return array/string 单个值或数组
     79      */
     80     $allKeys = $redis->keys('*');   // all keys will match this.
     81     $keyWithUserPrefix = $redis->keys('user*');
     82     
     83     /* 充key空间中搜索key
     84      * 不是很懂$it的作用 
     85      */
     86     $it = NULL; /* Initialize our iterator to NULL */
     87     $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); /* retry when we get no keys back */
     88     while($arr_keys = $redis->scan($it)) {
     89         foreach($arr_keys as $str_key) {
     90             echo "Here is a key: $str_key
    ";
     91         }
     92         echo "No more keys to scan!
    ";
     93     }
     94     
     95     /* 根据参数,查看相应key的信息
     96      * @param string “encoding”返回给定 key 锁储存的值所使用的内部表示(representation);“refcount”返回给定 key 引用所储存的值的次数(此命令主要用于除错);“idletime”返回给定 key 自储存以来的空闲时间(idle, 没有被读取也没有被写入),以秒为单位
     97      * @return “encoding”返回string,“refcount、idletime”返回long
     98      */
     99     $redis->object("encoding", "l"); // → ziplist
    100     $redis->object("refcount", "l"); // → 1
    101     $redis->object("idletime", "l"); // → 400 (in seconds, with a precision of 10 seconds)
    102     
    103     /* 返回key指向的value的类型
    104      * @param key key
    105      * @return string: Redis::REDIS_STRING(1)、set: Redis::REDIS_SET(2)、list: Redis::REDIS_LIST(3)、zset: Redis::REDIS_ZSET(4)、hash: Redis::REDIS_HASH(5)、other: Redis::REDIS_NOT_FOUND(0)
    106      */
    107      
    108     $redis->sadd('key_1','value_1');
    109     $redis->sadd('key_1','value_2');
    110     echo $redis->type('key_1');        // echo 2
    111     
    112     /* 追加字符串到指定key的value中去
    113      * @param key 
    114      * @param value 
    115      * @return int 追加之后的value长度
    116      */
    117     $redis->set('key', 'value1');
    118     $redis->append('key', 'value2'); /* 12 */
    119     $redis->get('key'); /* 'value1value2' */
    120     
    121     /* 获取key指向value的子字符串
    122      * @param key 
    123      * @param int start 开始下标
    124      * @param int end 结束下标
    125      * @return string 子字符串
    126      */
    127     $redis->set('key', 'string value');
    128     $redis->getRange('key', 0, 5); /* 'string' */
    129     $redis->getRange('key', -5, -1); /* 'value' */
    130     
    131     /* 改变key指向value的子字符串
    132      * @param key 
    133      * @param offset 偏移量
    134      * @param value 值 
    135      * @return int 返回修改后字符串的长度
    136      */
    137     $redis->set('key', 'Hello world');
    138     $redis->setRange('key', 6, "redis"); /* returns 11 */
    139     $redis->get('key'); /* "Hello redis" */
    140     
    141     /* 返回value的长度
    142      * @param key
    143      * @return int 返回字符串长度
    144      */
    145     $redis->set('key', 'value');
    146     $redis->strlen('key'); /* 5 */
    147     
    148     /* 从key指向的value中获取指定位置的bit值
    149      * @param key 
    150      * @param offset 偏移量
    151      * @return long 0/1 
    152      */
    153     $redis->set('key', "x7f"); // this is 0111 1111
    154     $redis->getBit('key', 0); /* 0 */
    155     $redis->getBit('key', 1); /* 1 */
    156     
    157     /* 改变字符串指向value的指定位置的bit
    158      * @param key 
    159      * @param offset 偏移量
    160      * @param int value 0/1 
    161      * @return long 0/1 返回改变之前该位置的bit
    162      */
    163     $redis->set('key', "*");    // ord("*") = 42 = 0x2f = "0010 1010"
    164     $redis->setBit('key', 5, 1); /* returns 0 */
    165     $redis->setBit('key', 7, 1); /* returns 0 */
    166     $redis->get('key'); /* chr(0x2f) = "/" = b("0010 1111") */
    167     
    168     /* 根据对应的操作对多个位进行运算
    169      * @param operation “AND”、“OR”、“NOT”、“XOR”
    170      * @param ret_key 返回结果
    171      * @param key1 
    172      * @param key2 
    173      * @param ...
    174      * @return long 返回结果key的长度
    175      */
    176     $key1 = '0';
    177     $redis->setbit($key1,1,1);
    178     $redis->expire($key1,1000);
    179     
    180     $key2 = '1';
    181     $redis->setbit($key2,2,1);
    182     $redis->expire($key2,1000);
    183     
    184     $redis->bitop('OR','t_key',$key1,$key2);
    185     $redis->get('t_key');    //echo $key1 OR $key2
    186 
    187     
    188     /* 统计字符串bit的数量
    189      * @param key 
    190      * @return long value 返回
    191      */
    192     $redis->set('key2','2');
    193     $redis->bitcount('key2');    //echo 3 '2'的ascii为51,二进制位110100,3个11
    194     $redis->set('key1','3');
    195     $redis->bitcount('key1');    //echo 4 '3'的ascii为51,二进制位110011,4个11
    196     
    197     /* 根据给的参数,进行排序
    198      * @param array 
    199      *    'by' => 'some_pattern_*',                通过该字段排序,user_level_* 是一个占位符, 它先取出 uid 中的值, 然后再用这个值来查找相应的键
    200      *    'limit' => array(offset, count),        分页
    201      *    'get' => 'some_other_pattern_*' or an array of patterns,     连接更多的key-valuve
    202      *    'sort' => 'asc' or 'desc',                降序或者升序
    203      *    'alpha' => TRUE,                        sort默认排序对象为数字,当需要对字符串进行排序时将改参数设置为true    
    204      *    'store' => 'external-key'                将排序结果保存到该key上        
    205      * @return value 返回一个数组
    206      */
    207     $redis->LPUSH('user_id', 1);//(integer) 1
    208     $redis->SET('user_name_1', 'admin');
    209     $redis->SET('user_level_1',9999);
    210 
    211     $redis->LPUSH('user_id', 2);//(integer) 2
    212     $redis->SET('user_name_2', 'huangz');
    213     $redis->SET('user_level_2', 10);
    214 
    215     $redis->LPUSH('user_id', 59230);//(integer) 3
    216     $redis->SET('user_name_59230','jack');
    217     $redis->SET('user_level_59230', 3);
    218 
    219     $redis->LPUSH('user_id', 222);  //(integer) 4
    220     $redis->SET('user_name_222', 'hacker');
    221     $redis->SET('user_level_222', 9999);
    222     
    223     $redis->SET('user_password_222', "hey,im in");
    224     $redis->SET('user_password_1', "a_long_long_password");
    225     $redis->SET('user_password_2', "nobodyknows");
    226     $redis->SET('user_password_59230', "jack201022");
    227     
    228     print_r($redis->sort('user_id'));    //Array ( [0] => 1 [1] => 2 [2] => 222 [3] => 59230 ) 
    229     
    230     $redis->sort('user_id',array('store'=>'store_key'));    
    231     print_r($redis->LRANGE('store_key',0,4));    //Array ( [0] => 1 [1] => 2 [2] => 222 [3] => 59230 ) 
    232     
    233     print_r($redis->SORT('user_id',array('BY'=>'user_level_*', 'SORT'=>'DESC' ))); //Array ( [0] => 222 [1] => 1 [2] => 2 [3] => 59230 ) 
    234     
    235     print_r($redis->sort('user_id',array('limit'=>array(1,2))));    //Array ( [0] => 2 [1] => 222 ) 
    236     
    237     print_r($redis->SORT('user_id',array( 'BY'=>'user_id*', 'SORT'=>'asc', 'GET'=>array('user_name_*','user_password_*') )));//Array ( [0] => admin [1] => a_long_long_password [2] => huangz [3] => nobodyknows [4] => hacker [5] => hey,im in [6] => jack [7] => jack201022 )
    238 
    239     /* 返回给的的key的生存时间
    240      * @param key 
    241      * @return long 返回时间,单位为秒
    242      */
    243     $redis->set('key_1','value_1');
    244     $redis->expire('key_1',100);
    245     $redis->ttl('key_1');    //100
    246     
    247     /* 返回给的的key的生存时间
    248      * @param key 
    249      * @return long 返回时间,单位为毫秒
    250      */
    251     $redis->set('key_1','value_1');
    252     $redis->pexpire('key_1',100);
    253     $redis->pttl('key_1');    //100
    254     
    255     /* 移除有效时间ttl
    256      * @param key 
    257      * @return bool 成功返回true,失败返回false
    258      */
    259     $redis->set('key_1','value_1');
    260     $redis->pexpire('key_1',100);
    261     $redis->pttl('key_1');    //100
    262     $redis->persist('key_1');
    263     $redis->pttl('key_1');    //-1
    264     
    265     /* 插入多个键值对key-value 
    266      * @param array key-value 
    267      * @return bool 成功返回true,失败返回false
    268      */
    269     $redis->mset(array('key0' => 'value0', 'key1' => 'value1'));
    270     $redis->get('key0');    //value0
    271     $redis->get('key1');    //value1
    272     
    273     /* 插入多个键值对key-value,如果key存在则不插入
    274      * @param array key-value 
    275      * @return bool 成功返回true,失败返回false
    276      */
    277     $redis->msetnx(array('key0' => 'value0', 'key2' => 'value2'));    //如果有key存在,则直接返回false不操作
    278     $redis->get('key0');    //value0
    279     $redis->get('key2');    //value2
  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/pandang/p/4904618.html
Copyright © 2011-2022 走看看