Rumah >pangkalan data >Redis >Penjelasan terperinci mengenai traversal kunci Redis dan pengurusan pangkalan data

Penjelasan terperinci mengenai traversal kunci Redis dan pengurusan pangkalan data

WBOY
WBOYke hadapan
2022-10-10 17:23:481612semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan kandungan yang berkaitan tentang kunci traversal dan pengurusan pangkalan data Mari kita lihat bersama-sama.

Penjelasan terperinci mengenai traversal kunci Redis dan pengurusan pangkalan data

Pembelajaran yang disyorkan: Tutorial video Redis

1 Kekunci traversal

1.1 Penuh Kekunci lintasan

Kadangkala kita perlu melintasi semua kekunci sepenuhnya, maka kita perlu menggunakan arahan corak kekunci, dan arahan ini menyokong padanan corak

127.0.0.1:6379> mset name luke neme josh
OK

Jika Jika Jika anda ingin melintasi semua kekunci, anda boleh menggunakan kekunci arahan *

127.0.0.1:6379> keys *
1) "name"
2) "neme"

corak menggunakan kad bebas gaya glob, di mana:

  • * mewakili sebarang aksara

  • ? Mewakili watak

  • [] mewakili padanan beberapa aksara, contohnya, [a,b] bermaksud memadankan dua aksara a dan b, [1-10] bermaksud memadankan sebarang nombor dari 1 hingga 10

  • x bermaksud melarikan diri Apabila anda perlu memadankan watak *, anda perlu melarikan diri

Kami boleh melakukan perkara berikut:

127.0.0.1:6379> keys n[a,e]me
1) "name"
2) "neme"

Anda juga boleh melakukan ini

127.0.0.1:6379> keys n?me
1) "name"
2) "neme"

Tetapi apabila terdapat sejumlah besar kunci dalam pangkalan data redis, kunci akan menyekat redis.

Apakah yang perlu kita lakukan jika kita perlu melintasi kunci?

Secara amnya persekitaran pengeluaran kami adalah berbilang nod, maka kami boleh mencari nod hamba redis yang tidak menyediakan perkhidmatan luaran untuk melintasi data, tetapi jika jumlah data adalah besar, ia masih akan menyekat redis, tetapi untuk nod hamba, ia hanyalah replikasi tuan-hamba yang terjejas.

Jika anda pasti tidak banyak kunci pada redis, anda boleh melaksanakannya secara terus.

1.2 Traversal progresif

Traversal progresif ialah melintasi bahagian kunci setiap kali, kemudian kembali, dan terus melintasi data berikutnya ke lain kali. Dengan cara ini, semua data boleh dilalui tanpa menyekat perkhidmatan redis.

scan cursor [MATCH pattern] [COUNT count]

Parameter diterangkan seperti berikut:

  • kursor ialah parameter yang diperlukan, menunjukkan di mana ia dilalui kali ini akan bermula dari ini Kursor bermula Jika 0 dikembalikan, traversal selesai.

  • Corak PERLAWANAN ialah parameter pilihan, yang sama dengan corak kekunci

  • kiraan COUNT bermaksud melintasi beberapa kekunci, lalainya ialah 10 , boleh ditingkatkan mengikut situasi sebenar

127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1
OK

Kami menggunakan imbasan untuk melintasi, dan pelaksanaan pertama mengembalikan perkara berikut:

127.0.0.1:6379> scan 0
1) "1"
2)  1) "l"
    2) "f"
    3) "k"
    4) "y"
    5) "c"
    6) "e"
    7) "w"
    8) "d"
    9) "b"
   10) "o"
   11) "q"

Yang kedua masa, gunakan yang pertama 1 yang dikembalikan untuk kali pertama dilalui, dan 10 kekunci boleh dilalui

127.0.0.1:6379> scan 1
1) "23"
2)  1) "v"
    2) "u"
    3) "z"
    4) "g"
    5) "n"
    6) "s"
    7) "i"
    8) "a"
    9) "r"
   10) "t"

Kali ketiga dilalui menggunakan 23 yang dikembalikan untuk kali kedua Apabila nilai pulangan ialah 0 , ini bermakna traversal telah selesai

127.0.0.1:6379> scan 23
1) "0"
2) 1) "x"
   2) "h"
   3) "m"
   4) "p"

Terdapat juga hscan untuk jenis cincang, sscan untuk jenis set dan zscan untuk set tertib Kaedah penggunaan adalah sama seperti imbasan

2 Pengurusan Pangkalan Data

Redis juga mempunyai beberapa arahan untuk operasi pangkalan data: dbsize, select, flushdb/flushall

2.1 Tukar pangkalan data, pilih

pilih dbIndex dbIndex ialah nombor siri pangkalan data yang sepadan. Terdapat 16 pangkalan data dalam konfigurasi redis lalai.

Sebagai contoh, tetapkan kunci dalam pangkalan data lalai No. 0

127.0.0.1:6379> set name luke
OK

Kemudian kita beralih ke pangkalan data No. 1 untuk mendapatkan kunci, tetapi ia tidak boleh diperoleh, menunjukkan bahawa antara pangkalan data dalam perkhidmatan redis Tiada komunikasi antara mereka.

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
(nil)

Jadi bolehkah ia digunakan sebagai redis berganda Sudah tentu tidak. Walaupun terdapat lebih banyak perpustakaan, kerana redis adalah satu-benang, ia sebenarnya masih CPU Jika arahan dalam pangkalan data dilaksanakan dengan sangat perlahan, perpustakaan lain juga akan terjejas, dalam kes ini, jika ia disekat oleh yang lain perpustakaan, Bagi pembangun yang menggunakan perpustakaan tertentu, mungkin sukar untuk menganalisis masalahnya.

2.2 flushall/flushdb

Perbezaan antara flushall dan flushdb ialah flushall akan mengosongkan semua data dalam semua pustaka, manakala flushdb hanya akan mengosongkan pangkalan data semasa.

Ini mudah difahami, jadi kami tidak akan memberikan contoh, bagaimanapun, perlu diingatkan bahawa kedua-dua arahan ini akan mengosongkan semua data, dan akibat salah operasi akan membawa bencana. Dan apabila terdapat terlalu banyak kunci, redis juga akan disekat, jadi anda mesti berhati-hati apabila menggunakan kedua-dua arahan ini.

Pembelajaran yang disyorkan: Tutorial video Redis

Atas ialah kandungan terperinci Penjelasan terperinci mengenai traversal kunci Redis dan pengurusan pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam