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ụngtotal.allocated
: Tổng số byte được Redis phân bổstartup.allocated
: Số byte ban đầu được Redis sử dụng khi khởi độngreplication.backlog
: Kích thước của replication backlog, tính bằng byteclients.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àngaof.buffer
: Tổng kích thước của cache tệp hiện tại và ghi lại tệp chỉ bổ sungdb. 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 byteoverhead.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 Rediskeys.count
: Tổng số key được lưu trữ trong tất cả các database trên serverkeys.bytes-per-key
: Tỷ lệ sử dụng bộ nhớ ròng của server và số lượngkeys.count
dataset.bytes
: Kích thước của tập dữ liệu, tính bằng bytedataset.percentage
: Phần trăm sử dụng bộ nhớ ròng của Redis dodataset.bytes
thực hiệnpeak.percentage
: Phần trămpeak.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ụngmemory 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ậys?mmy
trùng vớisammy
,sommy
vàsqmmy
*
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ậysa*y
trùng vớisammy
,say
,sammmmmmy
vàsalmony
- 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ớisammy
vàsimmy
, nhưng không trùng vớisummy
- Để đặ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ậys[^oi]mmy
sẽ trùng vớisammy
vàsxmmy
, nhưng khôngsommy
hoặcsimmy
- Để đặ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ớisammy
,skmmy
vàsommy
, nhưng khôngsrmmy
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