Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách sử dụng Redis từ Node.js

Một trong những thư viện phổ biến nhất để làm việc với máy chủ Redis từ ứng dụng Node.js là node-redis , có tại https://github.com/NodeRedis/node-redis.

Cài đặt thư viện trong dự án của bạn:

npm install redis

Mẹo:trước tiên đừng quên chạy npm init -y nếu dự án là thương hiệu mới và bạn không có package.json tệp đã có.

Kết nối với phiên bản Redis

Sau khi thư viện được cài đặt, hãy yêu cầu nó trong dự án của bạn bằng cách sử dụng

const redis = require('redis')

hoặc

import redis from 'redis'

Sau khi bạn có redis đối tượng, tạo một khách hàng mới bằng cách sử dụng

const client = redis.createClient({
  url: 'redis://YOUR REDIS INSTANCE URL'
})

và kết nối bằng cách sử dụng (bên trong một hàm không đồng bộ):

await client.connect()

Sau khi bạn có khách hàng, chúng tôi có thể thực hiện tất cả những điều mà chúng tôi biết rằng Redis có thể làm.

Để đóng kết nối, hãy gọi:

client.quit()

Lưu trữ và truy xuất các giá trị khóa

Lưu trữ một cặp giá trị khóa vào redis bằng cách sử dụng set() :

client.set("<key>", "<value>")

Ví dụ:

client.set("name", "Flavio")
client.set("age", 37)

Nếu bạn chạy KEYS * trong redis-cli trên máy chủ Redis sạch, bạn sẽ thấy hai khóa xuất hiện:

Bạn có thể lấy giá trị được lưu trữ trong một khóa bằng cách sử dụng get() :

const value = await client.get("name")

Xóa chuỗi khóa / giá trị bằng

client.del("names")

Làm việc với danh sách

Trong Redis, chúng tôi có thể làm việc với các danh sách bằng

  • LPUSH
  • RPUSH
  • LTRIM
  • LRANGE

các lệnh mà chúng tôi đã giới thiệu trong mô-đun Redis. Chúng ánh xạ trực tiếp dưới dạng client các phương thức đối tượng.

Tạo danh sách bằng

client.lPush('names', 'Flavio')

Đẩy một mục mới xuống cuối danh sách:

client.rPush('names', 'Roger')

Hoặc ở đầu danh sách:

client.lPush('names', 'Syd')

Liệt kê tất cả các mục trong một danh sách bằng cách sử dụng:

const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]

Thả các mục khỏi danh sách bằng cách sử dụng

client.rPop('names')

Xóa danh sách bằng

client.del('names')

Làm việc với các nhóm

Trong Redis, chúng tôi làm việc với các bộ sử dụng

  • SADD
  • SPOP
  • SMEMBERS .

và các lệnh Redis khác, ánh xạ trực tiếp dưới dạng client các phương thức đối tượng.

Tạo nhóm bằng

client.sAdd('names', 'Flavio')

Thêm các mục khác vào bộ:

client.sAdd('names', 'Roger')

Bạn có thể thêm nhiều cái cùng một lúc:

client.sAdd('names', 'Roger', 'Syd')

cũng bằng cách chuyển một mảng:

const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)

Liệt kê tất cả các mục trong một tập hợp bằng cách sử dụng:

const names = await client.sMembers('names')

Thả một mục ngẫu nhiên từ một tập hợp bằng cách sử dụng:

client.sPop('names')

Thêm thông số thứ hai để thả nhiều mục ngẫu nhiên:

client.sPop('names', 3)

Xóa một tập hợp bằng

client.del('names')

Làm việc với các hàm băm

Trong Redis, chúng tôi làm việc với các hàm băm bằng cách sử dụng một tập hợp các lệnh bao gồm

  • HMSET
  • HGETALL
  • HSET
  • HINCRBY .

và các lệnh khác mà chúng tôi đã giới thiệu trong mô-đun Redis, ánh xạ trực tiếp dưới dạng client các phương thức đối tượng.

Tạo hàm băm bằng cách sử dụng

client.hSet('person:1', 'name', 'Flavio', 'age', 37)

Để nhận tất cả các thuộc tính của người dùng, hãy sử dụng HGETALL:

const items = client.hGetAll('person:1')

Bạn có thể cập nhật thuộc tính băm bằng HSET:

client.hSet('person:1', 'age', 38)

Bạn có thể tăng giá trị được lưu trữ trong hàm băm bằng HINCRBY:

client.hIncrBy('person:1', 'age', 1)

Xóa một hàm băm bằng cách sử dụng

client.del('person:1')

Đăng ký

Đăng ký là một tính năng tuyệt vời của Redis, cho phép chúng tôi làm những điều thực sự thú vị trong Node.js.

Nhà xuất bản gửi thông báo trên một kênh. Nhiều người đăng ký nhận được nó.

Đăng ký kênh bằng

await subscriber.subscribe('dogs', (message) => {
  console.log(message);
})

Xuất bản lên kênh bằng client.publish('<channel>', '<message>')

client.publish('dogs', 'Roger')

Xin lưu ý rằng bạn không thể xuất bản và đăng ký từ cùng một client ví dụ.

Để làm như vậy trong cùng một ứng dụng, hãy tạo 2 ứng dụng khách:

const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })

await subscriber.subscribe('dogs', (message) => {
  console.log(channel, message);
})

publisher.publish('dogs', 'Roger')

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để nhận được tất cả các công việc đang chờ xử lý trong hàng đợi laravel trên redis?

  2. xóa hàng loạt giá trị băm redis dựa trên tên khóa băm

  3. Thực thi hàng loạt lệnh bằng redis cli

  4. Số lần quét trên Redis:Làm thế nào để buộc SCAN trả lại tất cả các phím khớp với một mẫu?

  5. Hai mô-đun có nên sử dụng cùng một kết nối redis không? (Tôi đang làm việc với Flask)