redis了解和使用
浏览量:443
php怎么安装radis,我这就不详细介绍了,毕竟现在网上一把一把的介绍如何安装,我这就简单的说一下如何使用,我主要参考的是《radis中文使用手册》
Key | String | Hash | List | Set |
---|---|---|---|---|
Sorted Set | Pub/Sub | Transaction | Connection | Server |
---|---|---|---|---|
phpredis是php一个扩展,下面来具体讲述一下使用
DEL(del)
$redis = new Redis(); //DEL # 情况1: 删除单个key $redis->set('myname','ikodota'); echo $redis->get('myname').'<br>'; # 返回:ikodota $redis->del('myname');# 返回 TRUE(1) var_dump($redis->get('myname')); # 返回 bool(false) # 情况2: 删除一个不存在的key if(!$redis->exists('fake_key')) # 不存在 var_dump($redis->del('fake_key')); # 返回 int(0) # 情况3: 同时删除多个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)); #一次返回多个值 //array(3) { [0]=> string(9) "first_val" [1]=> string(10) "second_val" [2]=> string(9) "third_val" } $redis->del($array_mget); #同时删除多个key var_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }
KEYS(keys)
KEYS pattern
查找符合给定模式的key。
KEYS *命中数据库中所有key。
KEYS h?llo命中hello, hallo and hxllo等。
KEYS h*llo命中hllo和heeeeello等。
KEYS h[ae]llo命中hello和hallo,但不命中hillo。
警告 :KEYS的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key,你最好还是用集合(Set)。
//KEYS $array_mset_keys=array('one'=>'1', 'two'=>'2', 'three '=>'3', 'four'=>'4'); $redis->mset($array_mset_keys); #用MSET一次储存多个值 var_dump($redis->keys('*o*')); //array(3) { [0]=> string(4) "four" [1]=> string(3) "two" [2]=> string(3) "one" } var_dump($redis->keys('t??')); //array(1) { [0]=> string(3) "two" } var_dump($redis->keys('t[w]*')); //array(1) { [0]=> string(3) "two" } print_r($redis->keys('*')); //Array ( [0] => four [1] => three [2] => two [3] => one )
RANDOMKEY(randomkey)
从当前数据库中随机返回(不删除)一个key。
//RANDOMKEY floshall $redis->FLUSHALL(); # 情况1:数据库不为空 $array_mset_randomkey=array('fruit'=>'apple', 'drink'=>'beer', 'food'=>'cookis'); $redis->mset($array_mset_randomkey); echo $redis->randomkey(); print_r($redis->keys('*')); # 查看数据库内所有key,证明RANDOMKEY并不删除key//Array ( [0] => food [1] => drink [2] => fruit ) # 情况2:数据库为空 $redis->flushdb(); # 删除当前数据库所有key var_dump($redis-> randomkey()); //bool(false)
TTL(ttl)
返回给定key的剩余生存时间(time to live)(以秒为单位)。
//TTL # 情况1:带TTL的key $redis->flushdb(); //$redis->set('name','ikodota'); # 设置一个key $redis->expire('name',30); # 设置生存时间为30秒 //return (integer) 1 echo $redis->get('name'); //return ikodota echo $redis->ttl('name'); //(integer) 25 //echo $redis->ttl('name'); # 30秒过去,name过期 //(integer) -1 var_dump($redis->get('name')); # 过期的key将被删除 //return bool(false); # 情况2:不带TTL的key $redis->set('site','wikipedia.org');//OK var_dump($redis->ttl('site'));//int(-1) # 情况3:不存在的key $redis->exists('not_exists_key');//int(0) var_dump($redis->TTL('not_exists_key'));//int(-1)
EXISTX(exists)
检查给定key是否存在。
//EXISTS echo '<br>EXISTS<br>'; $redis->set('db',"redis"); //bool(true) var_dump($redis->exists('db')); # key存在 //bool(true) $redis->del('db'); # 删除key //int(1) var_dump($redis->exists('db')) # key不存在 //bool(false)
MOVE(move)
将当前数据库(默认为0)的key移动到给定的数据库db当中。
如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。
因此,也可以利用这一特性,将MOVE当作锁(locking)原语。
//MOVE echo '<br><br>MOVE<br>'; # 情况1: key存在于当前数据库 $redis->SELECT(0); # redis默认使用数据库0,为了清晰起见,这里再显式指定一次。//OK $redis->SET('song',"secret base - Zone"); //OK var_dump ($redis->MOVE('song',1)); # 将song移动到数据库1 //bool(true) # 情况2:当key不存在的时候 $redis->SELECT(1); var_dump ($redis->EXISTS('fake_key'));//bool(false); var_dump($redis->MOVE('fake_key', 0)); # 试图从数据库1移动一个不存在的key到数据库0,失败) //bool(false) $redis->SELECT(0); # 使用数据库0 var_dump($redis->EXISTS('fake_key')); # 证实fake_key不存在 //bool(false) # 情况3:当源数据库和目标数据库有相同的key时 $redis->SELECT(0); # 使用数据库0 $redis->SET('favorite_fruit',"banana"); $redis->SELECT(1); # 使用数据库1 $redis->SET('favorite_fruit',"apple"); $redis->SELECT(0); # 使用数据库0,并试图将favorite_fruit移动到数据库1 var_dump($redis->MOVE('favorite_fruit',1)); # 因为两个数据库有相同的key,MOVE失败 //return bool(false) echo $redis->GET('favorite_fruit'); # 数据库0的favorite_fruit没变 //return banana $redis->SELECT(1); echo $redis->GET('favorite_fruit'); # 数据库1的favorite_fruit也是 //return apple
RPUSH(rpush)
将一个或多个值value插入到列表key的表尾。
LPOP(lpop)
移除并返回列表key的头元素。
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。