[Redis] – Các vấn đề liên quan đến bộ nhớ

Các vấn đề liên quan đến bộ nhớ Lệnh memory usage cho chúng ta biết lượng bộ nhớ hiện đang được sử dụng bởi một key. Nó lấy tên của một key 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

Các vấn đề liên quan đến bộ nhớ

Lệnh memory usage cho chúng ta biết lượng bộ nhớ hiện đang được sử dụng bởi một key. Nó lấy tên của một key 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 chúng ta đang sử dụng bộ nhớ, chúng ta 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ố key đượ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ư chúng ta đ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, chúng ta 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.

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 chúng ta 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 chúng ta chỉ muốn xem một khối thông tin, chúng ta 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 chúng ta đang sử dụng.

Sử dụng các keys Command

Lệnh keys rất hữu ích trong trường hợp chúng ta quên tên của key hoặc có thể chúng ta đã tạo một key nhưng vô tình viết sai chính tả tên của nó. keys tìm kiếm các từ key 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
  • chúng ta 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 ký 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.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