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
  • 相关阅读:
    Visual Studio一直弹出“未将对象引用设置到对象的实例”对话框的处理
    C#如何将十六进制数字符串转byte[]?
    steam游戏存档迁移
    Java实现行列式计算
    Python中单引号、双引号、三引号的区别
    git基本使用方法
    windows(hexo)使用git时出现:warning: LF will be replaced by CRLF
    steam相关插件
    linux的后台运行相关命令
    Ubuntu下启动/重启/停止apache服务器
  • 原文地址:https://www.cnblogs.com/pandang/p/4904618.html
Copyright © 2011-2022 走看看