PHP操作Redis KEY,String 的相关命令 (二)

来源:互联网 发布:linux 随机启动脚本 编辑:程序博客网 时间:2024/05/27 14:12

1.PHP操作Redis之KEY

1、DEL()

[html] view plain copy print?
  1. 移除给定的一个或多个key。如果key不存在,则忽略该命令。  
  2. 返回值:  
  3. 被移除key的数量。  
  4. $redis->set('myname','ikodota');  
  5. echo $redis->get('myname').'<br>'; # 返回:ikodota  
  6. $redis->del('myname');# 返回 TRUE(1)  
  7. var_dump($redis->get('myname')); # 返回 bool(false)  
  8. #删除多个key值  
  9. $array_mset=array('first_key'=>'first_val','second_key'=>'second_val','third_key'=>'third_val');  
  10. $redis->mset($array_mset); #用MSET一次储存多个值  
  11. $array_mget=array('first_key','second_key','third_key');  
  12. var_dump($redis->mget($array_mget)); #一次返回多个值 //array(3) { [0]=> string(9) "first_val" [1]=> string(10)"second_val" [2]=> string(9) "third_val" }  
  13. $redis->del($array_mget); #同时删除多个key  
  14. var_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }  
2、KEYS()
[html] view plain copy print?
  1. 查找符合给定模式的key。  
  2. KEYS *命中数据库中所有key。  
  3. KEYS h?llo命中hello, hallo and hxllo等。  
  4. KEYS h*llo命中hllo和heeeeello等。  
  5. KEYS h[ae]llo命中hello和hallo,但不命中hillo。  
  6. 特殊符号用"\"隔开  
  7. #$redis->FLUSHALL();  
  8. $array_mset_keys=array('one'=>'1',  
  9.           'two'=>'2',  
  10.           'three '=>'3',  
  11.           'four'=>'4');  
  12. $redis->mset($array_mset_keys); #用MSET一次储存多个值  
  13. var_dump($redis->keys('*o*')); //array(3) { [0]=> string(4) "four" [1]=> string(3) "two" [2]=> string(3) "one" }  
  14. var_dump($redis->keys('t??')); //array(1) { [0]=> string(3) "two" }  
  15. var_dump($redis->keys('t[w]*')); //array(1) { [0]=> string(3) "two" }  
  16. print_r($redis->keys('*')); //Array ( [0] => four [1] => three [2] => two [3] => one )  
3、RANDOMKEY()
[html] view plain copy print?
  1. 从当前数据库中随机返回(不删除)一个key。  
  2. 返回值:  
  3. 当数据库不为空时,返回一个key。  
  4. 当数据库为空时,返回nil。  
  5. //RANDOMKEY  
  6. $redis->FLUSHALL();  
  7. # 情况1:数据库不为空  
  8. $array_mset_randomkey=array('fruit'=>'apple',  
  9.                 'drink'=>'beer',  
  10.                 'food'=>'cookis');  
  11. $redis->mset($array_mset_randomkey);  
  12. echo $redis->randomkey();   
  13. print_r($redis->keys('*')); # 查看数据库内所有key,证明RANDOMKEY并不删除key//Array ( [0] => food [1] => drink [2] => fruit )  
  14. # 情况2:数据库为空  
  15. $redis->flushdb();  # 删除当前数据库所有key  
  16. var_dump($redis-> randomkey()); //bool(false)  
4、TTL()
[html] view plain copy print?
  1. 返回给定key的剩余生存时间(time to live)(以秒为单位)。  
  2. 返回值:  
  3. key的剩余生存时间(以秒为单位)。  
  4. 当key不存在或没有设置生存时间时,返回-1。  
  5. # 情况1:带TTL的key  
  6. $redis->flushdb();  
  7. //$redis->set('name','ikodota'); # 设置一个key  
  8. $redis->expire('name',30);  # 设置生存时间为30秒 //return (integer) 1  
  9. echo $redis->get('name'); //return ikodota  
  10. echo $redis->ttl('name'); //(integer) 25  
5、EXISTS()
[html] view plain copy print?
  1. 检查给定key是否存在。  
  2. 返回值:  
  3. 若key存在,返回1,否则返回0。  
  4. //EXISTS  
  5. echo '<br>EXISTS<br>';  
  6. $redis->set('db',"redis"); //bool(true)   
  7. var_dump($redis->exists('db'));  # key存在 //bool(true)   
  8. $redis->del('db');   # 删除key //int(1)  
  9. var_dump($redis->exists('db'))  # key不存在 //bool(false)  
6、MOVE()
[html] view plain copy print?
  1. 将当前数据库(默认为0)的key移动到给定的数据库db当中。  
  2. 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。  
  3. 因此,也可以利用这一特性,将MOVE当作锁(locking)原语。  
  4. 返回值:  
  5. 移动成功返回1,失败则返回0。  
  6. //MOVE  
  7. echo '<br><br>MOVE<br>';  
  8. #情况1:key存在于当前数据库  
  9. $redis->SELECT(0);  # redis默认使用数据库0,为了清晰起见,这里再显式指定一次。//OK  
  10. $redis->SET('song',"secret base - Zone"); //OK  
  11. var_dump ($redis->MOVE('song',1));  # 将song移动到数据库1 //bool(true)  
  12. #情况2:当key不存在的时候  
  13. $redis->SELECT(1);  
  14. var_dump ($redis->EXISTS('fake_key'));//bool(false);  
  15. var_dump($redis->MOVE('fake_key', 0));  # 试图从数据库1移动一个不存在的key到数据库0,失败) //bool(false)  
  16. $redis->SELECT(0);  # 使用数据库0  
  17. var_dump($redis->EXISTS('fake_key'));  # 证实fake_key不存在 //bool(false)  
  18. #情况3:当源数据库和目标数据库有相同的key时  
  19. $redis->SELECT(0);  # 使用数据库0  
  20. $redis->SET('favorite_fruit',"banana");  
  21. $redis->SELECT(1);  # 使用数据库1  
  22. $redis->SET('favorite_fruit',"apple");  
  23. $redis->SELECT(0);  # 使用数据库0,并试图将favorite_fruit移动到数据库1  
  24. var_dump($redis->MOVE('favorite_fruit',1));  # 因为两个数据库有相同的key,MOVE失败 //return bool(false)  
  25. echo $redis->GET('favorite_fruit');  # 数据库0的favorite_fruit没变 //return banana  
  26. $redis->SELECT(1);  
  27. echo $redis->GET('favorite_fruit');   # 数据库1的favorite_fruit也是 //return apple  
7、RENAME()
[html] view plain copy print?
  1. 将key改名为newkey。  
  2. 当key和newkey相同或者key不存在时,返回一个错误。  
  3. echo '<br><br>RENAME<br>';  
  4. # 情况1:key存在且newkey不存在  
  5. $redis->SET('message',"hello world");  
  6. var_dump($redis->RENAME('message','greeting'));  //bool(true)  
  7. var_dump($redis->EXISTS('message'));  #message不复存在 //bool(false)  
  8. var_dump($redis->EXISTS('greeting'));   #greeting取而代之 //bool(true)  
  9. # 情况2:当key不存在时,返回错误 ,php返回false;  
  10. var_dump($redis->RENAME('fake_key','never_exists'));  //bool(false)  
  11. # 情况3:newkey已存在时,RENAME会覆盖旧newkey  
  12. $redis->SET('pc',"lenovo");  
  13. $redis->SET('personal_computer',"dell");   
  14. var_dump($redis->RENAME('pc','personal_computer')); //bool(true)  
  15. var_dump($redis->GET('pc')); //(nil)   bool(false)  
  16. var_dump($redis->GET('personal_computer'));  # dell"没有"了 //string(6) "lenovo"  
8、EXPIRE()
[html] view plain copy print?
  1. 为给定key设置生存时间。  
  2. 当key过期时,它会被自动删除。  
  3. 在Redis中,带有生存时间的key被称作"易失的"(volatile)。  
  4. //EXPIRE  
  5. $redis->select(7);  
  6. //$redis->flushdb();  
  7. echo '<br><br>EXPIRE<br>';  
  8. $redis->SET('cache_page',"www.cnblogs.com/ikodota");  
  9. $redis->EXPIRE('cache_page', 30);  # 设置30秒后过期  
  10. sleep(6);  
  11. echo $redis->TTL('cache_page').'<br>';   # 查看给定key的剩余生存时间 //(integer) 24  
  12. $redis->EXPIRE('cache_page', 3000);  # 更新生存时间,3000秒  
  13. sleep(4);  
  14. echo $redis->TTL('cache_page').'<br>';   //(integer) 2996  
