Redis menyimpan kunci yang menunjuk ke nilai. Kunci dapat berupa nilai biner apa pun hingga ukuran yang wajar (menggunakan string ASCII pendek disarankan untuk keterbacaan dan tujuan debugging). Nilai adalah satu dari lima tipe data Redis asli.
1.strings - urutan byte aman biner hingga 512 MB
2. hash - koleksi pasangan nilai kunci
3. daftar - koleksi string yang disisipi-urutan
4.set - kumpulan string unik tanpa pemesanan
5. set sortir - koleksi string unik yang dipesan oleh penilaian yang ditentukan pengguna
String
String Redis adalah urutan byte.
String di Redis adalah biner safe (artinya mereka memiliki panjang yang diketahui tidak ditentukan oleh karakter penghentian khusus), sehingga Anda dapat menyimpan apa pun hingga 512 megabyte dalam satu string.
String adalah konsep "key value store" kanonis. Anda memiliki kunci yang menunjuk ke suatu nilai, di mana kunci dan nilainya adalah teks atau string biner.
Untuk semua operasi yang mungkin pada string, lihat
http://redis.io/commands/#string
Hash
Hash Redis adalah kumpulan pasangan nilai kunci.
Hash Redis menampung banyak pasangan nilai kunci, di mana setiap kunci dan nilai adalah string. Hash redis tidak mendukung nilai kompleks secara langsung (artinya, Anda tidak dapat memiliki bidang hash memiliki nilai daftar atau set atau hash lain), tetapi Anda dapat menggunakan bidang hash untuk menunjuk ke nilai kompleks tingkat atas lainnya. Satu-satunya operasi khusus yang dapat Anda lakukan pada nilai bidang hash adalah penambahan / pengurangan atom dari konten numerik.
Anda dapat memikirkan hasis Redis dalam dua cara: sebagai representasi objek langsung dan sebagai cara untuk menyimpan banyak nilai kecil secara kompak.
Representasi objek langsung mudah dipahami. Objek memiliki nama (kunci hash) dan kumpulan kunci internal dengan nilai. Lihat contoh di bawah ini untuk, contohnya.
Menyimpan banyak nilai kecil menggunakan hash adalah teknik penyimpanan data masif Redis yang pintar. Ketika hash memiliki sejumlah kecil bidang (~ 100), Redis mengoptimalkan penyimpanan dan efisiensi akses seluruh hash. Optimalisasi penyimpanan hash kecil Redis memunculkan perilaku yang menarik: lebih efisien memiliki masing-masing 100 hash dengan 100 kunci dan nilai internal daripada memiliki 10.000 kunci tingkat atas yang menunjuk ke nilai string. Menggunakan hash Redis untuk mengoptimalkan penyimpanan data Anda dengan cara ini memang memerlukan overhead pemrograman tambahan untuk melacak di mana data berakhir, tetapi jika penyimpanan data Anda berbasis string, Anda dapat menghemat banyak overhead memori menggunakan trik aneh ini.
Untuk semua operasi yang mungkin pada hash, lihat dokumen hash
Daftar
Daftar redis bertindak seperti daftar tertaut.
Anda dapat menyisipkan, menghapus dari, dan melintasi daftar dari kepala atau ekor daftar.
Gunakan daftar saat Anda perlu mempertahankan nilai sesuai urutan yang dimasukkan. (Redis memberi Anda opsi untuk memasukkan ke dalam posisi daftar sembarang jika Anda perlu, tetapi kinerja penyisipan Anda akan menurun jika Anda memasukkan jauh dari posisi awal Anda.)
Daftar redis sering digunakan sebagai antrian produsen / konsumen. Masukkan item ke daftar lalu pop item dari daftar. Apa yang terjadi jika konsumen Anda mencoba keluar dari daftar tanpa elemen? Anda dapat meminta Redis untuk menunggu sebuah elemen muncul dan segera mengembalikannya kepada Anda ketika elemen tersebut ditambahkan. Ini mengubah Redis menjadi antrian pesan waktu nyata / acara / pekerjaan / tugas / sistem pemberitahuan.
Anda dapat menghapus elemen secara atom dari ujung daftar, memungkinkan daftar mana saja diperlakukan sebagai tumpukan atau antrian.
Anda juga dapat mempertahankan daftar panjang tetap (koleksi tertutup) dengan memangkas daftar Anda ke ukuran tertentu setelah setiap penyisipan.
Untuk semua operasi yang mungkin pada daftar, lihat daftar dokumen
Set
Set redis adalah, well, set.
Set Redis berisi string Redis unordered unik di mana setiap string hanya ada sekali per set. Jika Anda menambahkan elemen yang sama sepuluh kali ke set, itu hanya akan muncul sekali. Set sangat bagus untuk memastikan ada sesuatu yang malas setidaknya sekali tanpa khawatir tentang elemen duplikat yang menumpuk dan membuang-buang ruang. Anda dapat menambahkan string yang sama sebanyak yang Anda suka tanpa perlu memeriksa apakah sudah ada.
Set cepat untuk memeriksa keanggotaan, penyisipan, dan penghapusan anggota dalam set.
Set memiliki operasi set yang efisien, seperti yang Anda harapkan. Anda dapat mengambil gabungan, persimpangan, dan perbedaan beberapa set sekaligus. Hasil dapat dikembalikan ke pemanggil atau hasilnya dapat disimpan dalam set baru untuk penggunaan nanti.
Set memiliki akses waktu konstan untuk pemeriksaan keanggotaan (tidak seperti daftar), dan Redis bahkan memiliki penghapusan dan pengembalian anggota acak yang mudah ("pop elemen acak dari set") atau anggota acak yang kembali tanpa penggantian ("beri saya 30 pengguna unik acak-ish) ") atau dengan penggantian (" beri saya 7 kartu, tetapi setelah setiap pemilihan, kembalikan kartu itu sehingga berpotensi dijadikan sampel lagi ").
Untuk semua operasi yang mungkin dilakukan pada set, lihat set docs .
Set Diurutkan
Redis diurutkan set adalah set dengan pemesanan yang ditentukan pengguna.
Untuk kesederhanaan, Anda dapat menganggap set diurutkan sebagai pohon biner dengan elemen unik. (Set redis yang diurutkan sebenarnya melewati daftar .) Urutan sortir elemen ditentukan oleh skor setiap elemen.
Set yang diurutkan masih set. Elemen hanya dapat muncul sekali dalam satu set. Suatu elemen, untuk tujuan keunikan, ditentukan oleh konten stringnya. Memasukkan elemen "apel" dengan skor sortir 3, lalu menyisipkan elemen "apel" dengan skor sortir 500 menghasilkan satu elemen "apel" dengan skor sortir 500 di set yang diurutkan. Set hanya unik berdasarkan Data, bukan berdasarkan pada pasangan (Nilai, Data).
Pastikan model data Anda bergantung pada konten string dan bukan skor elemen untuk keunikan. Skor diizinkan diulangi (atau bahkan nol), tetapi, untuk terakhir kalinya, elemen yang diatur hanya dapat ada satu kali per set yang diurutkan. Misalnya, jika Anda mencoba untuk menyimpan riwayat setiap login pengguna sebagai set yang diurutkan dengan membuat skor sebagai periode login dan nilai id pengguna, Anda akhirnya akan menyimpan hanya periode login terakhir untuk semua pengguna Anda. Set Anda akan tumbuh sesuai ukuran basis pengguna Anda dan bukan ukuran ukuran penggunaan yang Anda inginkan * login.
Elemen ditambahkan ke set Anda dengan skor. Anda dapat memperbarui skor elemen apa saja kapan saja, cukup tambahkan elemen lagi dengan skor baru. Skor diwakili oleh dobel floating point, sehingga Anda dapat menentukan rincian dari cap waktu presisi tinggi jika diperlukan. Beberapa elemen mungkin memiliki skor yang sama.
Anda dapat mengambil elemen dengan beberapa cara berbeda. Karena semuanya diurutkan, Anda dapat meminta elemen mulai dari skor terendah. Anda dapat meminta elemen mulai dari skor tertinggi ("terbalik"). Anda dapat meminta elemen berdasarkan skor sortirnya baik secara alami atau terbalik.
Untuk semua operasi yang mungkin pada set diurutkan, lihat set dokumen yang diurutkan.