Artikel ini membawa anda pengetahuan yang berkaitan tentang jenis data dalam Redis Ia terutamanya memperkenalkan isu yang berkaitan dengan senario penggunaan jenis data yang biasa saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: Tutorial pembelajaran Redis
Jenis data Redis dan senario penggunaan
Jenis data dan senario penggunaan Redis
Berbanding dengan pangkalan data KV lain, salah satu ciri utama Redis ialah ia menyokong jenis data yang kaya. Ia menyokong sejumlah 5 jenis data 5 jenis data ini, senario penggunaannya dan pelaksanaan dalaman diperkenalkan satu demi satu di bawah.rentetan
Pengenalan: Jenis rentetan ialah jenis data paling asas dalam Redis, jenis data yang paling biasa digunakan, malah digunakan oleh ramai pemain sebagai satu-satunya jenis data redis. Jenis rentetan adalah selamat binari dalam redis, yang bermaksud bahawa nilai rentetan mengambil berat tentang rentetan binari dan tidak mengambil berat tentang format tertentu Anda boleh menggunakannya untuk menyimpan rentetan dalam format json atau format imej JPEG.Dapatkan panjang rentetan
Tambahkan kandungan pada rentetan
Tetapkan dan dapatkan rentetan Sekeping kandungan tertentu
Tetapkan dan dapatkan sedikit rentetan tertentu
-
Tetapkan kumpulan kandungan siri rentetan
Arahan biasa: set, get, decr, incr, mget, dsb.
Senario aplikasi:
(1) Simpan nilai medan dalam MySQL
Reka bentuk kunci sebagai nama jadual: nama kunci utama: nilai kunci utama: Nama medan
(2) Objek storan
Jenis rentetan menyokong rentetan dalam sebarang format Yang paling biasa digunakan ialah menyimpan rentetan yang diformatkan oleh json atau objek lain. (Adalah disyorkan untuk menggunakan jenis data cincang dalam senario ini)
set user:id:1 '[{"id":1,"name":"zj","email":"156577812@qq.com"},{"id":1,"name":"zj","email":"156577812@qq.com"}]'
(3) Jana id penambahan automatik
Apabila nilai jenis rentetan redis dalam bentuk integer, redis boleh merawat ia sebagai integer Lakukan operasi kenaikan (incr) dan penurunan (decr). Memandangkan semua operasi redis adalah atom, tidak perlu risau tentang masalah transaksi yang mungkin berlaku apabila berbilang pelanggan menyambung.
-
Hash
Pengenalan: Hash menyimpan pemetaan antara rentetan dan nilai rentetan. Hash menyimpan pelbagai atribut objek dalam Peta dan hanya boleh membaca/mengemas kini atribut tertentu objek tersebut. Dengan cara ini, sesetengah sifat yang terlalu panjang boleh dibiarkan bersendirian Selain itu, modul yang berbeza hanya boleh mengemas kini sifat yang mereka pedulikan tanpa menyebabkan konflik timpa akibat selaras antara satu sama lain.
Arahan biasa: hget, hset, hgetall, dsb.
Senario aplikasi:
Simpan data berstruktur, seperti maklumat pengguna. Dalam Memcached atau CKV, untuk maklumat pengguna seperti nama panggilan pengguna, umur, jantina, mata, dan lain-lain, kita perlu mensirikannya terlebih dahulu dan menyimpannya sebagai nilai rentetan Pada masa ini, apabila kita perlu mengubah suai salah satu item , kita biasanya perlu Selepas nilai dikeluarkan dan dinyahsiri, nilai item diubah suai, dan kemudian bersiri dan disimpan semula. Ini bukan sahaja meningkatkan overhed, tetapi juga tidak sesuai untuk situasi di mana operasi serentak mungkin (contohnya, dua operasi serentak memerlukan pengubahsuaian mata). Struktur Hash Redis membenarkan anda mengubah suai hanya nilai atribut tertentu seperti mengemas kini atribut dalam pangkalan data. Seperti yang ditunjukkan di bawah:
Kunci ialah ID pengguna, nilai ialah Peta, kunci Peta ini ialah nama atribut ahli dan nilai ialah nilai atribut, supaya pengubahsuaian dan akses data boleh terus melalui Map dalamannya (kunci Map dalaman dipanggil medan dalam Redis), iaitu, data atribut yang sepadan boleh dimanipulasi melalui medan kunci (ID pengguna) (label atribut). untuk menyimpan data berulang kali, dan ia tidak akan menyebabkan isu kawalan bersiri dan konkurensi.
Walau bagaimanapun, perlu diperhatikan di sini bahawa Redis menyediakan antara muka (hgetall) untuk mendapatkan secara langsung semua data atribut Walau bagaimanapun, jika terdapat ramai ahli Peta dalaman, ia melibatkan merentasi keseluruhan Peta dalaman model satu benang Redis Oleh itu, operasi traversal ini mungkin memakan masa dan ia tidak akan bertindak balas kepada permintaan daripada pelanggan lain sama sekali. Ini memerlukan perhatian khusus.
boleh digunakan untuk membina indeks. Sebagai contoh, objek Pengguna, sebagai tambahan kepada id, kadangkala juga perlu disoal dengan nama Anda boleh membina Hash dengan kunci user:name:id Apabila memasukkan objek Pengguna (set user:101{"id":101 ,"name":"calvin ”}), dengan cara ini, masukkan entri ke dalam cincang ini (hset user:name:id calvin 101). Pada masa ini, calvin digunakan sebagai kunci dalam cincang, dengan nilai 101. Apabila membuat pertanyaan mengikut nama, gunakan hgetuser:name:id calvin untuk mendapatkan id daripada kunci bernama calvin. Jika anda perlu menggunakan berbilang indeks untuk mencari sekeping data tertentu, anda boleh menggunakan satu kunci cincang untuk mengelak daripada menggunakan berbilang kunci rentetan untuk menyimpan nilai indeks.
HINCRBY juga boleh digunakan untuk melaksanakan idmaker. Berbanding dengan idmaker jenis rentetan, setiap jenis memerlukan kunci dan jenis cincang hanya memerlukan satu kunci.
Jenis data cincang mempunyai kelebihan kerana lebih fleksibel dan lebih pantas daripada jenis rentetan apabila menyimpan jenis data di atas Secara khusus, menggunakan jenis rentetan untuk menyimpan, adalah perlu untuk menukar dan menghuraikan format json rentetan, walaupun ia bukan Penukaran diperlukan Dari segi overhed memori, hash masih mempunyai kelebihan.
Kaedah pelaksanaan:
Redis Hash yang sepadan dengan Value sebenarnya ialah HashMap. Terdapat dua pelaksanaan berbeza di sini Apabila Hash mempunyai lebih sedikit ahli, Redis akan menggunakan kaedah seperti tatasusunan satu dimensi untuk menyimpannya secara padat untuk menjimatkan memori. menggunakan Struktur HashMap sebenar, pengekodan nilai redisObject yang sepadan ialah zipmap Apabila bilangan ahli bertambah, ia secara automatik akan ditukar menjadi HashMap sebenar, dan pengekodan adalah ht.
- Senarai
Pengenalan:
senarai ialah senarai terpaut rentetan yang diisih mengikut susunan sisipan, yang boleh be Sisipkan elemen baharu di bahagian kepala dan ekor (dilaksanakan oleh senarai berganda, kerumitan masa untuk menambah elemen pada kedua-dua hujung ialah O(1)). Apabila memasukkan elemen, jika kunci tidak wujud, redis akan mencipta senarai terpaut baharu untuk kunci tersebut Jika semua elemen dalam senarai terpaut dialih keluar, kunci itu juga akan dialih keluar daripada redis.
Arahan biasa: lpush, rpush, lpop, rpop, lrange, dsb.
Senario aplikasi:
Pelbagai senarai, seperti senarai ikuti Twitter, senarai peminat, dsb., kedudukan berita terkini, ulasan pada setiap artikel, dsb. juga boleh dilaksanakan menggunakan struktur senarai Redis .
Baris gilir mesej, anda boleh menggunakan operasi PUSH Senarai untuk menyimpan tugasan dalam Senarai, dan kemudian urutan pekerja menggunakan operasi POP untuk mengeluarkan tugasan untuk dilaksanakan. Baris gilir mesej di sini tidak mempunyai mekanisme ack Bagaimana jika pengguna memberikan tugas kepada Pop dan ranap sebelum menyelesaikannya? Satu penyelesaian ialah menambah set diisih tambahan Apabila mengedarkan, menghantarnya ke senarai dan menyusun set pada masa yang sama dalam set yang diisih dan keluarkan kerja secara berkala daripada set yang diisih Keluarkan tugasan yang belum selesai yang telah tamat masa dan letakkannya semula ke dalam senarai. Pendekatan lain ialah menambah senarai tambahan untuk setiap pekerja, gunakan RPopLPush apabila muncul tugasan, letakkan tugas itu ke dalam senarai pekerja sendiri pada masa yang sama dan gunakan LREM untuk menghapuskannya apabila selesai. Jika pengurusan kluster (seperti penjaga zoo) mendapati bahawa pekerja telah meninggal dunia, kandungan senarai pekerja akan dikembalikan ke senarai utama.
Menggunakan LRANGE boleh merealisasikan fungsi halaman kandungan senarai dengan mudah.
Operasi untuk mendapatkan data N terkini: LPUSH digunakan untuk memasukkan ID kandungan dan menyimpannya sebagai kata kunci di kepala senarai. LTRIM digunakan untuk mengehadkan bilangan item dalam senarai kepada maksimum 5000. Jika jumlah data yang perlu diambil oleh pengguna melebihi kapasiti cache ini, maka permintaan itu perlu dihantar ke pangkalan data.
Kaedah pelaksanaan:
Senarai Redis dilaksanakan sebagai senarai terpaut dua hala, yang boleh menyokong carian terbalik dan traversal, menjadikannya lebih mudah untuk dikendalikan, tetapi ia membawa beberapa overhed memori tambahan. Redis dalaman Banyak pelaksanaan, termasuk menghantar baris gilir penimbal, dsb., juga menggunakan struktur data ini.
- Set
Pengenalan: Ia adalah set yang tidak tertib. Meletakkan elemen pendua ke dalam Set akan mengalih keluarnya secara automatik.
Perintah biasa:
sadd, spop, smembers, sunion, dsb.
Senario aplikasi:
Sesetengah senarai yang perlu dinyahduplikasi dan ditetapkan menyediakan antara muka penting untuk menentukan sama ada ahli berada dalam koleksi set, yang merupakan sesuatu yang tidak dapat disediakan oleh senarai.
boleh menyimpan beberapa data kolektif Contohnya, dalam aplikasi Weibo, semua pengikut pengguna boleh disimpan dalam koleksi, dan semua peminatnya boleh disimpan dalam koleksi. Redis juga menyediakan operasi seperti persimpangan, kesatuan, dan perbezaan untuk koleksi, yang boleh menjadi sangat mudah untuk melaksanakan fungsi seperti perhatian biasa, pilihan biasa dan rakan peringkat kedua Untuk semua operasi pengumpulan di atas, anda juga boleh menggunakan arahan yang berbeza Kembalikan keputusan kepada pelanggan atau simpan dalam koleksi baharu. Untuk contoh lain, QQ mempunyai fungsi sosial yang dipanggil "Teg Rakan". Anda boleh menandai rakan anda, seperti "cantik besar", "taikun", "Ouba", dll. Di sini anda juga boleh menyimpan teg setiap pengguna dalam koleksi. .
Jika anda ingin mengetahui bilangan pengguna berdaftar atau alamat IP tertentu telah melawat halaman tertentu, anda boleh melakukan ini: SADD page:day1:
Kaedah pelaksanaan:
Pelaksanaan dalaman set ialah HashMap yang nilainya sentiasa batal Malah, ia diisih dengan cepat dengan mengira cincangan Ini juga yang boleh disediakan oleh set untuk menentukan sama ada ahli adalah Sebab dalam set.
- Set Diisih
Pengenalan: Set tersusun, berbanding set, elemen perlu disediakan apabila ia diletakkan ke dalam set Skor elemen boleh diisih secara automatik berdasarkan skor.
Arahan biasa:
zadd, zrange, zrem, zcard, dsb.
Senario penggunaan:
Simpan senarai set yang tersusun dan bukan pendua, Sebagai contoh, garis masa awam Twitter boleh disimpan dengan masa penerbitan sebagai skor, supaya ia akan diisih secara automatik mengikut masa apabila diambil.
Anda boleh membuat baris gilir berwajaran Contohnya, skor mesej biasa ialah 1, dan skor mesej penting ialah 2. Kemudian urutan pekerja boleh memilih untuk mendapatkan tugasan kerja dalam susunan terbalik. skor. Utamakan tugas penting.
Pemprosesan item tamat tempoh: Gunakan masa unix sebagai kunci untuk memastikan senarai diisih mengikut masa. Dapatkan semula masa_masa dan masa_untuk_hidup untuk menyelesaikan tugas sukar mencari item tamat tempoh. Tugas latar belakang lain menggunakan ZRANGE...WITHSCORES untuk bertanya dan memadamkan entri yang telah tamat tempoh.
Kaedah pelaksanaan:
Set isih Redis secara dalaman menggunakan HashMap dan langkau senarai (SkipList) untuk memastikan penyimpanan dan susunan data HashMap meletakkan pemetaan daripada ahli kepada markah, dan langkau Semua ahli disimpan dalam jadual, dan asas pengisihan ialah skor yang disimpan dalam HashMap Menggunakan struktur jadual lompat boleh mencapai kecekapan carian yang lebih tinggi, dan agak mudah untuk dilaksanakan.
Pembelajaran yang disyorkan: Tutorial video Redis
Atas ialah kandungan terperinci Ringkaskan jenis data dan senario penggunaan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Fungsi teras Redis adalah sistem penyimpanan dan pemprosesan data berprestasi tinggi. 1) Akses data berkelajuan tinggi: Redis menyimpan data dalam memori dan menyediakan kelajuan membaca dan menulis tahap mikrosecond. 2) Struktur Data Kaya: Menyokong rentetan, senarai, koleksi, dan lain -lain, dan menyesuaikan diri dengan pelbagai senario aplikasi. 3) Kegigihan: Data berterusan ke cakera melalui RDB dan AOF. 4) Menerbitkan langganan: boleh digunakan dalam beratur mesej atau sistem komunikasi masa nyata.

