Cara menggunakan Redis Sorted Set

Cara menggunakan Redis Sorted Set

Kumpulan yang diurutkan adalah salah satu tipe data paling berharga dan canggih di Redis. Himpunan yang diurutkan sangat mirip dengan himpunan karena keduanya berisi urutan string yang tidak berulang. Namun, tidak seperti set standar, set yang diurutkan menyertakan nilai skor yang terkait dengan setiap anggota.

Nilai skor memungkinkan mereka untuk diurutkan dalam urutan tertentu. Setiap anggota dari kumpulan yang diurutkan harus unik tetapi dapat berbagi nilai skor dengan beberapa anggota.

Dalam tutorial ini, Anda akan mempelajari semua tentang set yang diurutkan di Redis dan bagaimana Anda dapat menggunakannya di database Anda.

Pastikan Anda telah menginstal dan menjalankan server Redis untuk mengikuti tutorial ini.

Membuat Set Terurut

Untuk membuat kumpulan yang diurutkan di Redis, gunakan perintah ZADD di Redis CLI. Perintah ZADD mengambil tiga argumen utama.

Yang pertama adalah nama kunci yang menyimpan himpunan yang diurutkan.

Argumen kedua menyimpan skor anggota yang ditambahkan ke set yang diurutkan.

Argumen terakhir dan ketiga adalah nilai aktual dari anggota dalam himpunan yang diurutkan.

CATATAN: Urutan argumen penting karena masing-masing mewakili nilai seperti yang ditentukan di atas.

Lihatlah contoh yang ditunjukkan di bawah ini.

127.0.0.1:6379> ZADD captains 1 "Jonathan Archer"

Perintah di atas membuat kumpulan yang diurutkan yang berisi nama-nama kapten Star Trek. Pada contoh di atas, nilai “Jonathan Archer” memiliki skor 1.

Perintah mengembalikan nilai integer yang menunjukkan jumlah total anggota yang ditambahkan ke set yang diurutkan.

Redis tidak membatasi Anda untuk menambahkan satu anggota ke set. Anda dapat menambahkan beberapa nilai. Sebagai contoh:

ZADD captains 2 "Carol Freeman" 4 "Christopher Pike" 1 "Jean-Luc Picard" 3 "Kathryn Janeway."

Anda akan melihat dua hal utama dalam perintah di atas:

  1. Pertama, skor untuk setiap anggota yang diurutkan tidak harus berurutan. Anda dapat memberikan skor 100 kepada anggota meskipun skor lainnya tidak disetel ke nilai apa pun.
  2. Kedua, seorang anggota dapat memegang skor yang sama dengan anggota lain di set yang diurutkan.

Opsi perintah ZADD.

Perintah ZADD menerima beberapa opsi untuk mengubah perilaku dan fungsinya. Opsi ini meliputi:

  1. NX – opsi NX memberi tahu perintah ZADD hanya untuk menambahkan anggota baru. Opsi ini mencegah perintah memperbarui anggota yang ada di set yang ditentukan.
  2. Di sisi lain, XX – Opsi XX hanya akan memperbarui anggota yang ada dan tidak menambahkan anggota baru ke set.

CATATAN: Opsi NX dan XX bertentangan. Oleh karena itu, Anda hanya dapat menggunakan satu opsi dalam satu perintah.

  1. CH – Opsi CH memberitahu ZADD untuk memasukkan jumlah item yang diubah. Secara default, ZADD hanya akan mengembalikan jumlah item yang baru ditambahkan. Perintah ZADD akan mengembalikan jumlah item yang ditambahkan dan unsur yang diperbarui menggunakan opsi CH.
  2. INCR – Opsi INCR memberitahu perintah ZADD untuk menambah skor anggota. Jika anggota yang ditentukan tidak ada di set yang diurutkan, Redis akan membuatnya secara otomatis dan menetapkan kenaikan sebagai skor.

CATATAN: Disarankan menggunakan perintah ZINCRBY alih-alih ZADD dengan opsi INCR. Keduanya melakukan fungsi yang sama.

Ambil Anggota dari Kumpulan yang Diurutkan

Untuk mengambil anggota dari kumpulan yang diurutkan di Redis, gunakan perintah ZRANGE. Perintah mengambil nama kunci dan rentang tertentu dari anggota yang ingin Anda ambil. Nilai rentang anggota himpunan yang diurutkan adalah indeks berbasis nol. Oleh karena itu, anggota pertama dalam himpunan berada pada indeks 0.

Misalnya, untuk mengambil anggota dari indeks 0 hingga 10, masukkan perintah:

127.0.0.1:6379> ZRANGE captains 0 10

Perintah akan mengembalikan anggota dalam rentang yang ditentukan. Contoh outputnya seperti gambar di bawah ini:

1) "Jonathan Archer"
2) "Carol Freeman"
3) "Kathryn Janeway"
4) "Christopher Pike"
5) "Jean-Luc Picard"

Dalam kasus di mana himpunan yang diurutkan berisi anggota dengan nilai skor yang sama, anggota akan di
urutkan dalam urutan leksikografis.

Jika Anda ingin mendapatkan anggota dalam set dan skor yang terkait, Anda dapat menggunakan opsi WITHSCORES.

 127.0.0.1:6379> ZRANGE captains 0 10 WITHSCORES

Contoh output dari perintah di atas adalah seperti pada gambar.

1) "Jonathan Archer"
 2) "1"
 3) "Carol Freeman"
 4) "2"
 5) "Kathryn Janeway"
 6) "3"
 7) "Christopher Pike"
 8) "4"
 9) "Jean-Luc Picard"
10) "5"

Misalkan Anda ingin mendapatkan anggota dalam urutan terbalik. Ingat bahwa perintah ZRANGE mengembalikan anggota dalam urutan menaik saja. Untuk mendapatkan urutan terbalik, gunakan perintah ZREVRANGE.

127.0.0.1:6379> ZREVRANGE captains 0 10

Perintah akan menghasilkan urutan terbalik.

1) "Jean-Luc Picard"
2) "Christopher Pike"
3) "Kathryn Janeway"
4) "Carol Freeman"
5) "Jonathan Archer"

Anda juga dapat menyertakan opsi WITHOPTIONS dalam perintah ZREVRANGE.

1) "Jean-Luc Picard"
 2) "5"
 3) "Christopher Pike"
 4) "4"
 5) "Kathryn Janeway"
 6) "3"
 7) "Carol Freeman"
 8) "2"
 9) "Jonathan Archer"
10) "1"

Nilai yang dihasilkan akan berisi skor dalam urutan terbalik.

Hapus Anggota dari kumpulan yang diurutkan

Untuk menghapus anggota dari kumpulan yang diurutkan, gunakan perintah ZREM.

127.0.0.1:6379> ZREM captains "Jonathan Archer"

Perintah akan mengembalikan nilai integer yang menunjukkan jumlah item yang dihapus dari set yang diurutkan.

Untuk menghapus item menurut rentang, gunakan perintah ZREMBYRANGE.

127.0.0.1:6379> ZREMRANGEBYLEX captains [A [Z

Perintah akan menghapus nilai berdasarkan rentang leksikonya.

Untuk menghapus anggota pada rentang skor mereka, gunakan perintah ZREMRANGEBYSCORE.

127.0.0.1:6379> ZREMRANGEBYSCORE captains 0 5

Dapatkan Info tentang Kumpulan yang Diurutkan

Gunakan perintah ZCARD untuk mengambil jumlah anggota dalam set yang diurutkan tertentu.

127.0.0.1:6379> ZCARD captains

Nilai kembalian adalah bilangan bulat yang menunjukkan jumlah item dalam satu set.

Jika Anda ingin mendapatkan jumlah anggota dalam rentang tertentu, gunakan perintah ZCOUNT.

127.0.0.1:6379> ZCOUNT captains 0 10

Demikian pula, perintah mengembalikan nilai integer.

Untuk mendapatkan skor anggota tertentu dalam kumpulan yang diurutkan, gunakan perintah ZSCORE:

127.0.0.1:6379> ZSCORE captains "Carol Freeman"
"2"

Perintah akan mengembalikan skor anggota jika ada.

Kesimpulan

Artikel ini membahas cara memulai dan menggunakan Sorted Sets di Ruby. Ingatlah bahwa ada lebih banyak set yang diurutkan daripada yang dibahas dalam panduan ini. Pertimbangkan dokumentasi untuk mempelajari lebih lanjut.

Related Posts