Rumah >pangkalan data >Redis >Penjelasan terperinci mengenai traversal kunci Redis dan pengurusan pangkalan data
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.
Pembelajaran yang disyorkan: Tutorial video Redis
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
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!