Thứ sáu, 20/09/2019 | 00:00 GMT+7

Cách quản lý hàm băm trong Redis

Redis là một repodata key-value open-souce trong bộ nhớ. Hàm băm Redis là kiểu dữ liệu biểu thị ánh xạ giữa trường chuỗi và giá trị chuỗi. Hàm băm có thể chứa nhiều cặp giá trị trường và được thiết kế để không chiếm nhiều dung lượng, làm cho chúng trở nên lý tưởng để biểu diễn các đối tượng dữ liệu. Ví dụ: một hàm băm có thể đại diện cho một khách hàng và bao gồm các trường như name , address , email hoặc customer_id .

Hướng dẫn này sẽ trình bày về cách quản lý hàm băm trong Redis, từ việc tạo chúng đến truy xuất và xóa dữ liệu được giữ trong một hàm băm.

Cách sử dụng Hướng dẫn này

Hướng dẫn này được viết như một bảng lừa đảo với các ví dụ riêng. Ta khuyến khích bạn chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.

Các lệnh hiển thị trong hướng dẫn này đã được thử nghiệm trên server Ubuntu 18.04 chạy Redis version 4.0.9 . Để cài đặt một môi trường tương tự, bạn có thể làm theo Bước 1 trong hướng dẫn của ta về Cách cài đặt và bảo mật Redis trên Ubuntu 18.04 . Ta sẽ chứng minh các lệnh này hoạt động như thế nào bằng cách chạy chúng với redis-cli , giao diện dòng lệnh Redis. Lưu ý nếu bạn đang sử dụng một giao diện Redis khác - ví dụ như Redli - kết quả kết quả chính xác của một số lệnh nhất định có thể khác nhau.

Ngoài ra, bạn có thể cung cấp một version database Redis được quản lý để kiểm tra các lệnh này, nhưng lưu ý tùy thuộc vào mức độ kiểm soát được nhà cung cấp database của bạn cho phép, một số lệnh trong hướng dẫn này có thể không hoạt động như được mô tả. Để cung cấp Dịch vụ database DigitalOcean, hãy làm theo tài liệu sản phẩm Dịch vụ database của ta . Sau đó, bạn phải cài đặt Redli hoặc cài đặt tunnel TLS để kết nối với Dịch vụ database qua TLS.

Tạo mã băm

Để tạo hàm băm, hãy chạy lệnh hset . Lệnh này chấp nhận tên của khóa băm, chuỗi trường và chuỗi giá trị tương ứng làm đối số:

  • hset poet:Verlaine nationality French

Lưu ý: Trong ví dụ này và những ví dụ sau, poet:Verlaine là khóa băm. Dấu chấm, dấu gạch ngang và dấu hai chấm thường được sử dụng để làm cho các trường và khóa nhiều từ dễ đọc hơn. Sẽ hữu ích khi đảm bảo các khóa của bạn tuân theo một định dạng nhất quán và dễ đọc.

hset trả về (integer) 1 nếu trường được chỉ định là trường mới và giá trị được đặt đúng:

Output
(integer) 1

Tuy nhiên, nếu bạn không thêm giá trị, trường hoặc tên cho khóa băm, hset sẽ trả về lỗi.

Ngoài ra, lưu ý hset sẽ overrides nội dung của băm nếu nó đã tồn tại:

  • hset poet:Verlaine nationality Francais

Nếu trường đã tồn tại và giá trị của nó được cập nhật thành công, hset sẽ trả về (integer) 0 :

Output
(integer) 0

Bạn cũng có thể sử dụng hsetnx để thêm trường vào hàm băm, nhưng nó sẽ chỉ hoạt động nếu trường chưa tồn tại. Nếu trường được chỉ định đã tồn tại, thì hsetnx sẽ không có bất kỳ ảnh hưởng nào và sẽ trả về (integer) 0 :

  • hsetnx poet:Verlaine nationality French
Output
(integer) 0

Để đặt nhiều cặp trường / giá trị cho một tập hợp nhất định, hãy sử dụng lệnh hmset theo sau là chuỗi trường / giá trị tương ứng:

  • hmset poet:Verlaine born 1844 died 1896 genre Decadent

hmset sẽ chỉ trả về OK nếu nó thành công.

Lấy thông tin từ Hashes

Bạn có thể xác định xem trường có tồn tại cho một hàm băm nhất định hay không bằng lệnh hexists :

  • hexists poet:Verlaine nationality

hexists sẽ trả về (integer) 1 nếu trường tồn tại và (integer) 0 nếu trường không tồn tại.

Để trả về giá trị của một trường, hãy chạy lệnh hget theo sau là khóa băm và trường có giá trị bạn muốn truy xuất:

  • hget poet:Verlaine nationality
Output
"Francais"

hmget sử dụng cùng một cú pháp, nhưng có thể trả về giá trị của nhiều trường

  • hmget poet:Verlaine born died
Output
1) "1844" 2) "1896"

Nếu băm bạn chuyển cho hget hoặc hmget không tồn tại, cả hai lệnh sẽ trả về (nil) :

  • hmget poet:Dickinson born died
Output
1) (nil) 2) (nil)

Để có được danh sách tất cả các trường được giữ trong một hàm băm nhất định, hãy chạy lệnh hkeys :

  • hkeys poet:Verlaine
Output
1) "nationality" 2) "born" 3) "died" 4) "genre"

Ngược lại, chạy các hvals để truy xuất danh sách các giá trị được giữ trong một hàm băm:

  • hvals poet:Verlaine
Output
1) "French" 2) "1844" 3) "1896" 4) "Decadent"

Để trả về danh sách mọi trường được nắm giữ bởi hàm băm và các giá trị liên quan của chúng, hãy chạy hgetall :

  • hgetall poet:Verlaine
Output
1) "nationality" 2) "French" 3) "born" 4) "1844" 5) "died" 6) "1896" 7) "genre" 8) "Decadent"

Bạn có thể tìm số trường trong một hàm băm bằng cách chạy hlen , viết tắt của “ h ash len gth”:

  • hlen poet:Verlaine
Output
(integer) 4

Bạn có thể tìm độ dài của chuỗi giá trị được liên kết với một trường bằng hstrlen , viết tắt của “ h ash str ing len gth”:

  • hstrlen poet:Verlaine nationality
Output
(integer) 8

hlen sẽ trả về (integer) 0 nếu hàm băm không tồn tại.

Xóa trường khỏi mã băm

Để xóa một trường khỏi hàm băm, hãy chạy lệnh hdel . hdel có thể chấp nhận nhiều trường làm đối số và sẽ trả về một số nguyên cho biết có bao nhiêu trường đã bị xóa khỏi hàm băm:

  • hdel poet:Verlaine born died
Output
(integer) 2

Nếu bạn chuyển một trường không tồn tại vào hdel , nó sẽ bỏ qua trường đó nhưng xóa mọi trường hiện có khác mà bạn chỉ định.

Kết luận

Hướng dẫn này trình bày chi tiết một số lệnh được sử dụng để tạo và quản lý hàm băm trong Redis. Nếu có các lệnh, đối số hoặc quy trình liên quan khác mà bạn muốn xem được nêu trong hướng dẫn này, vui lòng hỏi hoặc đưa ra đề xuất trong phần comment bên dưới.

Để biết thêm thông tin về các lệnh Redis, hãy xem loạt bài hướng dẫn của ta về Cách quản lý database Redis .


Tags:

Các tin liên quan

Cách quản lý database và khóa Redis
2019-09-20
Cách quản lý danh sách trong Redis
2019-09-20
Cách khắc phục sự cố trong Redis
2019-09-20
Cách quản lý chuỗi trong Redis
2019-09-20
Cách quản lý danh sách trong Redis
2019-09-20
Cách đánh giá hiệu suất của server Redis trên Ubuntu 18.04
2019-08-16
Cách cài đặt và bảo mật Redis trên Debian 10
2019-07-16
Cách cài đặt và bảo mật Redis trên Debian 9
2018-09-05
Cách cài đặt Redis từ nguồn trên Ubuntu 18.04
2018-06-27
Cách bảo mật cài đặt Redis của bạn trên Ubuntu 18.04
2018-06-27