Rumah > pangkalan data > Redis > teks badan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

WBOY
Lepaskan: 2022-11-07 20:25:01
ke hadapan
1930 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan kandungan berkaitan tentang struktur data biasa Terdapat lima yang paling biasa digunakan, iaitu rentetan, cincang, Mari kita lihat senarai, set dan. set yang ditempah semoga bermanfaat untuk semua.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Pembelajaran yang disyorkan: Tutorial video Redis

Redis struktur data biasa

Redis menyediakan beberapa struktur data untuk When kami mengakses data dalam Redis, terdapat lima yang paling biasa digunakan: String, Hash, senarai, set, dan set tertib (ZSET).

String

Jenis rentetan ialah struktur data paling asas bagi Redis. Pertama sekali, kunci adalah semua jenis rentetan, dan beberapa struktur data lain dibina berdasarkan jenis rentetan, jadi jenis rentetan boleh meletakkan asas untuk pembelajaran empat struktur data yang lain. Nilai jenis rentetan sebenarnya boleh menjadi rentetan (rentetan ringkas, rentetan kompleks (seperti JSON, XML)), nombor (integer, nombor titik terapung), atau pun binari (gambar, audio, video), tetapi nilainya ialah yang terbesar Tidak boleh melebihi 512MB.

(Walaupun Redis ditulis dalam C, dan terdapat rentetan dalam C yang pada asasnya dilaksanakan menggunakan tatasusunan char>, tetapi disebabkan pelbagai pertimbangan, Redis masih melaksanakan jenis rentetan itu sendiri)

Arahan operasi

tetapkan nilai set

tetapkan nilai kunciStruktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Arahan set mempunyai beberapa pilihan:

ex saat: Tetapkan masa tamat tahap kedua untuk kunci.

px milisaat: Tetapkan masa tamat tempoh milisaat untuk kunci.

nx: Kunci mestilah tidak wujud sebelum ia boleh ditetapkan dengan jayanya dan digunakan untuk menambah (biasa digunakan untuk kunci yang diedarkan).

xx: Bertentangan dengan nx, kunci mesti wujud sebelum ia boleh ditetapkan dengan jayanya dan digunakan untuk kemas kini.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Daripada kesan pelaksanaan, parameter ex pada asasnya adalah sama dengan perintah tamat tempoh. Satu lagi perkara yang memerlukan perhatian khusus ialah jika rentetan mempunyai set masa tamat, dan kemudian anda memanggil kaedah set untuk mengubah suainya, masa tamat tempohnya akan hilang.

Kesan pelaksanaan nx dan xx adalah seperti berikut

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Selain pilihan yang ditetapkan, Redis juga menyediakan arahan setex dan setnx:

kunci setex nilai saat

nilai kunci setnx

setex dan setnx mempunyai fungsi yang sama seperti pilihan ex dan nx. Iaitu, setex menetapkan masa tamat peringkat kedua untuk kunci itu mestilah tidak wujud apabila setnx ditetapkan sebelum ia boleh ditetapkan dengan jayanya.

contoh setex:

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

contoh setnx:

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

kerana key foo-ex sudah wujud, Jadi setnx gagal dan hasil pulangan ialah 0. Kunci foo-ex2 tidak wujud, jadi setnx berjaya dan hasil pulangan ialah 1.

Adakah terdapat sebarang senario aplikasi? Ambil arahan setnx sebagai contoh Disebabkan oleh mekanisme pemprosesan perintah berbenang tunggal Redis, jika berbilang pelanggan melaksanakan nilai kunci setnx pada masa yang sama, hanya satu pelanggan boleh menetapkannya. berjaya mengikut ciri setnx , setnx boleh digunakan sebagai penyelesaian pelaksanaan untuk kunci yang diedarkan. Sudah tentu, penguncian yang diedarkan tidak memerlukan hanya satu arahan. Terdapat banyak perkara yang perlu diberi perhatian Kami akan menggunakan bab yang berasingan untuk menerangkan penguncian yang diedarkan berdasarkan Redis nanti.

get gets the value

Jika kunci yang hendak diperolehi tidak wujud, kembalikan sifar (kosong):

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

mset menetapkan nilai dalam kelompok

Menetapkan 4 pasangan nilai kunci pada satu masa melalui arahan mset

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

mget mendapat nilai dalam kelompok

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

