Maison cadre php Swoole Comment utiliser le framework Hyperf pour la gestion des verrous distribués

Comment utiliser le framework Hyperf pour la gestion des verrous distribués

Oct 28, 2023 am 09:37 AM
分布式锁 管理 cadre hyperf

Comment utiliser le framework Hyperf pour la gestion des verrous distribués

Comment utiliser le framework Hyperf pour la gestion distribuée des verrous

Introduction :
Dans un système distribué, en raison de plusieurs nœuds exécutant simultanément des tâches en même temps, plusieurs nœuds accéderont aux ressources partagées en même temps, ce qui entraînera à l'incohérence des données, à la lecture sale et à d'autres problèmes. Afin de résoudre ce problème, il est souvent nécessaire d’utiliser un mécanisme de verrouillage distribué pour garantir l’exclusivité des ressources. Le framework Hyperf offre un moyen pratique de gérer les verrous distribués.

1. Introduction au framework Hyperf
Hyperf est un framework flexible et performant basé sur des coroutines PHP, adapté à la création rapide d'applications basées sur les données. Il présente les caractéristiques d'un seuil bas, d'une injection de dépendances flexible, d'un conteneur IoC puissant, de hautes performances et de composants standard riches.

2. Principe du verrouillage distribué
Les verrous distribués ont généralement deux méthodes de mise en œuvre : basée sur une base de données et basée sur le cache. La mise en œuvre du verrouillage distribué basé sur une base de données est relativement simple, mais ses performances sont inférieures. Les verrous distribués basés sur le cache sont généralement implémentés à l'aide de services de cache hautes performances tels que Redis ou Memcached, qui offrent des performances et une fiabilité élevées.

3. Le framework Hyperf intègre Redis

  1. Installer l'extension Redis

Pour utiliser l'extension Redis dans l'environnement PHP, vous devez d'abord installer l'extension associée à Redid.

pecl install redis
Copier après la connexion
  1. Ajouter la configuration Redis

Ajouter les paramètres de connexion Redis dans le fichier de configuration du projet Hyperf config/autoload/redis.php : config/autoload/redis.php中添加Redis的连接参数:

<?php

declare(strict_types=1);

return [
    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'auth' => env('REDIS_AUTH', null),
        'port' => (int) env('REDIS_PORT', 6379),
        'db' => (int) env('REDIS_DB', 0),
        'pool' => [
            'max_connections' => (int) env('REDIS_MAX_CONNECTIONS', 10),
            'min_connections' => (int) env('REDIS_MIN_CONNECTIONS', 1),
            'connect_timeout' => (float) env('REDIS_CONNECT_TIMEOUT', 1.0),
            'wait_timeout' => (float) env('REDIS_WAIT_TIMEOUT', 3.0),
            'heartbeat' => (int) env('REDIS_HEARTBEAT', -1),
            'max_idle_time' => (float) env('REDIS_MAX_IDLE_TIME', 60),
        ],
    ],
];
Copier après la connexion
  1. 配置Redis连接信息

在根目录下的.env文件中添加以下Redis连接信息,注意根据实际情况修改参数:

REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
Copier après la connexion

四、使用Hyperf框架进行分布式锁

  1. 创建锁服务类

在Hyperf的app/Utils目录下创建LockService.php

<?php

declare(strict_types=1);

namespace AppUtils;

use HyperfRedisRedisFactory;
use HyperfUtilsApplicationContext;
use RedisException;

class LockService
{
    /**
     * 获取锁
     * @param string $key 锁的key
     * @param int $expire 过期时间,单位为秒
     * @return bool
     */
    public function lock(string $key, int $expire): bool
    {
        $redis = $this->getRedis();
        try {
            return $redis->set($key, 1, ['nx', 'ex' => $expire]) ? true : false;
        } catch (RedisException $exception) {
            return false;
        }
    }

    /**
     * 解锁
     * @param string $key 锁的key
     * @return bool
     */
    public function unlock(string $key): bool
    {
        $redis = $this->getRedis();
        try {
            return $redis->del([$key]) > 0;
        } catch (RedisException $exception) {
            return false;
        }
    }

