Maison  >  Article  >  développement back-end  >  Quelques façons d'utiliser Redis en PHP

Quelques façons d'utiliser Redis en PHP

小云云
小云云original
2018-03-03 13:22:342216parcourir

Redis présente de grands avantages pour les développeurs de programmes. L'apprentissage de ces connaissances clés améliorera certainement nos capacités. Cet article partage principalement avec vous quelques méthodes d'utilisation de Redis en PHP, dans l'espoir d'aider tout le monde.

①. Type de données

  • Tout d'abord, nous devons le comprendre en fonction des 7 types de données fournis par Redis, qui sont String, Hash, List, Set , Ensemble trié, Pub/Sub, Transactions

② Connaissance associée d'un seul thread :

Quelques façons dutiliser Redis en PHP

③.

  • Nous pensons généralement que les bases de données NoSQL n'ont pas de transactions, j'ai peur que nous vous décevions. Redis prend en charge les transactions, mais ce ne sont pas des transactions au sens général du terme. Si vous exécutez la commande exec et que l'alimentation est coupée ou que le serveur raccroche en cours de route, nous constaterons toujours qu'une partie de Redis est insérée et une partie ne l'est pas.

  • Cependant, Redis fournit la commande WATCH Nous pouvons surveiller une certaine clé puis exécuter des transactions. Si la valeur de la Montre est modifiée, les Transactions la retrouveront et refuseront de l'exécuter.

Les commandes couramment utilisées incluent MULTI, EXEC et DISCARD.

MULTI:标记一个事务块的开始;
EXEC:执行所有事务块内的命令;
DISCARD:取消事务,放弃执行事务块内的所有命令;
UNWATCH:取消 WATCH 命令对所有 key 的监视;
WATCH key:监视 key,如果在事务执行之前 key 被其他命令所改动,那么事务将被打断
  • Redis en tant que base de données, de nombreux développeurs peuvent également l'utiliser seul. En fait, le plus souvent, Redis est utilisé comme middleware entre la base de données et le code. Si vous constatez qu'il y a un goulot d'étranglement dans votre base de données actuelle, vous pouvez l'optimiser via Redis

.

♬ Pour l'utilisation du code

  • vous pouvez vous référer à la vidéo - [php opération redis]

  • Code simple personnel :

 $redis = new \Redis(); $redis->pconnect('192.168.236.131', '6379'); #连接redis服务
 $redis->set('say','moTzxx say hello !');
 //echo $redis->get('say'); $redis->delete('myname'); $redis->set('myname','moTzxx'); echo $redis->get('myname').'<br>'; # 返回:moTzxx

 var_dump($redis->del('myname'));# 返回 TRUE(1)
 var_dump($redis->get('myname')); # 返回 bool(false)

 //$redis->set('tag',10); $redis->delete('tag'); $redis->incr('tag');
 //$redis->incrBy('tag',3);
 var_dump($redis->get('tag')); echo '<hr>'; $redis->delete('list1'); $redis->lPush('list1','hello'); $redis->rPush('list1','miss');
 var_dump($redis->rPop('list1')); #string(4) "miss"
 echo '<hr>'; $redis->delete('set1'); $redis->sAdd('set1','a'); $redis->sAdd('set1',2); $redis->sAdd('set1','ok'); $redis->sAdd('set1','ok');//TODO 集合的唯一性 $val = $redis->sCard('set1');
 var_dump($val); #int(3)
 $val2 = $redis->sMembers('set1');
 var_dump($val2);#array(3) { [0]=> string(2) "ok" [1]=> string(1) "2" [2]=> string(1) "a" }
 echo '<br>'; $redis->set('key1', 'value', 111);
 var_dump($redis->get('key1')); $redis->getSet('key1','value11');
 var_dump($redis->mget(['tag','key1']));
 var_dump($redis->type('tag')); echo '<hr>'; $redis->delete('driver1'); $redis->hSet("driver1",'name','moTzxx'); $redis->hSet("driver1",'age',12); $redis->hSet('driver1','gender',1); $val = $redis->hGet("driver1",'name');
 var_dump($val);#string(6) "moTzxx"
 $val = $redis->hMGet("driver1",['name','gender']);
 var_dump($val); #array(2) { ["name"]=> string(6) "moTzxx" ["gender"]=> string(1) "1" }
 echo '<hr>'; $redis->delete('pats'); $redis->zAdd('pats',1,'cat1');  # 构建一个zset (sorted set) // int(1)
 $redis->zAdd('pats',3,'dog3'); $redis->zAdd('pats',2,'monkey2'); $redis->zAdd('pats',2,'pig2'); $val = $redis->zRange('pats',0,-1); #从低到高
 var_dump($val); //array(4) { [0]=> string(4) "cat1" [1]=> string(7) "monkey2" [2]=> string(4) "pig2" [3]=> string(4) "dog3" } $val2 = $redis->zRevRange('pats',0,-1); #从高到低
 var_dump($val2);//array(4) { [0]=> string(4) "dog3" [1]=> string(4) "pig2" [2]=> string(7) "monkey2" [3]=> string(4) "cat1" }
 var_dump($redis->TYPE('pats')); //zset / int(4)
  • Capture d'écran de l'effet d'exécution :

♬ Étendu

① . Comparaison de quatre bases de données NoSQL :

② Scénarios d'utilisation de rpoplpush

Recommandations associées :

<.>

Que diriez-vous du partage PHP des instances Redis opérationnelles

Installation des instances d'extension Redis pour PHP sous Windows

Explication de PHP à l'aide de Redis instances

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn