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

Cách khắc phục sự cố trong Redis

Redis là một repodata key-value open-souce trong bộ nhớ. Nó đi kèm với một số lệnh có thể giúp khắc phục sự cố và gỡ lỗi. Do bản chất của Redis là một kho lưu trữ key-value trong bộ nhớ , nhiều lệnh trong số này tập trung vào quản lý bộ nhớ, nhưng có những lệnh khác có giá trị cung cấp cái nhìn tổng quan về trạng thái của server Redis của bạn. Hướng dẫn này sẽ cung cấp chi tiết về cách sử dụng một số lệnh này để giúp chẩn đoán và giải quyết các sự cố bạn có thể gặp phải khi sử dụng Redis.

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.

memory usage cho bạn biết lượng bộ nhớ hiện đang được sử dụng bởi một phím. Nó lấy tên của một khóa làm đối số và xuất ra số byte mà nó sử dụng:

  • memory usage key_meaningOfLife
Output
(integer) 42

Để hiểu tổng quát hơn về cách server Redis của bạn đang sử dụng bộ nhớ, bạn có thể chạy lệnh memory stats :

  • memory stats

Lệnh này xuất ra một mảng các số liệu liên quan đến bộ nhớ và các giá trị của chúng. Sau đây là các chỉ số được báo cáo theo memory stats :

  • peak.allocated : Số byte cao nhất được Redis sử dụng
  • total.allocated : Tổng số byte được Redis phân bổ
  • startup.allocated : Số byte ban đầu được Redis sử dụng khi khởi động
  • replication.backlog : Kích thước của replication backlog, tính bằng byte
  • clients.slaves : Tổng kích thước của tất cả các chi phí bản sao ( cache kết quả và truy vấn cũng như bối cảnh kết nối)
  • clients.normal : Tổng kích thước của tất cả các chi phí khách hàng
  • aof.buffer : Tổng kích thước của cache tệp hiện tại và ghi lại tệp chỉ bổ sung
  • db. 0 : Tổng chi phí của từ điển chính và từ điển hết hạn cho mỗi database đang được sử dụng trên server , được báo cáo bằng byte
  • overhead.total : Tổng của tất cả các chi phí được sử dụng để quản lý không gian phím của Redis
  • keys.count : Tổng số khóa được lưu trữ trong tất cả các database trên server
  • keys.bytes-per-key : Tỷ lệ sử dụng bộ nhớ ròng của server và số lượng keys.count
  • dataset.bytes : Kích thước của tập dữ liệu, tính bằng byte
  • dataset.percentage : Phần trăm sử dụng bộ nhớ ròng của Redis do dataset.bytes thực hiện
  • peak.percentage : Phần trăm peak.allocated được lấy ra trong tổng số total.allocated
  • fragmentation : Tỷ lệ dung lượng bộ nhớ hiện đang sử dụng chia cho bộ nhớ vật lý mà Redis thực sự đang sử dụng

memory malloc-stats cung cấp một báo cáo thống kê nội bộ từ jemalloc , trình cấp phát bộ nhớ được Redis sử dụng trên các hệ thống Linux:

  • memory malloc-stats

Nếu có vẻ như bạn đang gặp phải các vấn đề liên quan đến bộ nhớ, nhưng việc phân tích cú pháp kết quả của các lệnh trước đó tỏ ra không hữu ích, bạn có thể thử chạy memory doctor :

  • memory doctor

Tính năng này sẽ đưa ra bất kỳ vấn đề tiêu thụ bộ nhớ nào mà nó có thể tìm thấy và đề xuất các giải pháp tiềm năng.

Nhận thông tin chung về version Redis của bạn

Lệnh gỡ lỗi không liên quan trực tiếp đến quản lý bộ nhớ là monitor . Lệnh này cho phép bạn xem một stream liên tục của mọi lệnh được xử lý bởi server Redis:

  • monitor
Output
OK 1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared" 1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

Một lệnh khác hữu ích để gỡ lỗi là info , trả về một số khối thông tin và thống kê về server :

  • info
Output
# Server redis_version:4.0.9 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:9435c3c2879311f3 redis_mode:standalone os:Linux 4.15.0-52-generic x86_64 . . .

Lệnh này trả về rất nhiều thông tin. Nếu bạn chỉ muốn xem một khối thông tin, bạn có thể chỉ định nó làm đối số cho info :

  • info CPU
Output
# CPU used_cpu_sys:173.16 used_cpu_user:70.89 used_cpu_sys_children:0.01 used_cpu_user_children:0.04

Lưu ý thông tin được trả về bởi lệnh info sẽ phụ thuộc vào version Redis bạn đang sử dụng.

Sử dụng các keys Command

Lệnh keys rất hữu ích trong trường hợp bạn quên tên của khóa hoặc có thể bạn đã tạo một khóa nhưng vô tình viết sai chính tả tên của nó. keys tìm kiếm các phím phù hợp với một mẫu:

  • keys pattern

Các biến kiểu hình cầu sau đây được hỗ trợ

  • ? là ký tự đại diện đại diện cho bất kỳ ký tự đơn nào, vì vậy s?mmy trùng với sammy , sommysqmmy
  • * là ký tự đại diện đại diện cho bất kỳ số ký tự nào, không bao gồm ký tự nào cả, vì vậy sa*y trùng với sammy , say , sammmmmmysalmony
  • Bạn có thể chỉ định hai hoặc nhiều ký tự mà mẫu có thể bao gồm bằng cách đặt chúng trong dấu ngoặc vuông, vì vậy s[ai]mmy sẽ trùng với sammysimmy , nhưng không trùng với summy
  • Để đặt ký tự đại diện bỏ qua một hoặc nhiều chữ cái, hãy quấn chúng trong dấu ngoặc và đứng trước chúng bằng củ cà rốt ( ^ ), vì vậy s[^oi]mmy sẽ trùng với sammysxmmy , nhưng không sommy hoặc simmy
  • Để đặt một ký tự đại diện bao gồm một loạt các chữ cái, hãy tách phần đầu và phần cuối của dải bằng dấu gạch ngang và đặt nó trong dấu ngoặc vuông, vì vậy s[ao]mmy sẽ trùng với sammy , skmmysommy , nhưng không srmmy

Cảnh báo: Các tài liệu Redis cảnh báo rằng keys nên hầu như không bao giờ được sử dụng trong một môi trường production , vì nó có thể có tác động tiêu cực lớn đến hiệu suất.

Kết luận

Hướng dẫn này nêu chi tiết một số lệnh hữu ích để khắc phục sự cố và giải quyết các vấn đề mà một người có thể gặp phải khi chúng hoạt động với 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 quản lý hàm băm 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