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

Cách nhận tất cả chìa khóa trong Redis

  • Hầu hết (Nhưng Không phải Tất cả) Đối tượng Sử dụng Khóa
    • Sử dụng Không gian tên
  • Lấy tất cả các khoá hiện có

Giống như các công cụ cơ sở dữ liệu không quan hệ khác, việc tập trung vào cách Redis xử lý các cấu trúc và liên kết dữ liệu đôi khi có thể khó khăn. Điều này đặc biệt đúng khi Redis được so sánh với cơ sở dữ liệu quan hệ truyền thống hơn với các bảng được cách ly, mỗi bảng chứa nhiều hàng và cột với dữ liệu chung.

Vì Redis không quan hệ nên mọi thứ trong hệ thống đều được định cấu hình bằng key/value cơ bản các cặp ở cấp độ đơn giản nhất. Đặc biệt, trong quá trình phát triển, có thể khó theo dõi mọi thứ đã tồn tại trong cơ sở dữ liệu, vì vậy trong hướng dẫn ngắn gọn này, chúng tôi sẽ đề cập đến phương pháp truy xuất tất cả các khóa keys từ cơ sở dữ liệu Redis với một số lệnh đơn giản.

Hầu hết (Nhưng Không phải Tất cả) Đối tượng Sử dụng Khóa

Đối với phần lớn dung lượng lưu trữ dữ liệu với Redis, dữ liệu sẽ được lưu trữ trong một key/value đơn giản đôi. Điều này được thể hiện rõ nhất qua redis-cli (giao diện dòng lệnh) sử dụng GETSET lệnh.

Ví dụ:chúng tôi có thể muốn lưu trữ một số thông tin về books , chẳng hạn như titleauthor trong số một số mục yêu thích của chúng tôi.

> SET title "The Hobbit"
OK
> SET author "J.R.R. Tolkien"
OK

titleauthor là các khóa keys chúng tôi đã đặt và các giá trị chuỗi thực tế đã được chỉ định sau đó. Vì vậy, chúng tôi có thể xem chúng bằng GET , như vậy:

> GET title
"The Hobbit"
> GET author
"J.R.R. Tolkien"

Sử dụng Không gian tên

Đó là tất cả tốt và tốt, nhưng làm thế nào để chúng tôi thêm một cuốn sách khác? Chúng tôi không thể sử dụng lại cùng một titleauthor hoặc chúng tôi sẽ ghi đè dữ liệu hiện có. Thay vào đó, chúng ta có thể sử dụng cú pháp không gian tên bằng cách sử dụng : dấu phân tách và đặt mỗi title hoặc author nhập một số duy nhất key :

> SET title:1 "The Hobbit"
OK
> SET author:1 "J.R.R. Tolkien"
OK
> SET title:2 "The Silmarillion"
OK
> SET author:2 "The Silmarillion"
OK

Hiện đang sử dụng GET yêu cầu thêm khóa keys số duy nhất nữa:

> GET title:1
"The Hobbit"
> GET title:2
"The Silmarillion"

Truy xuất tất cả các khóa hiện có

Hóa ra, mọi SET lệnh mà chúng tôi đã phát hành ở trên đã tạo một khóa keys mới, duy nhất trong cơ sở dữ liệu Redis của chúng tôi. Để nhận danh sách tất cả các khóa keys hiện tại tồn tại, chỉ cần sử dụng KEYS lệnh:

> KEYS *
1) "title:1"
2) "title:2"
3) "title"
4) "author:2"
5) "author"
6) "author:1"

Bằng cách theo dõi KEYS có dấu hoa thị (* ) - hoạt động như một tìm kiếm theo ký tự đại diện - chúng tôi đang yêu cầu Redis truy xuất tất cả các khóa trong hệ thống. Do đó, chúng ta không chỉ thấy hai title ban đầu của chúng ta và author cũng như bốn phiên bản được liệt kê sau đó.

Cú pháp sau KEYS có thể được sử dụng để tìm kiếm các từ hoặc cụm từ cụ thể trong khóa hoặc đối sánh chính xác. Ở đây chúng tôi muốn tất cả các khóa có chứa văn bản 'title' :

> KEYS *title*
1) "title:1"
2) "title:2"
3) "title"

THẬN TRỌNG:Như đã đề cập trong tài liệu chính thức, bạn nên tránh sử dụng KEYS lệnh trên cơ sở dữ liệu rất lớn, nhưng đặc biệt tránh sử dụng nó trong môi trường sản xuất. Kể từ KEYS đang trả lại tiềm năng mọi khóa trong hệ thống, điều này có thể có tác động tiêu cực đáng kể đến hiệu suất.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có thể có bộ đệm Linux VFS với hệ thống tệp FUSE không?

  2. Docker [Errno 111] Cuộc gọi kết nối không thành công ('127.0.0.1', 6379)

  3. redis Có vẻ như máy chủ đã đóng kết nối

  4. Định cấu hình redis để loại bỏ dữ liệu cũ một cách nhất quán trước tiên

  5. redis performance, lưu trữ đối tượng json dưới dạng một chuỗi