Ketahui lebih lanjut tentang Codis di Redis
Artikel ini akan membawa anda memahami Codis dalam Redis dan memperkenalkan prinsip Codis. Saya harap ia akan membantu anda!
Senario
Dalam senario konkurensi tinggi data besar, menggunakan satu contoh redis tunggal, tidak kira betapa tinggi prestasi redis, akan menjadi sangat sukar ,
Pertama sekali, semakin besar jumlah data, semakin banyak memori yang digunakan, yang seterusnya menyebabkan fail rdb menjadi terlalu besar Keadaan ini akan menjadikan masa penyegerakan penuh tuan-hamba terlalu lama. Pada masa yang sama, apabila contoh dimulakan semula, rdb yang terlalu besar akan dimuatkan Ia juga akan menjadikan masa permulaan lebih lama. [Cadangan berkaitan: Tutorial video Redis]
Kedua, dari segi penggunaan CPU, satu contoh Redis hanya boleh menggunakan satu teras CPU Terlalu banyak data pada satu teras juga akan muncul adalah di luar kemampuan kami,
Oleh itu, kami memerlukan penyelesaian kluster untuk menyebarkan sejumlah besar data daripada satu kejadian kepada berbilang kejadian Daripada populariti Redis kepada sokongan rasmi penyelesaian Klusternya sendiri, pihak ketiga juga membangunkan sokongan mereka sendiri. Codis ialah salah satu komponen kluster
Codis dibangunkan menggunakan bahasa Go dan bertindak sebagai ejen antara Redis dan klien, jadi pelanggan boleh menyambung terus ke Codis dan menghantar arahan kepadanya , Codis bertanggungjawab untuk memajukan arahan kepada Redis, dan akhirnya menerima hasil pemulangan dan mengembalikannya kepada pelanggan. contoh proksi Codis membentuk kluster Redis, yang boleh digunakan apabila ruang kluster tidak mencukupi Pada masa ini, anda boleh mengembangkan kapasiti secara dinamik dan terus menambah kejadian Redis Pada masa yang sama, sdk yang digunakan oleh pelanggan tidak perlu ditukar. Anda hanya perlu menukar sambungan asal daripada redis kepada codis
Codis sendiri juga boleh digunakan untuk memastikan ketersediaannya yang tinggi, ia hanya bertanggungjawab untuk memajukan kandungan Menambah berbilang Codis tidak mempunyai kesan sampingan dan boleh memastikan peningkatan QPS Apabila salah satu Codis gagal, anda juga boleh menggunakan satu lagi.
Prinsip
Codis memajukan Kunci tertentu kepada tika Redis tertentu Setiap tika dalam kelompok menyimpan sebahagian daripada Kunci, mengurangkan tekanan pada yang lain contoh. Pada masa yang sama, data semua kejadian ditambah untuk membentuk sekeping maklumat yang lengkap.
Apabila menerima kunci yang dihantar oleh pelanggan, Codis melakukan operasi crc32 pada kunci untuk mendapatkan nilai cincang,
kemudian cincangnya Nilai integer ialah modulo 1024 (bilangan slot) untuk mendapatkan baki, yang merupakan slot di mana kunci akan disimpan Dengan slot, anda boleh mencari contoh redis mana kunci harus dihantar.
Kod pseudo:
Penyegerakan slot kluster
hash = crc32(command.key) # 计算hash值 slot = hash % 1024 # 取模得到槽位 redisInstance = slots[slot].redis # 得到redis实例 redis.do(command) # 执行命令复制代码
Peluasan kapasiti
Apabila kluster sedia ada tidak memenuhi keperluan perniagaan, anda perlu menambah yang baharu Apabila kejadian ditambahkan pada kluster, perhubungan pemetaan slot perlu diagihkan semula dan sebahagian daripada slot perlu diperuntukkan kepada nod baharu.
Semasa proses penghijrahan, Codis terus menyediakan perkhidmatan luaran Pada masa ini, permintaan datang ke slot yang sedang dipindahkan Memandangkan slot kini sepadan dengan nod lama dan baharu, Codis tidak dapat menentukan sama ada kunci itu wujud pada masa ini. permintaan akan dimajukan kepada tika Redis baharu. Pseudokod:
SLOTSCAN Seperti arahan Scan Redis sendiri, penduaan data yang diimbas tidak boleh dielakkan, tetapi ini tidak akan menjejaskan ketepatan pemindahan kerana satu kekunci dipindahkan Selepas itu , ia segera dipadamkan daripada contoh lama dan tidak boleh diimbas keluar lagi.
Slot pengimbangan automatik
Setiap kali kejadian baharu ditambahkan, ia akan menjadi terlalu menyusahkan untuk mengekalkan perhubungan pemetaan slot secara manual ia tidak seimbang, ia akan Melakukan pengimbangan automatik dan operasi pemindahan data.
Kelemahan
Codis membawa faedah pengembangan kepada Redis, tetapi ia juga menyebabkan beberapa kesan sampingan.
Tidak menyokong urus niaga
Transaksi mungkin beroperasi pada berbilang kunci, tetapi urus niaga hanya boleh diselesaikan dalam satu kejadian, tetapi kerana kunci bertaburan dalam berbeza instance , jadi Codis tidak boleh menyokong operasi transaksi.
tidak menyokong penamaan semula
menamakan semula satu kunci kepada kunci lain, tetapi kedua-dua kunci itu mungkin tidak mencincang ke dalam slot yang sama, tetapi dalam slot kejadian yang berbeza, jadi nama semula tidak disokong.
Senarai arahan tidak disokong secara rasmi disediakan: https://github.com/CodisLabs/codis/blob/master/doc/unsupported_cmds.md
Peluasan tersekat
Semasa proses pengembangan Codis, penghijrahan data adalah untuk memindahkan keseluruhan kunci secara langsung, seperti struktur cincangan Codis akan secara langsung menarik semua kandungan dan menggunakan hmset untuk memasukkannya ke dalam nod baharu.
Jika kandungan cincang terlalu besar, ia akan menyebabkan ketinggalan Pengesyoran rasmi ialah jumlah saiz struktur koleksi tunggal tidak boleh melebihi 1MB Dalam perniagaan, data besar boleh dibahagikan kepada berbilang yang kecil penyimpanan baldi, dsb. , buat kompromi.
Overhed rangkaian
Memandangkan Codis bertindak sebagai proksi rangkaian antara klien dan instance Redis, terdapat lapisan tambahan dan overhed rangkaian secara semula jadi lebih tinggi, yang lebih tinggi daripada menyambung terus ke Redis Prestasi adalah lebih rendah sedikit.
overhed pengendalian dan penyelenggaraan perisian tengah
Konfigurasi kluster Codis memerlukan penggunaan Zk atau Etcd, yang bermaksud memperkenalkan kluster Codis memerlukan pengenalan perisian tengah lain dan meningkatkan operasi dan penyelenggaraan kos mesin.
Kelebihan
Codis menyerahkan isu konsistensi yang diedarkan kepada pihak ketiga (ZK atau Etcd), menghapuskan aspek ini Kerja-kerja penyelenggaraan untuk mengurangkan kerumitan kod pelaksanaan.
Untuk mencapai desentralisasi, Kluster Redis rasmi memperkenalkan protokol Raft dan Gossip, serta sejumlah besar parameter konfigurasi yang perlu ditala, dan kerumitan meningkat dengan mendadak.
Pemerolehan kelompok
Untuk operasi kelompok, seperti menggunakan mget untuk mendapatkan nilai berbilang kunci, kunci ini mungkin bertaburan merentasi berbilang kejadian, Codis mengumpulkan kunci mengikut keadaan di mana ia berada, kemudian memanggil mgt pada setiap kejadian satu demi satu, dan akhirnya mengembalikan ringkasan kepada klien.
Fungsi lain
Codis menyediakan antara muka Papan Pemuka dan Codis-fe menguruskan kluster juga menambah kumpulan, nod, melakukan pengimbangan automatik dan operasi lain, dan melihat status slot dan contoh redis yang sepadan dengan slot Fungsi ini menjadikan operasi dan penyelenggaraan lebih mudah dan lebih mudah.
Menuju sejarah
Codis nampaknya menebus hakikat bahawa Redis secara rasmi tidak menyediakan konsep kluster Kini Redis secara rasmi menyediakan fungsi Kluster, dan sokongan rasmi secara semula jadi lebih berfaedah daripada sokongan pihak ketiga ,
Pada masa yang sama, perisian pihak ketiga juga perlu memberi perhatian kepada ciri baharu yang dikeluarkan oleh pegawai dalam masa nyata, dan Kluster pastinya serasi dengan ciri baharu dalam masa nyata, jadi ia lebih disyorkan untuk menggunakan Kluster rasmi Sebagai titik pengetahuan pada masa lalu, Codis mempunyai beberapa idea dan Kluster Terdapat pertindihan.
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Pengenalan kepada Pengaturcaraan! !
Atas ialah kandungan terperinci Ketahui lebih lanjut tentang Codis di Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Mulakan menu [Start], masukkan [cmd], klik kanan [Command Prompt], dan pilih Run as [Administrator]. 2. Masukkan arahan berikut mengikut turutan (salin dan tampal dengan teliti): SCconfigwuauservstart=auto, tekan Enter SCconfigbitsstart=auto, tekan Enter SCconfigcryptsvcstart=auto, tekan Enter SCconfigtrustedinstallerstart=auto, tekan Enter SCconfigwuauservtype=share, tekan Enter netstopwuauserv , tekan enter netstopcryptS

Strategi caching dalam GolangAPI boleh meningkatkan prestasi dan mengurangkan beban pelayan Strategi yang biasa digunakan ialah: LRU, LFU, FIFO dan TTL. Teknik pengoptimuman termasuk memilih storan cache yang sesuai, caching hierarki, pengurusan ketidaksahihan dan pemantauan dan penalaan. Dalam kes praktikal, cache LRU digunakan untuk mengoptimumkan API untuk mendapatkan maklumat pengguna daripada pangkalan data Data boleh diambil dengan cepat daripada cache Jika tidak, cache boleh dikemas kini selepas mendapatkannya daripada pangkalan data.

Dalam pembangunan PHP, mekanisme caching meningkatkan prestasi dengan menyimpan sementara data yang kerap diakses dalam memori atau cakera, dengan itu mengurangkan bilangan akses pangkalan data. Jenis cache terutamanya termasuk memori, fail dan cache pangkalan data. Caching boleh dilaksanakan dalam PHP menggunakan fungsi terbina dalam atau perpustakaan pihak ketiga, seperti cache_get() dan Memcache. Aplikasi praktikal biasa termasuk caching hasil pertanyaan pangkalan data untuk mengoptimumkan prestasi pertanyaan dan caching halaman output untuk mempercepatkan pemaparan. Mekanisme caching berkesan meningkatkan kelajuan tindak balas laman web, meningkatkan pengalaman pengguna dan mengurangkan beban pelayan.

Mula-mula anda perlu menetapkan bahasa sistem kepada paparan Bahasa Cina Mudah dan mulakan semula. Sudah tentu, jika anda telah menukar bahasa paparan kepada Bahasa Cina Ringkas sebelum ini, anda boleh melangkau langkah ini sahaja. Seterusnya, mula mengendalikan pendaftaran, regedit.exe, navigasi terus ke HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage dalam bar navigasi kiri atau bar alamat atas, dan kemudian ubah suai nilai kunci InstallLanguage dan nilai kunci Lalai kepada 0804 (jika anda ingin menukarnya ke Bahasa Inggeris en- kami, anda perlu Mula-mula tetapkan bahasa paparan sistem kepada en-us, mulakan semula sistem dan kemudian tukar semuanya kepada 0409) Anda mesti memulakan semula sistem pada ketika ini.

Menggunakan cache Redis boleh mengoptimumkan prestasi halaman tatasusunan PHP. Ini boleh dicapai melalui langkah berikut: Pasang klien Redis. Sambung ke pelayan Redis. Cipta data cache dan simpan setiap halaman data ke dalam cincangan Redis dengan kunci "halaman:{page_number}". Dapatkan data daripada cache dan elakkan operasi mahal pada tatasusunan besar.

1. Mula-mula, klik dua kali ikon [PC ini] pada desktop untuk membukanya. 2. Kemudian klik dua kali butang tetikus kiri untuk memasuki [pemacu C]. 3. Kemudian cari folder [windows] dalam pemacu C dan klik dua kali untuk masuk. 4. Selepas memasukkan folder [windows], cari folder [SoftwareDistribution]. 5. Selepas masuk, cari folder [muat turun], yang mengandungi semua fail muat turun dan kemas kini win11. 6. Jika kita ingin memadam fail-fail ini, hanya padamkannya terus dalam folder ini.

Redis ialah cache nilai kunci berprestasi tinggi. Sambungan PHPRedis menyediakan API untuk berinteraksi dengan pelayan Redis. Gunakan langkah berikut untuk menyambung ke Redis, menyimpan dan mendapatkan semula data: Sambung: Gunakan kelas Redis untuk menyambung ke pelayan. Penyimpanan: Gunakan kaedah yang ditetapkan untuk menetapkan pasangan nilai kunci. Retrieval: Gunakan kaedah get untuk mendapatkan nilai kunci.

Kaedah untuk mengoptimumkan prestasi fungsi untuk versi PHP yang berbeza termasuk: menggunakan alat analisis untuk mengenal pasti kesesakan fungsi yang membolehkan caching opcode atau menggunakan sistem caching luaran untuk meningkatkan prestasi dan memilih algoritma penggabungan rentetan dan pengisihan mengikut versi PHP;
