Salah satu perpustakaan paling populer untuk bekerja dengan server Redis dari aplikasi Node.js adalah node-redis
, tersedia di https://github.com/NodeRedis/node-redis.
Instal perpustakaan di proyek Anda:
npm install redis
Tip:jangan lupa untuk menjalankan
npm init -y
terlebih dahulu jika proyek tersebut baru dan Anda tidak memilikipackage.json
file sudah.
Hubungkan ke instance Redis
Setelah perpustakaan terinstal, wajibkan dalam proyek Anda menggunakan
const redis = require('redis')
atau
import redis from 'redis'
Setelah Anda memiliki redis
objek, buat klien baru menggunakan
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
dan hubungkan menggunakan (di dalam fungsi asinkron):
await client.connect()
Setelah Anda memiliki klien, kami dapat melakukan semua hal yang kami tahu dapat dilakukan oleh Redis.
Untuk menutup koneksi, hubungi:
client.quit()
Menyimpan dan mengambil nilai kunci
Simpan pasangan nilai kunci ke dalam redis menggunakan set()
:
client.set("<key>", "<value>")
Contoh:
client.set("name", "Flavio")
client.set("age", 37)
Jika Anda menjalankan KEYS *
di redis-cli
di server Redis yang bersih, Anda akan melihat dua kunci muncul:
Anda bisa mendapatkan nilai yang disimpan dalam kunci menggunakan get()
:
const value = await client.get("name")
Hapus string kunci/nilai menggunakan
client.del("names")
Bekerja dengan daftar
Di Redis kita dapat bekerja dengan daftar menggunakan
LPUSH
RPUSH
LTRIM
LRANGE
perintah yang kami perkenalkan di modul Redis. Mereka memetakan secara langsung sebagai client
metode objek.
Buat daftar menggunakan
client.lPush('names', 'Flavio')
Dorong item baru ke bagian bawah daftar:
client.rPush('names', 'Roger')
Atau di bagian atas daftar:
client.lPush('names', 'Syd')
Daftar semua item dalam daftar menggunakan:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
Jatuhkan item dari daftar menggunakan
client.rPop('names')
Hapus daftar menggunakan
client.del('names')
Bekerja dengan set
Di Redis kami bekerja dengan set menggunakan
SADD
SPOP
SMEMBERS
.
dan perintah Redis lainnya, yang memetakan secara langsung sebagai client
metode objek.
Buat satu set menggunakan
client.sAdd('names', 'Flavio')
Tambahkan lebih banyak item ke set:
client.sAdd('names', 'Roger')
Anda dapat menambahkan beberapa sekaligus:
client.sAdd('names', 'Roger', 'Syd')
juga dengan melewatkan array:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
Daftar semua item dalam satu set menggunakan:
const names = await client.sMembers('names')
Jatuhkan item acak dari satu set menggunakan:
client.sPop('names')
Tambahkan parameter kedua untuk menjatuhkan beberapa item acak:
client.sPop('names', 3)
Hapus kumpulan menggunakan
client.del('names')
Bekerja dengan hash
Di Redis kami bekerja dengan hash menggunakan serangkaian perintah yang menyertakan
HMSET
HGETALL
HSET
HINCRBY
.
dan perintah lain yang kami perkenalkan di modul Redis, yang memetakan secara langsung sebagai client
metode objek.
Buat hash menggunakan
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
Untuk mendapatkan semua properti pengguna, gunakan HGETALL:
const items = client.hGetAll('person:1')
Anda dapat memperbarui properti hash menggunakan HSET:
client.hSet('person:1', 'age', 38)
Anda dapat menambah nilai yang disimpan dalam hash menggunakan HINCRBY:
client.hIncrBy('person:1', 'age', 1)
Hapus hash menggunakan
client.del('person:1')
Langganan
Langganan adalah fitur luar biasa dari Redis, yang mendorong kami untuk melakukan hal-hal yang sangat mewah di Node.js.
Penerbit mengirim pesan di saluran. Banyak pelanggan menerimanya.
Berlangganan saluran menggunakan
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
Publikasikan ke saluran menggunakan client.publish('<channel>', '<message>')
client.publish('dogs', 'Roger')
Ketahuilah bahwa Anda tidak dapat memublikasikan dan berlangganan dari client
yang sama contoh.
Untuk melakukannya di aplikasi yang sama, buat 2 klien:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')