Redis menyokong pelbagai struktur data, termasuk: 1. String, sesuai untuk menyimpan data nilai tunggal; 2. Senarai, sesuai untuk beratur dan susunan; 3. Tetapkan, digunakan untuk menyimpan data yang tidak duplikasi; 4. Diarahkan set, sesuai untuk senarai ranking dan beratur keutamaan; 5. Jadual hash, sesuai untuk menyimpan objek atau data berstruktur.

Kaunter Redis adalah satu mekanisme yang menggunakan penyimpanan pasangan nilai utama REDIS untuk melaksanakan operasi pengiraan, termasuk langkah-langkah berikut: mewujudkan kekunci kaunter, meningkatkan tuduhan, mengurangkan tuduhan, menetapkan semula, dan mendapatkan tuduhan. Kelebihan kaunter Redis termasuk kelajuan cepat, konkurensi tinggi, ketahanan dan kesederhanaan dan kemudahan penggunaan. Ia boleh digunakan dalam senario seperti pengiraan akses pengguna, penjejakan metrik masa nyata, skor permainan dan kedudukan, dan pengiraan pemprosesan pesanan.

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Penggunaan ZSET dalam Redis Cluster: ZSET adalah koleksi yang diperintahkan yang mengaitkan unsur -unsur dengan skor. Strategi Sharding: a. Hash Sharding: Mengedarkan nilai hash mengikut kunci ZSET. b. Pelbagai Sharding: Bahagikan ke dalam julat mengikut skor elemen, dan tetapkan setiap julat kepada nod yang berbeza. Baca dan tulis operasi: a. Baca Operasi: Jika kekunci ZSET adalah milik nod semasa, ia akan diproses secara tempatan; Jika tidak, ia akan dialihkan ke shard yang sepadan. b. Tulis Operasi: Sentiasa diarahkan ke Shards memegang kekunci ZSET.

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.


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

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan