Rumah rangka kerja php Swoole Cara menggunakan rangka kerja Hyperf untuk pengurusan kunci teragih

Cara menggunakan rangka kerja Hyperf untuk pengurusan kunci teragih

Oct 28, 2023 am 09:37 AM
Kunci yang diedarkan mengurus rangka kerja hyperf

Cara menggunakan rangka kerja Hyperf untuk pengurusan kunci teragih

Cara menggunakan rangka kerja Hyperf untuk pengurusan kunci teragih

Pengenalan:
Dalam sistem teragih, disebabkan berbilang nod melaksanakan tugas secara serentak pada masa yang sama, berbilang nod akan mengakses sumber dikongsi pada masa yang sama, yang akan membawa kepada ketidakkonsistenan data, bacaan kotor dan isu-isu lain. Untuk menyelesaikan masalah ini, selalunya perlu menggunakan mekanisme kunci yang diedarkan untuk memastikan keeksklusifan sumber. Rangka kerja Hyperf menyediakan cara yang mudah untuk mengurus kunci yang diedarkan.

1. Pengenalan kepada rangka kerja Hyperf
Hyperf ialah rangka kerja fleksibel berprestasi tinggi berdasarkan coroutine PHP, sesuai untuk membina aplikasi dipacu data dengan cepat. Ia mempunyai ciri-ciri ambang rendah, suntikan pergantungan fleksibel, bekas IoC yang berkuasa, prestasi tinggi dan komponen standard yang kaya.

2. Prinsip kunci teragih
Kunci teragih biasanya mempunyai dua kaedah pelaksanaan: berasaskan pangkalan data dan berasaskan cache. Pelaksanaan kunci teragih berasaskan pangkalan data agak mudah, tetapi mempunyai prestasi yang lebih rendah. Kunci teragih berasaskan cache biasanya dilaksanakan menggunakan perkhidmatan cache berprestasi tinggi seperti Redis atau Memcached, yang mempunyai prestasi tinggi dan kebolehpercayaan.

3. Rangka kerja Hyperf menyepadukan Redis

  1. Pasang sambungan Redis

Untuk menggunakan sambungan Redis dalam persekitaran PHP, anda perlu memasang sambungan berkaitan Redid terlebih dahulu.

pecl install redis
Salin selepas log masuk
  1. Tambah konfigurasi Redis

Tambahkan parameter sambungan Redis dalam fail konfigurasi projek 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),
        ],
    ],
];
Salin selepas log masuk
  1. 配置Redis连接信息

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

REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
Salin selepas log masuk

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

  1. 创建锁服务类

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

    Konfigurasikan Redis Maklumat sambungan
    1. Tambah maklumat sambungan Redis berikut pada fail .env dalam direktori akar Beri perhatian untuk mengubah suai parameter mengikut situasi sebenar:
    <?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');
        }
    }
    Salin selepas log masuk

    4. Gunakan rangka kerja Hyperf untuk. cipta kunci teragih


    Kunci kelas perkhidmatan

    🎜🎜Buat fail LockService.php dalam direktori app/Utils Hyperf untuk merangkum kaedah berkaitan kunci yang diedarkan: 🎜
    <?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 {
                // 未获得锁,返回重试或失败的响应
            }
        }
    }
    Salin selepas log masuk
    🎜🎜Gunakan kunci Kelas perkhidmatan 🎜🎜🎜 Di mana kunci teragih perlu digunakan, tolak kelas perkhidmatan kunci melalui suntikan kebergantungan dan gunakannya Contoh berikut menunjukkan cara menggunakan kunci teragih untuk mencapai pemprosesan permintaan idempoten: 🎜rrreee🎜 5. Ringkasan. 🎜Dengan menyepadukan Redis dan merangkum kelas perkhidmatan kunci teragih rangka kerja Hyperf, kami boleh menggunakan kunci teragih yang mudah, boleh dipercayai dan berprestasi tinggi untuk mengurus sumber kongsi dalam sistem teragih dan memastikan ketekalan dan kebolehpercayaan data. Pada masa yang sama, ia juga meningkatkan keupayaan pemprosesan serentak sistem dan meminta kecekapan pemprosesan. Kunci yang diedarkan sangat penting dalam aplikasi praktikal Saya berharap pengenalan artikel ini dapat membantu pembaca lebih memahami dan menggunakan kunci yang diedarkan. 🎜

    Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pengurusan kunci teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Nov 07, 2023 pm 12:07 PM

Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Pengenalan: Dengan perkembangan pesat Internet, penggunaan sistem teragih menjadi semakin meluas. Dalam sistem teragih, pengurusan urus niaga merupakan cabaran penting. Kaedah pengurusan transaksi tradisional sukar dilaksanakan dalam sistem teragih dan tidak cekap. Menggunakan ciri-ciri Redis, kami boleh melaksanakan pengurusan transaksi teragih dengan mudah dan meningkatkan prestasi dan kebolehpercayaan sistem. 1. Pengenalan kepada Redis Redis ialah sistem storan data berasaskan memori dengan prestasi baca dan tulis yang cekap serta data kaya.

Cara menggunakan rangka kerja Hyperf untuk analisis kod Cara menggunakan rangka kerja Hyperf untuk analisis kod Oct 25, 2023 am 11:12 AM

Cara menggunakan rangka kerja Hyperf untuk analisis kod memerlukan contoh kod khusus Pengenalan: Dalam proses pembangunan perisian, kualiti dan prestasi kod perlu dianalisis dan dinilai dengan betul. Sebagai rangka kerja pembangunan PHP berprestasi tinggi, rangka kerja Hyperf menyediakan pelbagai alatan dan fungsi untuk membantu pembangun menjalankan analisis kod. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk analisis kod, dan menggambarkannya dengan contoh kod khusus. 1. Pemilihan alat analisis kod Rangka kerja Hyperf menyediakan beberapa alat praktikal.

Cara menggunakan rangka kerja Hyperf untuk penyimpanan fail Cara menggunakan rangka kerja Hyperf untuk penyimpanan fail Oct 25, 2023 pm 12:34 PM

Cara menggunakan rangka kerja Hyperf untuk penyimpanan fail memerlukan contoh kod khusus Hyperf ialah rangka kerja PHP berprestasi tinggi yang dibangunkan berdasarkan sambungan Swoole Ia mempunyai fungsi yang berkuasa seperti coroutine, suntikan ketergantungan, AOP, middleware, dan pengurusan acara sesuai untuk membina aplikasi web dan perkhidmatan mikro berprestasi tinggi, Fleksibel dan berskala. Dalam projek sebenar, kami selalunya perlu menyimpan dan mengurus fail Rangka kerja Hyperf menyediakan beberapa komponen dan alatan yang mudah untuk membantu kami memudahkan operasi penyimpanan fail. Artikel ini akan memperkenalkan cara menggunakan

Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Nov 04, 2023 pm 12:00 PM

Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Dalam sistem pendidikan moden, pengurusan prestasi pelajar merupakan satu tugas yang sangat penting. Dengan mengurus prestasi pelajar, sekolah boleh memantau kemajuan pelajar dengan lebih baik, memahami kelemahan dan kekuatan mereka, dan membuat rancangan pengajaran yang lebih disasarkan berdasarkan maklumat ini. Dalam artikel ini, kita akan membincangkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan fungsi pengurusan prestasi pelajar. Pertama, kita perlu menentukan struktur data gred pelajar. Biasanya, gred pelajar boleh diwakili sebagai a

Cara menggunakan rangka kerja Hyperf untuk pengurusan log Cara menggunakan rangka kerja Hyperf untuk pengurusan log Oct 25, 2023 am 09:15 AM

Cara menggunakan rangka kerja Hyperf untuk pengurusan log Pengenalan: Hyerpf ialah rangka kerja coroutine berprestasi tinggi dan sangat fleksibel berdasarkan bahasa PHP, dengan komponen dan fungsi yang kaya. Pengurusan log ialah bahagian penting dalam mana-mana projek Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk pengurusan log dan menyediakan contoh kod khusus. 1. Pasang rangka kerja Hyperf Mula-mula, kita perlu memasang rangka kerja Hyperf. Ia boleh dipasang melalui Komposer, buka alat baris arahan dan masukkan arahan berikut

Apa yang perlu dilakukan jika pengurusan menu klik kanan tidak boleh dibuka dalam Windows 10 Apa yang perlu dilakukan jika pengurusan menu klik kanan tidak boleh dibuka dalam Windows 10 Jan 04, 2024 pm 07:07 PM

Apabila kami menggunakan sistem win10, apabila kami menggunakan tetikus untuk mengklik kanan desktop atau menu klik kanan, kami mendapati bahawa menu tidak boleh dibuka, dan kami tidak boleh menggunakan komputer seperti biasa Pada masa ini, kami perlu memulihkan sistem untuk menyelesaikan masalah. Pengurusan menu klik kanan Win10 tidak boleh dibuka: 1. Mula-mula buka panel kawalan kami, dan kemudian klik. 2. Kemudian klik di bawah Keselamatan dan Penyelenggaraan. 3. Klik di sebelah kanan untuk memulihkan sistem. 4. Jika ia masih tidak boleh digunakan, periksa sama ada terdapat masalah dengan tetikus itu sendiri. 5. Jika anda pasti tiada masalah dengan tetikus, tekan + dan masukkan. 6. Selepas pelaksanaan selesai, mulakan semula komputer.

Cara menggunakan rangka kerja Hyperf untuk memintas permintaan Cara menggunakan rangka kerja Hyperf untuk memintas permintaan Oct 24, 2023 am 11:09 AM

Cara menggunakan rangka kerja Hyperf untuk memintas permintaan Semasa membangunkan aplikasi web, kita selalunya perlu memintas dan mengesahkan permintaan pengguna. Rangka kerja Hyperf ialah rangka kerja PHP berprestasi tinggi berdasarkan Swoole, yang menyediakan fungsi pemintasan permintaan yang mudah, membolehkan kami memproses dan mengesahkan permintaan dengan mudah. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk memintas permintaan dan memberikan contoh kod khusus. Rangka kerja Hyperf menyediakan mekanisme untuk perisian tengah HTTP, yang boleh kami sesuaikan dengan menulis

Cara menggunakan rangka kerja Hyperf untuk pengesahan JWT Cara menggunakan rangka kerja Hyperf untuk pengesahan JWT Oct 24, 2023 pm 12:36 PM

Cara menggunakan rangka kerja Hyperf untuk pengesahan JWT Pengenalan: Hyperf ialah rangka kerja coroutine berprestasi tinggi berdasarkan Swoole, yang menyediakan fungsi yang kaya dan kebolehskalaan yang fleksibel. JWT (JSONWebToken) ialah piawaian terbuka untuk mengesahkan dan menghantar maklumat. Dalam artikel ini, kami akan memperkenalkan cara menggunakan pengesahan JWT dalam rangka kerja Hyperf dan memberikan contoh kod khusus. 1. Pasang pakej pergantungan Pertama, kita perlu memasang hyperf/jwt dan lcobucci/jw

See all articles