    /**
     * 获取Redis实例
     * @return mixed
     */
    private function getRedis()
    {
        $container = ApplicationContext::getContainer();
        return $container->get(RedisFactory::class)->get('default');
    }
}
Copier après la connexion

    Configurer Redis Informations de connexion
    1. Ajoutez les informations de connexion Redis suivantes au fichier .env dans le répertoire racine. Faites attention à modifier les paramètres en fonction de la situation réelle :
    <?php
    
    declare(strict_types=1);
    
    namespace AppController;
    
    use AppUtilsLockService;
    use HyperfHttpServerAnnotationAutoController;
    
    /**
     * @AutoController()
     */
    class DemoController
    {
        public function index(LockService $lockService)
        {
            // 获取锁
            $lockKey = 'demo_lock';
            $expire = 10; // 过期时间10秒
            if ($lockService->lock($lockKey, $expire)) {
                // 获得锁,执行业务逻辑
                // TODO: 处理业务逻辑
    
                // 释放锁
                $lockService->unlock($lockKey);
            } else {
                // 未获得锁,返回重试或失败的响应
            }
        }
    }
    Copier après la connexion

    4. Utilisez le framework Hyperf pour. créer des verrous distribués


    Classe de service de verrouillage

    🎜🎜Créez le fichier LockService.php dans le répertoire app/Utils d'Hyperf pour encapsuler les méthodes liées aux verrous distribués : 🎜rrreee 🎜🎜Utiliser la classe de service de verrouillage 🎜🎜🎜 Lorsque des verrous distribués doivent être utilisés, poussez la classe de service de verrouillage via l'injection de dépendances et utilisez-la. L'exemple suivant montre comment utiliser les verrous distribués pour obtenir un traitement de requête idempotent : 🎜rrreee🎜 5. Résumé. 🎜En intégrant Redis et en encapsulant les classes de services de verrouillage distribué du framework Hyperf, nous pouvons utiliser des verrous distribués simples, fiables et performants pour gérer les ressources partagées dans les systèmes distribués et garantir la cohérence et la fiabilité des données. Dans le même temps, cela améliore également les capacités de traitement simultané du système et l’efficacité du traitement des demandes. Les verrous distribués sont très importants dans les applications pratiques. J'espère que l'introduction de cet article pourra aider les lecteurs à mieux comprendre et utiliser les verrous distribués. 🎜

    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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Redis pour implémenter la gestion distribuée des transactions Comment utiliser Redis pour implémenter la gestion distribuée des transactions Nov 07, 2023 pm 12:07 PM

Comment utiliser Redis pour mettre en œuvre la gestion distribuée des transactions Introduction : Avec le développement rapide d'Internet, l'utilisation de systèmes distribués devient de plus en plus répandue. Dans les systèmes distribués, la gestion des transactions constitue un défi important. Les méthodes traditionnelles de gestion des transactions sont difficiles à mettre en œuvre dans les systèmes distribués et sont inefficaces. Grâce aux caractéristiques de Redis, nous pouvons facilement mettre en œuvre une gestion distribuée des transactions et améliorer les performances et la fiabilité du système. 1. Introduction à Redis Redis est un système de stockage de données basé sur la mémoire avec des performances de lecture et d'écriture efficaces et des données riches

Comment utiliser le framework Hyperf pour l'analyse de code Comment utiliser le framework Hyperf pour l'analyse de code Oct 25, 2023 am 11:12 AM

Comment utiliser le framework Hyperf pour l'analyse de code nécessite des exemples de code spécifiques Introduction : Dans le processus de développement logiciel, la qualité et les performances du code doivent être correctement analysées et évaluées. En tant que framework de développement PHP hautes performances, le framework Hyperf fournit une multitude d'outils et de fonctions pour aider les développeurs à effectuer l'analyse du code. Cet article présentera comment utiliser le framework Hyperf pour l'analyse de code et l'illustrera avec des exemples de code spécifiques. 1. Sélection des outils d'analyse de code Le framework Hyperf fournit quelques outils pratiques.

Comment utiliser le framework Hyperf pour le stockage de fichiers Comment utiliser le framework Hyperf pour le stockage de fichiers Oct 25, 2023 pm 12:34 PM

Comment utiliser le framework Hyperf pour le stockage de fichiers nécessite des exemples de code spécifiques. Hyperf est un framework PHP hautes performances développé sur la base de l'extension Swoole. Il possède des fonctions puissantes telles que les coroutines, l'injection de dépendances, l'AOP, le middleware et la gestion d'événements. adapté à la création d’applications Web et de microservices hautes performances, flexibles et évolutifs. Dans les projets réels, nous avons souvent besoin de stocker et de gérer des fichiers. Le framework Hyperf fournit des composants et des outils pratiques pour nous aider à simplifier les opérations de stockage de fichiers. Cet article explique comment utiliser

Comment implémenter la fonction de gestion des performances des étudiants en Java ? Comment implémenter la fonction de gestion des performances des étudiants en Java ? Nov 04, 2023 pm 12:00 PM

Comment implémenter la fonction de gestion des performances des étudiants en Java ? Dans le système éducatif moderne, la gestion des performances des élèves est une tâche très importante. En gérant les performances des élèves, les écoles peuvent mieux suivre les progrès des élèves, comprendre leurs faiblesses et leurs points forts et élaborer des plans d'enseignement plus ciblés sur la base de ces informations. Dans cet article, nous verrons comment utiliser le langage de programmation Java pour implémenter des fonctions de gestion des performances des étudiants. Tout d’abord, nous devons déterminer la structure des données des notes des étudiants. Généralement, les notes des étudiants peuvent être représentées comme un

Comment utiliser le framework Hyperf pour la gestion des journaux Comment utiliser le framework Hyperf pour la gestion des journaux Oct 25, 2023 am 09:15 AM

Comment utiliser le framework Hyperf pour la gestion des logs Introduction : Hyerpf est un framework de coroutine hautes performances et très flexible basé sur le langage PHP, avec des composants et des fonctions riches. La gestion des journaux est une partie essentielle de tout projet. Cet article explique comment utiliser le framework Hyperf pour la gestion des journaux et fournit des exemples de code spécifiques. 1. Installez le framework Hyperf Tout d'abord, nous devons installer le framework Hyperf. Il peut être installé via Composer, ouvrez l'outil de ligne de commande et entrez la commande suivante

Que faire si la gestion du menu contextuel ne peut pas être ouverte sous Windows 10 Que faire si la gestion du menu contextuel ne peut pas être ouverte sous Windows 10 Jan 04, 2024 pm 07:07 PM

Lorsque nous utilisons le système win10, lorsque nous utilisons la souris pour cliquer avec le bouton droit sur le bureau ou sur le menu contextuel, nous constatons que le menu ne peut pas être ouvert et que nous ne pouvons pas utiliser l'ordinateur normalement. À ce stade, nous devons restaurer. le système pour résoudre le problème. La gestion du menu contextuel Win10 ne peut pas être ouverte : 1. Ouvrez d'abord notre panneau de configuration, puis cliquez. 2. Cliquez ensuite sous Sécurité et maintenance. 3. Cliquez à droite pour restaurer le système. 4. Si elle ne peut toujours pas être utilisée, vérifiez s'il y a un problème avec la souris elle-même. 5. Si vous êtes sûr qu'il n'y a pas de problème avec la souris, appuyez sur + et entrez. 6. Une fois l'exécution terminée, redémarrez l'ordinateur.

Comment utiliser le framework Hyperf pour l'interception des requêtes Comment utiliser le framework Hyperf pour l'interception des requêtes Oct 24, 2023 am 11:09 AM

Comment utiliser le framework Hyperf pour l'interception des requêtes Lors du développement d'applications Web, nous devons souvent intercepter et vérifier les requêtes des utilisateurs. Le framework Hyperf est un framework PHP hautes performances basé sur Swoole, qui fournit des fonctions pratiques d'interception des requêtes, nous permettant de traiter et de vérifier facilement les requêtes. Cet article explique comment utiliser le framework Hyperf pour l'interception des requêtes et fournit des exemples de code spécifiques. Le framework Hyperf fournit un mécanisme pour le middleware HTTP, que nous pouvons personnaliser en écrivant

Comment utiliser le framework Hyperf pour l'authentification JWT Comment utiliser le framework Hyperf pour l'authentification JWT Oct 24, 2023 pm 12:36 PM

Comment utiliser le framework Hyperf pour l'authentification JWT Introduction : Hyperf est un framework de coroutine hautes performances basé sur Swoole, qui offre des fonctions riches et une évolutivité flexible. JWT (JSONWebToken) est un standard ouvert pour l'authentification et la transmission d'informations. Dans cet article, nous présenterons comment utiliser l'authentification JWT dans le framework Hyperf et fournirons des exemples de code spécifiques. 1. Installer les packages de dépendances Tout d'abord, nous devons installer hyperf/jwt et lcobucci/jw

See all articles