Untuk melakukan sesuatu yang samar-samar mirip dengan "auto_increment", saya akan melihat fungsi INCR:
http://redis.io/commands/incr
Ini akan menambah nilai, mengembalikan nilai baru kepada Anda - dan itu atom (seperti kebanyakan/semua perintah Redis), jadi Anda tidak perlu khawatir tentang masalah threading. Jadi langkah Anda akan seperti:
- ATUR kunci kenaikan.
- Bila Anda ingin menambahkan nilai, INCR kuncinya, dan SET nilai baru Anda menggunakan nilai INCR yang dikembalikan.
- INCR pada titik ini telah meningkatkan nilai kunci kenaikan, sehingga setiap penyisipan nilai yang berulang akan menggunakan nomor "berikutnya".
Jika Anda ingin menyimpan daftar item yang dapat dicari berdasarkan indeks, Anda mungkin ingin melakukan sesuatu seperti ini (dalam pemrograman pseudocode):
// When you initialize your database for the first time.
SET index "0"
// When you want to insert a new item:
INCR index
SET myList:(index value) "My Value"
// When you want to retrieve an item, and you have the index for it:
GET myList:(index value)
Dalam contoh ini, saya berasumsi bahwa dalam program Anda, Anda melacak nilai yang dikembalikan oleh INCR. Nilai yang dikembalikan INCR akan menjadi indeks tempat Anda memasukkan item baru, serta indeks yang akan digunakan untuk mencari item Anda nanti. Jadi, dalam kode contoh saya, ganti (nilai indeks) dengan nilai tersimpan yang Anda dapatkan kembali dari INCR (cara Anda melakukannya tergantung pada bahasa pemrograman apa yang Anda gunakan, tentu saja).
Perhatikan bahwa ini TIDAK memungkinkan penghapusan item di tengah, melalui DEL myList:(index value)
, karena Anda melacak indeks terakhir dengan index
, jadi meskipun item dihapus, indeks terakhir akan tetap sama - ini berperilaku sangat mirip dengan bidang "penambahan otomatis" di sebagian besar server SQL.
Anda benar-benar tidak ingin menggunakan set untuk ini; set secara inheren tidak berurutan, dan mereka tidak benar-benar dibuat untuk mencari sesuatu dengan "kunci" - item dalam satu set bahkan tidak benar-benar memiliki kunci. Set lebih berguna untuk operasi set lain yang dapat Anda lakukan pada set tersebut, seperti SINTER atau SDIFF.