mendapat nilai kunci a, b, c, d dalam kelompok:

Jika beberapa kunci tidak wujud, maka nilainya adalah nil (null), hasilnya dikembalikan dalam susunan kunci input.

Arahan operasi kelompok boleh meningkatkan kecekapan dengan berkesan Jika tiada arahan seperti mget, masa khusus yang diperlukan untuk melaksanakan n kali mendapatkan arahan adalah seperti berikut:

n masa mendapat = n. masa rangkaian masa dan n masa arahan Masa

Selepas menggunakan perintah mgt, masa khusus yang diperlukan untuk melaksanakan n mendapatkan operasi arahan adalah seperti berikut:

n kali mendapat masa = 1 masa rangkaian n masa arahan

Redis boleh menyokong puluhan ribu operasi baca dan tulis sesaat, tetapi ini merujuk kepada keupayaan pemprosesan pelayan Redis Bagi pelanggan, sebagai tambahan kepada masa arahan, arahan juga mempunyai masa rangkaian masa rangkaian ialah 1 milisaat, arahan Masa ialah 0.1 milisaat (berdasarkan pemprosesan 10,000 arahan sesaat), kemudian ia mengambil masa 1.1 saat untuk melaksanakan 1000 mendapatkan arahan (10001 10000.1=1100ms), dan 0.1001. saat untuk satu perintah mgt (1 1 10000.1=101ms).

Operasi Berangka Incr

Arahan incr digunakan untuk melaksanakan operasi kenaikan pada nilai Hasil yang dikembalikan dibahagikan kepada tiga situasi:

Nilai bukan integer, Kembalikan ralat.

Nilai ialah integer dan mengembalikan hasil selepas bertambah. Kunci

tidak wujud Ia dinaikkan mengikut nilai 0 dan hasil yang dikembalikan ialah 1.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Selain perintah incr, Redis menyediakan decr (penurunan kendiri), incrby (nombor yang ditentukan kenaikan sendiri), decrby (nombor yang ditentukan pengurangan sendiri), incrbyfloat (nombor titik terapung meningkat sendiri) ), sila cuba sendiri untuk kesan tertentu.

tambah perintah tambah

tambah boleh tambah nilai pada penghujung rentetan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Panjang rentetan strlen

Kembalikan panjang rentetan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Nota: Setiap orang Cina menduduki 3 bait

tetapan getset Dan pengembalian nilai asal

getset akan menetapkan nilai seperti yang ditetapkan, tetapi perbezaannya ialah ia juga akan mengembalikan nilai asal kunci

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

setrange menetapkan aksara

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

pada kedudukan yang ditentukan Subskrip bermula dari 0.

getrange memintas rentetan

getrange memintas sebahagian daripada rentetan untuk membentuk subrentetan Anda perlu menentukan offset mula dan akhir selang waktu.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Kerumitan masa arahan

String Antara arahan ini, kecuali del, mset dan mget sokongan batching bagi berbilang kunci Operasi, kerumitan masa adalah berkaitan dengan bilangan kekunci, iaitu O(n) Getrange berkaitan dengan panjang rentetan, yang juga O(n) pada dasarnya mempunyai kerumitan masa O(1). daripada kelajuan.

Senario penggunaan

Jenis rentetan mempunyai pelbagai senario penggunaan:

Fungsi cache

Redis Sebagai lapisan cache, MySQL berfungsi sebagai lapisan storan, dan kebanyakan data yang diminta diperoleh daripada Redis. Memandangkan Redis mempunyai ciri-ciri menyokong konkurensi tinggi, caching biasanya boleh memainkan peranan dalam mempercepatkan membaca dan menulis serta mengurangkan tekanan back-end.

Mengira

Menggunakan Redis sebagai alat asas untuk mengira, ia dapat merealisasikan fungsi pengiraan pantas dan caching pertanyaan, dan data boleh didatangkan secara tidak segerak ke data lain sumber.

Sesi Dikongsi

Perkhidmatan web yang diedarkan menyimpan maklumat Sesi pengguna (seperti maklumat log masuk pengguna) dalam pelayan masing-masing. Ini akan menyebabkan masalah Pertimbangan, perkhidmatan yang diedarkan akan mengimbangi akses pengguna kepada pelayan yang berbeza. Pengguna yang menyegarkan akses mereka mungkin mendapati bahawa mereka perlu log masuk semula.

Untuk menyelesaikan masalah ini, Redis boleh digunakan untuk mengurus Sesi pengguna secara berpusat Dalam mod ini, selagi Redis dipastikan tersedia dan berskala tinggi, setiap kali pengguna mengemas kini atau bertanya maklumat log masuk. , ia akan diakses terus daripada pemerolehan Berpusat di Redis.

Had kelajuan

Sebagai contoh, atas sebab keselamatan, banyak aplikasi akan meminta pengguna memasukkan kod pengesahan telefon mudah alih setiap kali mereka log masuk untuk menentukan sama ada mereka adalah pengguna sendiri. Walau bagaimanapun, untuk mengelakkan antara muka SMS daripada diakses dengan kerap, kekerapan pengguna mendapatkan kod pengesahan seminit akan dihadkan, contohnya, tidak lebih daripada 5 kali seminit. Sesetengah tapak web mengehadkan alamat IP daripada ditanya lebih daripada n kali dalam satu saat dan boleh menggunakan idea yang serupa.

Hash

Java menyediakan HashMap, dan Redis juga mempunyai struktur data yang serupa, iaitu jenis cincang. Tetapi sila ambil perhatian bahawa hubungan pemetaan dalam jenis cincang dipanggil nilai medan Harap maklum bahawa nilai di sini merujuk kepada nilai yang sepadan dengan medan, bukan nilai yang sepadan dengan kunci.

Perintah operasi

Pada asasnya, perintah operasi cincang adalah sangat serupa dengan perintah operasi rentetan Banyak arahan menambah huruf h di hadapan perintah jenis rentetan, yang bermaksud operasi. dan juga nyatakan nilai medan yang akan dikendalikan.

nilai set hset

pengguna hset:1 nama lijin

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Jika tetapan berjaya, ia akan mengembalikan 1, jika tidak ia akan mengembalikan 0. Di samping itu, Redis menyediakan arahan hsetnx Hubungan mereka adalah sama dengan perintah set dan setnx, kecuali skop berubah dari kunci ke medan.

nilai hget

hget pengguna:1 nama

Jika kunci atau medan tidak wujud, tiada akan dikembalikan.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

medan padam hdel

hdel akan memadamkan satu atau lebih medan dan hasil pulangan ialah bilangan medan yang berjaya dipadamkan.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

hlen mengira bilangan medan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

tetapan kelompok hmset

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

nilai kelompok hmget

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

hexist menentukan sama ada medan itu wujud

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Jika wujud, kembalikan 1, jika ia tidak wujud, kembalikan 1 Pulangan 0

hkeys mendapat semua medan

Ia mengembalikan semua medan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

hvals mendapat semua nilai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

hgetall mendapat semua medan dan nilai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Apabila menggunakan hgetall, jika bilangan elemen cincang adalah besar, Redis akan boleh disekat. Jika anda hanya perlu mendapatkan sebahagian daripada medan, anda boleh menggunakan hmget Jika anda mesti mendapatkan semua nilai medan, anda boleh menggunakan arahan hscan ini akan melintasi jenis cincangan secara berperingkat .

hincrby menambah

hincrby dan hincrbyfloat, sama seperti perintah incrby dan incrbyfloat, tetapi skopnya difailkan.

hstrlen mengira panjang rentetan nilai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Kerumitan masa perintah

Arahan operasi jenis cincang, hdel, hmget , masa kerumitan hmset adalah berkaitan dengan bilangan medan yang dibawa oleh arahan, O(k), hkeys, hgetall, hvals berkaitan dengan jumlah bilangan medan yang disimpan, O(N). Kerumitan masa bagi perintah yang lain ialah O(1).

Senario Penggunaan

Seperti yang dapat dilihat daripada operasi sebelumnya, operasi String dan Hash adalah sangat serupa, jadi mengapa kita perlu mencipta cincang untuk storan.

Jenis hash lebih sesuai untuk menyimpan data jenis objek Kita boleh membandingkannya Jika rekod pengguna dalam jadual pangkalan data ialah:

id name age
1 lijin 18
2 msb 20

1. Menggunakan jenis String

memerlukan satu jalur untuk dimasukkan dan diperoleh.

tetapkan pengguna:1:name lijin;

tetapkan pengguna:1:umur 18;

tetapkan pengguna:2:name msb;

tetapkan pengguna :2:umur 20;

Kelebihan: mudah dan intuitif, setiap kunci sepadan dengan nilai

Kelemahan: terlalu banyak kunci, mengambil banyak ingatan, pengguna Maklumat terlalu berselerak dan tidak boleh digunakan dalam persekitaran pengeluaran

2 Serialkan objek dan simpan dalam redis

set pengguna: 1 serialize(userInfo);

Kelebihan: Pengaturcaraan mudah, penggunaan memori yang tinggi jika serialization digunakan

Kelemahan: Serialization dan deserialisasi mempunyai overhead tertentu, userInfo perlu dikemas kini apabila mengemas kini atribut Keluarkan semuanya untuk penyahserilan, kemas kini dan kemudian sirikannya untuk disorot semula

3 Gunakan jenis cincang

pengguna hmset: 1 nama lijin umur 18

pengguna hmset:2 nama msb umur 20

Kelebihan: mudah dan intuitif, penggunaan yang munasabah boleh mengurangkan penggunaan ruang memori

Kelemahan: perlu mengawal format pengekodan dalaman, format yang tidak sesuai akan menggunakan lebih banyak memori

Senarai (senarai)

Jenis senarai (senarai) digunakan untuk menyimpan berbilang rentetan tertib , a Empat elemen , b, c, c, dan b membentuk senarai tersusun dari kiri ke kanan Setiap rentetan dalam senarai dipanggil elemen Satu senarai boleh menyimpan sehingga (2^32-1) Elemen(4294967295).

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Dalam Redis, anda boleh memasukkan (tolak) dan pop (pop) kedua-dua hujung senarai, anda juga boleh mendapatkan senarai elemen dalam julat tertentu, dapatkan elemen dengan subskrip indeks tertentu, dsb. Senarai ialah struktur data yang agak fleksibel yang boleh bertindak sebagai timbunan dan baris gilir dan mempunyai banyak senario aplikasi dalam pembangunan sebenar.

Jenis senarai mempunyai dua ciri:

Pertama, elemen dalam senarai disusun, yang bermaksud bahawa elemen boleh diperolehi melalui subskrip indeks Atau senarai elemen dalam julat.

Kedua, elemen dalam senarai boleh diulang.

Arahan operasi

lrange mendapat senarai elemen dalam julat yang ditentukan (elemen tidak akan dipadamkan)

kunci mula tamat

Ciri subskrip indeks: dari kiri Ke kanan ialah 0 hingga N-1

arahan 0 -1 dalam julat boleh mendapatkan semua elemen senarai dari kiri ke kanan

rpush sisip ke kanan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

lpush sisipan ke kiri

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

sisipan linsert sebelum atau selepas elemen Elemen baharu

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Ketiga-tiga hasil pulangan ini ialah panjang senarai semasa selepas arahan selesai, juga Ia adalah bilangan elemen yang terkandung dalam senarai Pada masa yang sama, kedua-dua rpush dan lpush menyokong memasukkan berbilang elemen pada masa yang sama.

lpop muncul dari sebelah kiri senarai (elemen akan dipadamkan)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)r

Sila ambil perhatian bahawa elemen itu akan hilang selepas ia muncul.

rpop muncul dari sebelah kanan senarai

rpop akan muncul elemen paling kanan d dalam senarai.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

lrem memadamkan elemen yang ditentukan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Arahan lrem akan mencari elemen yang sama dengan nilai daripada senarai dan memadam ia. Terdapat tiga situasi mengikut kiraan:

bilangan>0, dari kiri ke kanan, padam sehingga mengira elemen.

kira

count=0, padam semua.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Nilai pulangan ialah bilangan elemen yang sebenarnya dipadamkan.

ltirm memangkas senarai mengikut julat indeks

Sebagai contoh, jika anda ingin mengekalkan elemen ke-0 hingga ke-1 dalam senarai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)ls

lset spesifikasi pengubahsuaian Elemen subskrip indeks

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

lindex Mendapat elemen subskrip indeks yang ditentukan bagi senarai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)l

llen Mendapat panjang senarai

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

elemen pop timbul yang menyekat blpop dan brpop

blpop dan brpop menyekat versi lpop dan rpop. Selain itu, mereka juga menyokong berbilang jenis senarai dan tetapan Tetapkan masa penyekatan dalam beberapa saat, ini bermakna ia akan terus disekat. Mari kita ambil brpop sebagai contoh.

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Seorang pelanggan disekat (kerana tiada unsur dan ia akan disekat)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Seorang pelanggan telah disekat. Pada masa ini, kami melaksanakan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

daripada klien B yang lain dan output klien A

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Nota: jika selepas brpop Jika terdapat berbilang kunci, kemudian brpop akan melintasi kekunci dari kiri ke kanan Sebaik sahaja kunci boleh muncul elemen, pelanggan akan kembali serta-merta.

Senario Penggunaan

Jenis senarai boleh digunakan sebagai contoh:

Baris gilir mesej, gabungan arahan lpush brpop Redis boleh merealisasikan baris gilir menyekat, dan pelanggan pengeluar menggunakan lrpush untuk mengekstrak data daripada senarai Masukkan elemen di sebelah kiri, dan berbilang pelanggan pengguna menggunakan arahan brpop untuk "merebut" elemen di hujung senarai dengan cara menyekat Berbilang pelanggan memastikan pengimbangan beban dan ketersediaan penggunaan yang tinggi.

Senarai artikel

Setiap pengguna mempunyai senarai artikel sendiri, yang kini perlu dipaparkan dalam halaman. Pada masa ini, anda boleh mempertimbangkan untuk menggunakan senarai, kerana senarai itu bukan sahaja dipesan, tetapi juga menyokong mendapatkan elemen mengikut julat indeks.

Laksanakan struktur data lain

lpush lpop =Timbunan (timbunan)

lpush rpop =Baris gilir (baris gilir)

lpsh ltrim =Kumpulan Terhad (koleksi terhad )

lpush brpop=Message Queue(Message Queue)

Set

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Jenis set juga digunakan untuk menyimpan Berbilang elemen rentetan, tetapi tidak seperti jenis senarai, elemen pendua tidak dibenarkan dalam set, dan elemen dalam set tidak tertib, dan elemen tidak boleh diperoleh melalui subskrip indeks.

Koleksi boleh menyimpan sehingga 2 hingga kuasa ke-32 - 1 elemen. Selain menyokong penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam koleksi, Redis juga menyokong set persilangan, kesatuan dan perbezaan bagi pelbagai koleksi Penggunaan jenis koleksi yang betul boleh menyelesaikan banyak masalah praktikal dalam pembangunan sebenar.

Arahan operasi dalam set

sadd Add element

membenarkan penambahan berbilang elemen dan hasil pulangan ialah bilangan elemen yang berjaya ditambahkan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

srem memadamkan elemen

membenarkan pemadaman berbilang elemen, hasil pulangan ialah bilangan elemen yang berjaya dipadamkan

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

scard mengira bilangan elemen

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

sismember menentukan sama ada elemen itu berada dalam set

Jika elemen elemen yang diberikan berada dalam set, ia akan mengembalikan 1, jika tidak ia akan kembali 0

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

srandmember secara rawak mengembalikan bilangan elemen yang ditentukan daripada set

Jika nombor yang dinyatakan tidak dinyatakan, ia lalai kepada 1

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

spop secara rawak memunculkan elemen daripada koleksi

juga boleh menentukan nombor Jika tidak dinyatakan, lalainya ialah 1. Ambil perhatian bahawa kerana ia muncul, selepas arahan spop dilaksanakan, elemen akan dipadamkan. daripada koleksi, tetapi ahli srand tidak akan .

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

smembers Dapatkan semua elemen (tiada elemen akan muncul)

Hasil yang dikembalikan tidak tertib

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Arahan operasi antara set

Kini terdapat dua set, ia adalah set1 dan set2

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

sinter Cari persilangan beberapa set

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

suinon mencari gabungan beberapa set

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

sdiff mencari perbezaan beberapa set

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Simpan hasil set persilangan, kesatuan dan perbezaan
sinterstore destination key [key ...]
suionstore destination key [key ...]
sdiffstore destination key [key ...]复制代码
Salin selepas log masuk

Operasi antara set akan lebih memakan masa apabila terdapat banyak elemen, jadi Redis menyediakan tiga arahan di atas (arahan asal store) menyimpan hasil persilangan, penyatuan dan perbezaan antara set dalam kunci destinasi, contohnya:

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Senario penggunaan