9、EXPIREAT()
[html] view plain copy print?
  1. EXPIREAT的作用和EXPIRE一样,都用于为key设置生存时间。  
  2. 不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unix timestamp)。  
  3. //EXPIREAT  
  4. echo '<br><br>EXPIREAT<br>';  
  5. $redis->SET('cache','www.google.com');  
  6. echo $redis->EXPIREAT('cache','1355292000'); # 这个key将在2012.12.12过期  
  7. echo ($redis->TTL('cache')); //return 124345085  
10、PERSIST()
[html] view plain copy print?
  1. 移除给定key的生存时间。  
  2. 当生存时间移除成功时,返回1.  
  3. 如果key不存在或key没有设置生存时间,返回0。  
  4. echo '<br><br>PERSIST<br>';  
  5. $redis->SET('time_to_say_goodbye',"886...");  
  6. $redis->EXPIRE('time_to_say_goodbye', 300);  
  7. sleep(3);  
  8. echo $redis->TTL('time_to_say_goodbye'); # (int) 297  
  9. echo '<br>';  
  10. $redis->PERSIST('time_to_say_goodbye');  # 移除生存时间  
  11. echo $redis->TTL('time_to_say_goodbye');  # 移除成功  //int(-1)  
11、SORT()
[html] view plain copy print?
  1. 排序,分页等  
  2. 参数  
  3. array(  
  4. 'by' => 'some_pattern_*',  
  5. 'limit' => array(0, 1),  
  6. 'get' => 'some_other_pattern_*' or an array of patterns,  
  7. 'sort' => 'asc' or 'desc',  
  8. 'alpha' => TRUE,  
  9. 'store' => 'external-key'  
  10. )  
  11. 返回或保存给定列表、集合、有序集合key中经过排序的元素。  
  12. 排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。  
  13. 一般SORT用法  
  14. 最简单的SORT使用方法是SORT key。  
  15. # 将数据一一加入到列表中  
  16. $redis->LPUSH('today_cost', 30);  
  17. $redis->LPUSH('today_cost', 1.5);  
  18. $redis->LPUSH('today_cost', 10);  
  19. $redis->LPUSH('today_cost', 8);  
  20. # 排序  
  21. var_dump($redis->SORT('today_cost')); //array(4) { [0]=> string(3) "1.5" [1]=> string(1) "8" [2]=> string(2) "10" [3]=> string(2) "30" }  
  22. 当数据集中保存的是字符串值时,你可以用ALPHA修饰符(modifier)进行排序。  
  23. # 将数据一一加入到列表中  
  24. $redis->LPUSH('website', "www.reddit.com");  
  25. $redis->LPUSH('website', "www.slashdot.com");  
  26. $redis->LPUSH('website', "www.infoq.com");  
  27. # 默认排序  
  28. var_dump($redis->SORT('website'));//array(3) { [0]=> string(13) "www.infoq.com" [1]=> string(16) "www.slashdot.com" [2]=> string(14) "www.reddit.com" }  
  29. # 按字符排序 ALPHA=true  
  30. var_dump($redis->SORT('website', array('ALPHA'=>TRUE))); //array(3) { [0]=> string(13) "www.infoq.com" [1]=> string(14) "www.reddit.com" [2]=> string(16) "www.slashdot.com" }  
  31. 排序之后返回的元素数量可以通过LIMIT修饰符进行限制。  
  32. LIMIT修饰符接受两个参数:offset和count。  
  33. offset指定要跳过的元素数量,count指定跳过offset个指定的元素之后,要返回多少个对象。  
  34. 以下例子返回排序结果的前5个对象(offset为0表示没有元素被跳过)。  
  35. # 将数据一一加入到列表中  
  36. $redis->LPUSH('rank', 30); //(integer) 1  
  37. $redis->LPUSH('rank', 56); //(integer) 2  
  38. $redis->LPUSH('rank', 42); //(integer) 3  
  39. $redis->LPUSH('rank', 22); //(integer) 4  
  40. $redis->LPUSH('rank', 0);  //(integer) 5  
  41. $redis->LPUSH('rank', 11); //(integer) 6  
  42. $redis->LPUSH('rank', 32); //(integer) 7  
  43. $redis->LPUSH('rank', 67); //(integer) 8  
  44. $redis->LPUSH('rank', 50); //(integer) 9  
  45. $redis->LPUSH('rank', 44); //(integer) 10  
  46. $redis->LPUSH('rank', 55); //(integer) 11  
  47. # 排序  
  48. $redis_sort_option=array('LIMIT'=>array(0,5));  
  49. var_dump($redis->SORT('rank',$redis_sort_option));   # 返回排名前五的元素 // array(5) { [0]=> string(1) "0" [1]=> string(2) "11" [2]=> string(2) "22" [3]=> string(2) "30" [4]=> string(2) "32" }  
  50. 修饰符可以组合使用。以下例子返回降序(从大到小)的前5个对象。  
  51. $redis_sort_option=array(  
  52.             'LIMIT'=>array(0,5),  
  53.             'SORT'=>'DESC'  
  54.             );  
  55. var_dump($redis->SORT('rank',$redis_sort_option)); //array(5) { [0]=> string(2) "67" [1]=> string(2) "56" [2]=> string(2) "55" [3]=> string(2) "50" [4]=> string(2) "44" }  
[html] view plain copy print?
  1. </pre><p></p><p><h3 style="margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: 'microsoft yahei'; line-height: 35px;">2.PHP操作Redis之String</h3></p><p><strong>1.SET()</strong><pre name="code" class="html">将字符串值value关联到key。  
  2. 如果key已经持有其他值,SET就覆写旧值,无视类型。返回值:总是返回OK(TRUE),因为SET不可能失败。  
  3. # 情况1:对字符串类型的key进行SET  
  4. $redis->SET('apple', 'www.apple.com');#OK  //bool(true)  
  5. $redis->GET('apple');//"www.apple.com"  
  6. # 情况2:对非字符串类型的key进行SET  
  7. $redis->LPUSH('greet_list', "hello");#建立一个列表 #(integer) 1 //int(1)  
  8. $redis->TYPE('greet_list');#list //int(3)  
  9. $redis->SET('greet_list', "yooooooooooooooooo");# 覆盖列表类型 #OK //bool(true)  
  10. $redis->TYPE('greet_list');#string //int(1)  
2.SETNX() key不存在 设置value
[html] view plain copy print?
  1. 将key的值设为value,当且仅当key不存在。若给定的key已经存在,则SETNX不做任何动作。  
  2. 返回值:设置成功,返回1。设置失败,返回0。  
  3. echo '<br><br>SETNX<br>';  
  4. $redis->EXISTS('job');  # job不存在 //bool(false);  
  5. $redis->SETNX('job', "programmer");  # job设置成功 //bool(true)  
  6. $redis->SETNX('job', "code-farmer");  # job设置失败 //bool(false)  
  7. echo $redis->GET('job');  # 没有被覆盖 //"programmer"  
3.SETEX() 设置key-vaule 缓存时间
[html] view plain copy print?
  1. 将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。如果key 已经存在,SETEX命令将覆写旧值。  
  2. # 情况1:key不存在  
  3. $redis->SETEX('cache_user_id', 60,10086);//bool(true)  
  4. echo $redis->GET('cache_user_id');  # 值 //"10086"  
  5. sleep(4);  
  6. echo $redis->TTL('cache_user_id');  # 剩余生存时间 //int(56)  
  7. # 情况2:key已经存在,key被覆写  
  8. $redis->SET('cd', "timeless"); //bool(true);  
  9. $redis->SETEX('cd', 3000,"goodbye my love"); //bool(true);  
  10. echo $redis->GET('cd');//"goodbye my love"  
4.MSET () 设置一个或多个key-value对
[html] view plain copy print?
  1. 同时设置一个或多个key-value对。  
  2. 当发现同名的key存在时,MSET会用新值覆盖旧值,如果你不希望覆盖同名key,请使用MSETNX命令。  
  3. echo '<br><br>MSET<br>';  
  4. $redis->select(0);  
  5. $redis->flushdb();  
  6. $array_mset=array('date'=>'2012.3.5',  
  7.         'time'=>'9.09a.m.',  
  8.         'weather'=>'sunny'  
  9.         );  
  10. $redis->MSET($array_mset); //bool(true)  
  11. var_dump($redis->KEYS('*'));   # 确保指定的三个key-value对被插入 //array(3) { [0]=> string(4) "time" [1]=> string(7) "weather" [2]=> string(4) "date" }  
  12. # MSET覆盖旧值的例子 但是经过测试覆盖不了  
  13. var_dump($redis->SET('google', "google.cn"));   //bool(true)  
  14. var_dump($redis->MSET('google',"google.hk")); //bool(false)  
  15. echo $redis->GET('google'); //google.cn  与redis手册的示例结果不符  
5.MSETNX() key不存在时 设置多个 key-value
[html] view plain copy print?
  1. 同时设置一个或多个key-value对,当且仅当key不存在。  
  2. # 情况1:对不存在的key进行MSETNX  
  3. $array_mset=array('rmdbs'=>'MySQL',  
  4.         'nosql'=>'MongoDB',  
  5.         'key-value-store'=>'redis'  
  6. );  
  7. $redis->MSETNX($array_mset);//bool(true)  
  8. # 情况2:对已存在的key进行MSETNX  
  9. $array_mset=array('rmdbs'=>'Sqlite',  
  10.         'language'=>'python'  
  11. );  
  12. var_dump($redis->MSETNX($array_mset));  # rmdbs键已经存在,操作失败 //bool(false)  
  13. var_dump($redis->EXISTS('language'));  # 因为操作是原子性的,language没有被设置  bool(false)  
  14. echo $redis->GET('rmdbs');  # rmdbs没有被修改 //"MySQL"  
  15. $array_mset_keys=array( 'rmdbs', 'nosql', 'key-value-store');  
  16. print_r($redis->MGET($array_mset_keys)); //Array ( [0] => MySQL [1] => MongoDB [2] => redis )  
6.APPEND() 将value追加 key原来值之后
[html] view plain copy print?
  1. 如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。  
  2. 如果key不存在,APPEND就简单地将给定key设为value,就像执行SET key value一样。  
  3. # 情况1:对不存在的key执行APPEND  
  4. $redis->EXISTS('myphone');  # 确保myphone不存在 //bool(false)  
  5. $redis->APPEND('myphone',"nokia");  # 对不存在的key进行APPEND,等同于SET myphone "nokia" //int(5) # 字符长度  
  6. # 情况2:对字符串进行APPEND  
  7. $redis->APPEND('myphone', " - 1110");# 长度从5个字符增加到12个字符 //int(12)  
  8. echo $redis->GET('myphone');  # 查看整个字符串 //"nokia - 1110"  
7.GET() 获取key值
[html] view plain copy print?
  1. 返回key所关联的字符串值。如果key不存在则返回特殊值nil。  
  2. 假如key储存的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值。  
  3. var_dump($redis->GET('fake_key')); #(nil) //return bool(false)  
  4. $redis->SET('animate', "anohana"); //return bool(true)  
  5. var_dump($redis->GET('animate')); //return string(7) "anohana"  
8.MGET() 获取多个key的值
[html] view plain copy print?
  1. 返回所有(一个或多个)给定key的值。  
  2. 如果某个指定key不存在,那么返回特殊值nil。因此,该命令永不失败。  
  3. //MGET  
  4. echo '<br><br>MGET<br>';  
  5. $redis_mget_data_array=array('name'=>'ikodota','blog'=>'cnblogs.com/ikodota');  
  6. $redis->MSET($redis_mget_data_array);#用MSET一次储存多个值   
  7. $redis_mget_key_array=array('name','blog');  
  8. var_dump($redis->MGET($redis_mget_key_array)); //array(2) { [0]=> string(7) "ikodota" [1]=> string(19) "cnblogs.com/ikodota" }  
  9. $redis->EXISTS('fake_key'); //bool(false)  
  10. $redis_mget_key_array=array('name','fake_key');  
  11. var_dump($redis->MGET($redis_mget_key_array));  # 当MGET中有不存在key的情况   //array(2) { [0]=> string(7) "ikodota" [1]=> bool(false) }  
9.GETRANGE() 字符串截取
[html] view plain copy print?
  1. 返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定(包括start和end在内)。  
  2. 负数偏移量表示从字符串最后开始计数,-1表示最后一个字符,-2表示倒数第二个,以此类推。  
  3. echo '<br><br>GETRANGE<br>';  
  4. $redis->SET('greeting', "hello, my friend");  
  5. echo $redis->GETRANGE('greeting', 0, 4).'<br>';  # 返回索引0-4的字符,包括4。 //"hello"  
  6. echo $redis->GETRANGE('greeting', -1 ,-5).'<br>';  # 不支持回绕操作  //""  
  7. echo $redis->GETRANGE('greeting', -3 ,-1).'<br>';  # 负数索引 //"end"  
  8. echo $redis->GETRANGE('greeting', 0, -1).'<br>';  # 从第一个到最后一个 //"hello, my friend"  
  9. echo $redis->GETRANGE('greeting', 0, 1008611).'<br>';  # 值域范围不超过实际字符串,超过部分自动被符略 //"hello, my friend"  
10.GETSET()
[html] view plain copy print?
  1. 将给定key的值设为value,并返回key的旧值。当key存在但不是字符串类型时,返回一个错误。  
  2. echo '<br><br>GETSET<br>';  
  3. var_dump($redis->EXISTS('mail'));//return bool(false);  
  4. var_dump($redis->GETSET('mail','xxx@google.com'));  # 因为mail之前不存在,没有旧值,返回nil ,#(nil)   //bool(false)  
  5. var_dump($redis->GETSET('mail','xxx@yahoo.com'));  # mail被更新,旧值被返回 //string(14) "xxx@google.com"  
11.STRLEN() 字符串值的长度
[html] view plain copy print?
  1. 返回key所储存的字符串值的长度。当key储存的不是字符串值时,返回一个错误。  
  2. 当 key不存在时,返回0。  
  3. $redis->SET('mykey', "Hello world");  
  4. echo $redis->STRLEN('mykey'); //int(11)  
  5. echo $redis->STRLEN('nonexisting'); # 不存在的key长度视为0  //int(0)  
12.INCR()/DECR() 数字值 增/减 一
[html] view plain copy print?
  1. 将key中储存的数字值增一。  
  2. 如果key不存在,以0为key的初始值,然后执行INCR操作。  
  3. 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。  
  4. 本操作的值限制在64位(bit)有符号数字表示之内。  
  5. 返回值:  
  6. 执行INCR命令之后key的值。  
  7. 注解:这是一个针对字符串的操作,因为Redis没有专用的整数类型,所以key内储存的字符串被解释为十进制64位有符号整数来执行INCR操作。  
  8. $redis->SET('page_view', 20);  
  9. var_dump($redis->INCR('page_view')); //int(21)   
  10. var_dump($redis->GET('page_view'));    # 数字值在Redis中以字符串的形式保存 //string(2) "21  
13.INCRBY() /DECRBY() 增加/减 数值
[html] view plain copy print?
  1. 将key所储存的值加上增量increment。  
  2. 如果key不存在,以0为key的初始值,然后执行INCRBY命令。  
  3. 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。  
  4. 本操作的值限制在64位(bit)有符号数字表示之内。  
  5. 返回值:  
  6. 加上increment之后,key的值。  
  7. echo '<br><br>INCRBY<br>';  
  8. # 情况1:key存在且是数字值  
  9. $redis->SET('rank', 50);  # 设置rank为50  
  10. $redis->INCRBY('rank', 20);  # 给rank加上20  
  11. var_dump($redis->GET('rank')); #"70"   //string(2) "70"  
  12. # 情况2:key不存在  
  13. $redis->EXISTS('counter'); //bool(false)  
  14. $redis->INCRBY('counter'); #int 30  //bool(false)  
  15. var_dump($redis->GET('counter')); #30 //经测试 与手册上结果不一样,不能直接从bool型转为int型。 return bool(false)   
  16. # 情况3:key不是数字值  
  17. $redis->SET('book', "long long ago...");  
  18. var_dump($redis->INCRBY('book', 200)); #(error) ERR value is not an integer or out of range   // bool(false) 
原创粉丝点击