<?php // ===========================redis 的安装========================================= apt-get update apt-get install php5-redis redis-server php5enmod redis // 开启php的redis模块。 service apache2 restart 重启apache // redis-server 进入命令行 // ===============================redis 的使用===================================== // 改编自:http://www.cnblogs.com/jackluo/p/3412670.html header("content-type:text/html;charset=utf-8"); $redis = new Redis(); $redis -> connect('127.0.0.1',6379); $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // 设置redis模式 /* $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 使用igbinary序列化 */ $getOption = $redis->getOption(Redis::OPT_SERIALIZER); // 活取选项 $redis->set('name','redis设置值'); echo $redis->get('name'); $redis->del('name'); # 返回 TRUE(1) var_dump($redis->get('name')); # 返回 bool(false) // 判断key是否存在。 if(!$redis->exists("fake_key")){ echo "fake_key 不存在"; } $array_mset = array('first_key'=>'first_val','second_key'=>'second_val','third_key'=>'third_val'); $redis->mset($array_mset); // mset 一次存储多个值。 $array_mget = array('first_key','second_key','third_key'); var_dump($redis->mget($array_mget)); // mget 一次活取多个值。 $redis->del($array_mget); // 同时删除多个key。 var_dump($redis->mget($array_mget)); // 返回多个false // 查找复合模式的keys * ? [] 分别代表 所有 ,一个 ,其中一个字符。 $array_mset_keys = array('one'=>'1','two'=>'2','three'=>'3','four'=>'4'); $redis->mset($array_mset_keys); var_dump($redis->keys('*o*')); var_dump($redis->keys('t??')); var_dump($redis->keys('t[w]*')); print_r($redis->keys("*")); // RANDOMKEY 从当前数据库中随机返回(不删除)一个key。 $redis->flushall(); // 清空所有数据库 $array_mset_randomkey = array('fruit'=>'apple','frink'=>'beer','food'=>'cookis'); $redis->mset($array_mset_randomkey); var_dump( $redis->randomkey() ); // 返回一个随机的key ,但不删除。 print_r($redis->keys('*')); $redis->flushdb(); // 清空当前的数据库 var_dump($redis->randomkey()); // 返回false。 // 带TTL的key $redis->flushdb(); // $redis->set('name','我是名字'); $redis->expire('name',10); // 设置一个key的过期的秒数 echo $redis->get('name'); // 获取建。 echo $redis->ttl('name'); // 获取key的有效时间(单位:秒) // 不带 ttl的key。 $redis->set('title','不带ttl的key'); var_dump($redis->ttl('site')); // 不存在的key $redis->exists('not_exists_key'); var_dump($redis->ttl('not_exists_key')); // exists 价差给定的key是否存在。 $redis->set('db','redis'); var_dump($redis->exists('db')); $redis->del('db'); var_dump($redis->exists('db')); // move /* 将当前数据库(默认为0)的key移动到给定的数据库db当中。 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。 */ // move 1:key存在于当前的数据库。 $redis->select(0); $redis->set('song','secrect base - zone'); var_dump($redis->move('song',1)); // move 2 :当key不存在的时候 $redis->select(1); var_dump($redis->exists('fake_key')); var_dump($redis->move('fake_key',0)); // move 3:当数据库和目标数据库有相同的key时。 $redis->select(0); $redis->set('favorite_fruit','bannan'); $redis->select(1); $redis->set('favorite_fruit','apple'); $redis->select(0); var_dump($redis->move('favorite_fruit',1)); echo $redis->get('favorite_fruit'); $redis->select(1); echo $redis->get('favorite_fruit'); // rename 将key改名为newkey。 // rename 1 :key存在newkey不存在。 $redis->set('message','hello word'); var_dump($redis->rename('message','greeting')); var_dump($redis->exists('message')); var_dump($redis->exists('greeting')); // rename 2 :key不存在 var_dump($redis->rename('fake_key','newer_exists')); // rename 3:newkey存在,会覆盖原来的。 $redis->set('newkey1','newkey1'); $redis->set('newkey2','newkey2'); var_dump($redis->rename('newkey1','newkey2')); var_dump($redis->get('newkey1')); var_dump($redis->get('newkey2')); // renamenx 当且仅当newkey不存在时,将key改为newkey。出错的情况和RENAME一样(key不存在时报错)。 // renamenx 1 :newkey不存在。 $redis->set('player','Mplyear'); var_dump($redis->renamenx('player','vest_player')); // renamenx 2 :newkey存在,失败。 $redis->set('animal','bear'); $redis->set('favorite_animal','butterfly'); var_dump($redis->renamenx('animal','favorite_animal')); // TYPE 返回key所储存的值的类型。 $redis->flushAll(); var_dump($redis->type('fake_key')); // int 0 $redis->set('weater','sumy'); // 一个字符串 var_dump($redis->type('weater')); // int 1 $redis->sadd('pat','dog'); // 一个集合。 var_dump($redis->type('pat')); // int 2 $redis->lpush('book_list','programming in scala '); // 一个列表 var_dump($redis->type('book_list')); // init 3 $redis->zadd('pats',1,'cat'); // 一个zset int 1 $redis->zadd('pats',2,'dog'); $redis->zadd('pats',3,'ping'); print_r($redis->zrange('pats',0,-1)); // Array ( [0] => cat [1] => dog [2] => ping ) var_dump($redis->type('pats')); // int 4 // EXPIRE 为给定key设置生存时间。当key过期时,它会被自动删除。在Redis中,带有生存时间的key被称作“易失的”(volatile)。 // $redis->set('cache','我是存储'); // $redis->expire('cache',30); echo $redis->ttl('cache'); // 输出剩余的时间。 // EXPIREAT 设置生存时间。 // $redis->set('cache','缓存'); // echo $redis->expireat('cache',time()+100); // 返回 true echo $redis->ttl('cache'); // 剩余时间 // OBJECT OBJECT命令允许从内部察看给定key的Redis对象。 $redis->select(0); $redis->set('game','wow'); echo $redis->object('REFCOUNT','game'); // echo $redis->get('game'); // echo $redis->object('IDLETIME','game'); var_dump($redis->object('ENCODING','game')); // string 'raw' (length=3) $redis->SET('phone',15820123123); # 大的数字也被编码为字符串 var_dump($redis->OBJECT('ENCODING','phone')); //string(3) "raw" $redis->SET('age',20); # 短数字被编码为int var_dump($redis->OBJECT('ENCODING','age')); //string(3) "int" // persist 移出生存时间。 $redis->set('cache','缓存'); $redis->expire('cache',200); echo $redis->ttl('cache'); echo '<br>'; $redis->persist('cache'); echo $redis->ttl('cache'); // sort 排序分页。将数据插入到列表中 $redis->lpush('today_cost',30); $redis->lpush('today_cost',1.8); $redis->lpush('today_cost',10); $redis->lpush('today_cost',8); print_r($redis->sort('today_cost')); // 默认排序 echo '<br>'; print_r($redis->sort('today_cost',array('ALPHA'=>true))); // 按字符顺序排序。 $redis->del('today_cost'); $redis->close(); // 关闭连接。