set Senario penggunaan biasa jenis ialah tag. Contohnya, seorang pengguna mungkin berminat dengan hiburan dan sukan, manakala pengguna lain mungkin berminat dengan sejarah dan berita. Dengan data ini, anda boleh mendapatkan orang yang menyukai teg yang sama dan teg yang disukai oleh pengguna yang sama. Data ini penting untuk pengalaman pengguna dan meningkatkan kelekatan pengguna.

Sebagai contoh, tapak web e-dagang akan membuat cadangan yang berbeza kepada pengguna dengan label yang berbeza Contohnya, bagi orang yang lebih berminat dengan produk digital, produk digital terkini akan disyorkan kepada mereka dalam pelbagai halaman atau melalui e-mel Biasanya ia akan membawa lebih banyak faedah kepada laman web.

Selain itu, koleksi juga boleh menjana nombor rawak untuk aktiviti seperti aktiviti loteri, graf sosial, dll.

Set pesanan (ZSET)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Set tempah agak asing berbanding cincang, senarai dan set, tetapi kerana ia dipanggil Jika set yang dipesan ialah set tertib, maka ia mesti berkaitan dengan set Ia mengekalkan ciri bahawa set tidak boleh mempunyai ahli pendua, tetapi perbezaannya ialah elemen dalam set tersusun boleh diisih. Tetapi tidak seperti senarai yang menggunakan subskrip indeks sebagai asas untuk mengisih, ia menetapkan skor untuk setiap elemen sebagai asas untuk mengisih.

Elemen dalam set tersusun tidak boleh diulang, tetapi markah boleh diulang, sama seperti nombor pelajar pelajar dalam kelas yang sama tidak boleh diulang, tetapi markah ujian boleh sama.

Set tersusun menyediakan fungsi seperti mendapatkan skor yang ditentukan dan pertanyaan julat elemen, mengira kedudukan ahli, dsb. Penggunaan set tertib yang betul boleh membantu kami menyelesaikan banyak masalah dalam pembangunan sebenar.

Arahan operasi dalam set

zadd untuk menambah ahli

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Hasil pulangan mewakili bilangan ahli yang berjaya ditambahkan

Untuk Nota:

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

arahan zadd juga mempunyai empat pilihan nx, xx, ch, incr Empat pilihan

nx: ahli tidak boleh wujud sebelum itu boleh ditetapkan Kejayaan, untuk menambah.

xx: ahli mesti wujud sebelum ia boleh ditetapkan dengan jayanya dan digunakan untuk kemas kini.

ch: Mengembalikan bilangan elemen set tertib dan skor yang telah berubah selepas operasi ini

incr: Meningkatkan skor, yang bersamaan dengan zincrby yang diperkenalkan kemudian

zcard mengira bilangan ahli

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zscore mengira markah ahli

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

mengembalikan sifar jika ahli itu tidak wujud

zrank mengira kedudukan ahli

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zrank是从分数从低到高返回排名

zrevrank反之

很明显,排名从0开始计算。

zrem 删除成员

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

允许一次删除多个成员。

返回结果为成功删除的个数。

zincrby 增加成员的分数

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zrange和zrevrange返回指定排名范围的成员

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。如果加上 withscores选项,同时会返回成员的分数

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zrangebyscore返回指定分数范围的成员
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores][limit offset count]复制代码
Salin selepas log masuk

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。例如下面操作从低到高返回200到221分的成员,withscores选项会同时返回每个成员的分数。

同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zcount 返回指定分数范围成员个数

zcount key min max

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zremrangebyrank 按升序删除指定排名内的元素

zremrangebyrank key start end

zremrangebyscore 删除指定分数范围的成员

zremrangebyscore key min max

集合间操作命令

zinterstore 交集

zinterstoreStruktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

这个命令参数较多,下面分别进行说明

destination:交集计算结果保存到这个键。

numkeys:需要做交集计算键的个数。

key [key ...]:需要做交集计算的键。

weights weight [weight ...]:每个键的权重,在做交集计算时,每个键中的每个member 会将自己分数乘以这个权重,每个键的权重默认是1。

aggregate sum/ min |max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum。

不太好理解,我们用一个例子来说明。(算平均分)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi)

zunionstore 并集

该命令的所有参数和zinterstore是一致的,只不过是做并集计算,大家可以自行实验。

使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

推荐学习:Redis视频教程

Atas ialah kandungan terperinci Struktur data yang biasa digunakan dalam Redis (tersusun dan dikongsi). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:juejin.im
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan