# Câu hỏi thường gặp

## Cloud Memory Redis an toàn như thế nào?

### An toàn truy cập

Cloud Memory Redis chỉ cho phép "truy cập nội mạng và cách ly tài khoản". Do đó, chỉ các máy chủ đám mây thuộc cùng một tài khoản mới có thể truy cập thực thể Cloud Memory Redis.

### An toàn dữ liệu

Tất cả dữ liệu trong bộ nhớ đều được lưu trữ bền vững trên đĩa và sẽ không bị mất do sự cố dịch vụ hoặc khởi động lại, loại bỏ nhu cầu tải lại (re-warming) dữ liệu.

## Dung lượng tối đa được hỗ trợ bởi một thực thể duy nhất là bao nhiêu?

Giới hạn dung lượng của một thực thể Redis master-replica là 64GB (nếu giới hạn là 32GB, bạn cần nâng cấp lên phiên bản NVMe của Redis master-replica để tăng giới hạn dung lượng).

Giới hạn lý thuyết cho dung lượng của một thực thể Redis phân tán là không giới hạn, nhưng cần phải gửi phiếu yêu cầu hỗ trợ (work order) đối với dung lượng lớn hơn 16TB.

## Redis master-replica hỗ trợ những giao thức nào? Đó có phải là giao thức gốc không?

Redis master-replica hỗ trợ tất cả các lệnh đọc và ghi dữ liệu gốc, nhưng vì lý do bảo mật, các lệnh sau đây bị vô hiệu hóa:

```
BGREWRITEAOF BGSAVE DEBUG CONFIG SAVE SHUTDOWN SLAVEOF
```

Ngoài ra, các hạn chế cũng đã được áp dụng cho các lệnh FLUSH. Người dùng có thể xóa dữ liệu bằng FLUSHALL hoặc FLUSHDB thông qua tính năng "Dọn dẹp dữ liệu" (Data Cleanup) trên trang chi tiết thực thể của bảng điều khiển. Nếu bạn cần sử dụng lệnh này, vui lòng liên hệ với bộ phận hỗ trợ kỹ thuật.

## Proxy Redis phân tán hỗ trợ những giao thức nào? Đó có phải là giao thức gốc không?

Phiên bản phân tán của proxy Redis phù hợp cho các máy khách sử dụng phương pháp Redis máy đơn và không hỗ trợ chế độ cụm (các máy khách sử dụng chế độ cụm có thể chọn kết nối trực tiếp đến các phân mảnh back-end Redis phân tán). Nó hỗ trợ pipelining và các hoạt động đọc ghi không đồng bộ.

Các giao thức Redis hiện không được hỗ trợ bởi proxy Redis phân tán như sau (so với Redis 3.2):

```
CLUSTER KEYS MIGRATE MOVE OBJECT RANDOMKEY MSETNX BLPOP BRPOP BRPOPLPUSH PFMERGE GEOADD GEOPOS GEODIST GEORADIUS GEORADIUSBYMEMBER GEOHASH PSUBSCRIBE PUBLISH PUBSUB PUNSUBSCRIBE SUBSCRIBE UNSUBSCRIBE DISCARD EXEC MULTI UNWATCH WATCH EVAL EVALSHA SCRIPT AUTH ECHO SELECT BGREWRITEAOF BGSAVE CLIENT CONFIG DBSIZE DEBUG FLUSHALL FLUSHDB LASTSAVE MONITOR PSYNC SAVE SHUTDOWN SLAVEOF SLOWLOG SYNC TIME
```

Các giao thức được hỗ trợ một phần:

MSETNX - Không hỗ trợ các hoạt động đa khóa (multi-Key)

SORT - Không hỗ trợ tùy chọn BY và tùy chọn GET

## Các hạn chế khi sử dụng Redis phân tán là gì?

Ngoài một số giao thức nhất định không được hỗ trợ, một thực thể Redis phân tán chỉ hỗ trợ một cơ sở dữ liệu, nghĩa là chỉ lệnh select 0 mới có ý nghĩa, trong khi các lựa chọn khác không có tác dụng. Lệnh keys trong Redis rất tốn tài nguyên, vì vậy khuyến nghị nên giảm thiểu việc sử dụng lệnh này trong hoạt động kinh doanh, hoặc tìm các phương pháp thay thế. Đối với các lệnh hàng loạt như mget, mset, del, hoặc các hoạt động pipeline, khuyến nghị nên giữ kích thước lô (batch size) dưới 1000, vì vượt quá mức này có thể dẫn đến các vấn đề về độ trễ hoặc hết thời gian chờ (timeout).

## Việc hỗ trợ và cấm các lệnh cụm của Phân vùng Back-end Redis phân tán

Tương tự như cụm Redis gốc, thiết lập này hỗ trợ tất cả các hoạt động Redis tiêu chuẩn. Đối với các hoạt động trên các nút cụm, một số chức năng truy vấn nhất định—chẳng hạn như CLUSTER NODES, CLUSTER SLOTS và CLUSTER KEYSLOT—được hỗ trợ, trong khi các sửa đổi nút có thể được quản lý thông qua bảng điều khiển. Tuy nhiên, các hoạt động chéo nút, chẳng hạn như mget và keys, không được hỗ trợ.
<!-- image-todo -->

## Cloud Memory Redis đảm bảo tính khả dụng cao của dịch vụ lưu trữ như thế nào?

Một thực thể Cloud Memory Redis có hai nút lưu trữ, master và slave, đảm bảo tính nhất quán của dữ liệu thông qua đồng bộ hóa thời gian thực. Nếu nút master ngừng hoạt động, hệ thống sẽ tự động chuyển sang nút slave để tiếp tục cung cấp dịch vụ đọc-ghi.

## Điều gì xảy ra nếu Cloud Memory Redis hết dung lượng lưu trữ?

Nếu bạn sắp hết dung lượng lưu trữ, bạn nên mở rộng dung lượng. Đối với các thực thể Redis master-replica đã đạt đến dung lượng tối đa (32GB hoặc 64GB), việc di chuyển sang phiên bản NVMe của Redis master-replica hoặc Redis phân tán là cần thiết để tiếp tục mở rộng. Bạn có thể tạo một thực thể mới với các thông số kỹ thuật mong muốn, thực hiện tự di chuyển bằng DTS, hoặc liên hệ với bộ phận hỗ trợ kỹ thuật để được trợ giúp. Nếu phân vùng phụ trợ của Redis phân tán đạt đến giới hạn dung lượng, bạn sẽ cần khởi chạy tác vụ chia nhỏ phân vùng để mở rộng bằng cách chia tách.

Nếu việc mở rộng không được thực hiện kịp thời, lỗi ghi có thể xảy ra. Lưu ý: Nếu chính sách loại bỏ allkeys-lru được bật, dữ liệu có thể bị loại bỏ trong quá trình thực hiện hoạt động ghi, điều này cũng có thể dẫn đến lỗi ghi. Vui lòng đảm bảo mở rộng kịp thời khi nhận được cảnh báo để ngăn ngừa bất kỳ sự gián đoạn kinh doanh nào.

## Cần lưu ý điều gì với tính khả dụng cao của Redis master-replica?

Tính khả dụng cao của Redis master-replica dựa trên triển khai master-replica (slaveof) của Redis gốc. Do cơ chế không đồng bộ master-replica của Redis, URRedis sẽ tự động chuyển đổi trong trường hợp xảy ra sự cố. Mặc dù thời gian rất ngắn, nhưng về mặt lý thuyết, vẫn có thể có sự chênh lệch dữ liệu.

## Cơ chế viết lại tệp AOF của Redis phân tán hoạt động như thế nào?

Cơ chế viết lại AOF của mỗi phân mảnh của Redis phân tán nhất quán với cơ chế viết lại AOF của Redis master-replica.

## Giới hạn QPS của Redis phân tán là bao nhiêu?

Dữ liệu điểm chuẩn (các yêu cầu không theo lô):

Đối với kích thước khóa là 128B, kích thước giá trị là 100B, và 1000 kết nối đồng thời;

8G hai phân mảnh: QPS có thể đạt hơn 120K;

16G bốn phân mảnh: QPS có thể đạt hơn 240K;

Hiệu suất thực thể bộ nhớ và dung lượng bộ nhớ có mối quan hệ tuyến tính, một phân mảnh đơn lẻ có thể cung cấp hơn 60K QPS. Một IP đơn lẻ hỗ trợ tối đa 100K QPS, và để tăng hiệu suất vượt quá giá trị này, cần có hai hoặc nhiều IP đồng thời.

Không có giới hạn QPS cho Redis phân tán, hiệu suất và dung lượng của nó có liên quan trực tiếp, có thể mở rộng theo chiều ngang.

## Redis master-replica cung cấp bao nhiêu IP truy cập?

Redis master-replica chỉ cung cấp một IP có thể truy cập. IP này sẽ tự động di chuyển trong trường hợp xảy ra sự cố. Vui lòng không sử dụng IP của slave, vì IP này có thể mất chức năng trong trường hợp xảy ra sự cố.

## Slave của Redis master-replica có luôn cập nhật kịp thời với Master của nó không?

Bản cập nhật của Master sẽ được tự động sao chép sang Slave liên kết của nó. Tuy nhiên, do công nghệ sao chép không đồng bộ của Redis, vì nhiều lý do khác nhau, các cập nhật trên Slave có thể bị chậm trễ so với Master. Các lý do có thể bao gồm lượng ghi I/O của Master vượt quá tốc độ đồng bộ hóa của Slave hoặc độ trễ mạng giữa Master và Slave. Do đó, có thể có sự chậm trễ hoặc mức độ không nhất quán dữ liệu nhất định giữa Slave và Master tại một số thời điểm.

## Quy tắc để Cloud Memory Redis xóa dữ liệu khóa đã hết hạn là gì?

Cloud Memory Redis sử dụng hai cách để xóa các khóa đã hết hạn:

1. Hết hạn chủ động, trong đó hệ thống kiểm tra định kỳ và xóa các khóa khi tìm thấy các khóa đã hết hạn.

2. Hết hạn bị động, khi người dùng truy cập vào một khóa và khóa đó đã hết hạn, hệ thống sẽ xóa khóa đó.

## Chính sách loại bỏ dữ liệu mặc định cho Cloud Memory Redis là gì?

Redis phân tán với tiền tố umem sử dụng chính sách loại bỏ mặc định: volatile-lru, nếu bạn muốn sửa đổi, bạn cần đăng ký hoạt động phi tiêu chuẩn bằng cách gửi phiếu yêu cầu (ticket);

Redis phân tán với tiền tố udredis sử dụng chính sách loại bỏ mặc định: no-enviction, nếu bạn muốn sửa đổi, bạn cần đăng ký hoạt động phi tiêu chuẩn bằng cách gửi phiếu yêu cầu (ticket);

Redis master-replica sử dụng chính sách loại bỏ mặc định: no-enviction, người dùng có thể thay đổi chính sách này trong phần quản lý tệp trên bảng điều khiển;

volatile-lru: sử dụng thuật toán LRU để loại bỏ dữ liệu từ tập dữ liệu đã được thiết lập thời gian hết hạn.

volatile-ttl: chọn dữ liệu gần hết hạn để loại bỏ từ tập dữ liệu đã được thiết lập thời gian hết hạn.

volatile-random: chọn ngẫu nhiên dữ liệu để loại bỏ từ tập dữ liệu đã được thiết lập thời gian hết hạn.

allkeys-lru: sử dụng thuật toán LRU để loại bỏ dữ liệu từ tất cả các tập dữ liệu.

allkeys-random: chọn ngẫu nhiên bất kỳ dữ liệu nào để loại bỏ từ tập dữ liệu.

no-enviction: cấm loại bỏ dữ liệu.

## QPS của Redis master-replica là bao nhiêu?

QPS tham chiếu của Redis master-replica là 80.000. Vui lòng tham khảo tài liệu dữ liệu kiểm tra áp lực [](/docs/uredis/test) để biết giá trị QPS cụ thể. Sau khi đạt 100% tải, QPS không thể tăng thêm.

## Tại sao không có sự sụt giảm đáng kể trong bộ nhớ đã sử dụng sau khi xóa nhiều khóa trong Redis master-replica?

Mức sử dụng bộ nhớ của Redis master-replica được xác định bằng cách lấy giá trị cao hơn giữa used_memory (kích thước dữ liệu) và used_memory_rss (mức sử dụng bộ nhớ vật lý, cho biết lượng bộ nhớ được yêu cầu từ hệ điều hành; việc sử dụng thực tế có thể bao gồm các phân mảnh bộ nhớ) từ lệnh info của Redis. Thông thường, ngay cả sau khi xóa một số lượng lớn các khóa, used_memory_rss có thể giảm rất ít, mặc dù used_memory giảm tương ứng—điều này là do các chính sách quản lý bộ nhớ nội bộ của Redis. Tỷ lệ giữa used_memory_rss và used_memory được gọi là tỷ lệ phân mảnh bộ nhớ, tỷ lệ này thường ở mức dưới 150%.

Để giảm tỷ lệ phân mảnh, bạn có thể cân nhắc chạy giảm phân mảnh trực tuyến thông qua bảng điều khiển, khởi động lại Redis, hoặc tìm hiểu cách di chuyển Redis thông qua các phương pháp thay thế.

## Việc mở rộng quy mô Redis có ảnh hưởng đến các dịch vụ trực tuyến không?

Khi thực hiện nâng cấp hoặc hạ cấp dung lượng cho Redis phân tán hoặc Redis master-replica trên bảng điều khiển, việc di chuyển dữ liệu có thể được yêu cầu. Nếu việc di chuyển là cần thiết, một thông báo sẽ được hiển thị trên bảng điều khiển với các tác động tiềm ẩn như sau: Các dịch vụ Redis vẫn khả dụng trong suốt quá trình nâng cấp hoặc hạ cấp, mặc dù tải sẽ tăng lên khi quá trình đồng bộ hóa dữ liệu bắt đầu. Ngoài ra, sẽ có một sự mất kết nối ngắn khoảng 3 giây khi IP có tính khả dụng cao chuyển đổi. Khuyến nghị thực hiện các hoạt động này trong giờ thấp điểm kinh doanh bất cứ khi nào có thể.

Sau khi mở rộng quy mô Redis phân tán, back-end có thể khởi tạo việc thêm phân mảnh để tăng khả năng xử lý và cải thiện hiệu suất. Việc thêm phân mảnh diễn ra thông qua di chuyển trực tuyến, điều này có thể gây ra một chút độ trễ cho yêu cầu. Do đó, việc di chuyển này thường được lên lịch vào các giờ sáng sớm. Nếu cần di chuyển lượng dữ liệu lớn, quá trình này có thể được chia ra nhiều đêm, kéo dài một hoặc vài buổi sáng sớm, tùy thuộc vào khối lượng dữ liệu. Nếu cần di chuyển khẩn cấp, bạn có thể thông báo cho bộ phận hỗ trợ kỹ thuật. Đối với việc giảm quy mô, vui lòng liên hệ với bộ phận hỗ trợ kỹ thuật, vì hoạt động phi tiêu chuẩn này được thực hiện theo lịch hẹn dựa trên yêu cầu kinh doanh.

## Hiệu suất đồng thời kết nối ngắn của Redis master-replica như thế nào?

Hiệu suất đồng thời kết nối ngắn của Redis master-replica là khoảng 10K QPS được đo bằng công cụ redis_benchmark. Nếu dịch vụ kinh doanh của bạn yêu cầu lượng yêu cầu kết nối ngắn cao, hãy cân nhắc sử dụng Memcache độc lập.

## Redis tính toán mức sử dụng và tỷ lệ sử dụng như thế nào?

Mức sử dụng: Được tính bằng giá trị lớn nhất của used_memory (kích thước dữ liệu) và used_memory_rss (bộ nhớ vật lý bị chiếm dụng), được trả về bởi lệnh info.

Tỷ lệ sử dụng: Mức sử dụng / Dung lượng đã mua * 100%

## Cần lưu ý điều gì khi khởi động lại Redis master-replica?

Quá trình khởi động lại bắt đầu bằng việc gửi lệnh shutdown đến tiến trình Redis, tắt Redis, và sau đó đưa tiến trình Redis hoạt động trở lại. Khi khởi động lại, tiến trình Redis sẽ tải dữ liệu từ tệp AOF (Append-Only File). Đối với các thực thể Redis có dung lượng vượt quá 2GB, tệp AOF có xu hướng lớn, dẫn đến thời gian tải lâu hơn. Nếu tính năng lưu trữ bền vững AOF đã bị vô hiệu hóa trong phần quản lý cấu hình, dữ liệu sẽ bị xóa sạch sau khi khởi động lại. Vui lòng tiến hành một cách thận trọng.

## Cơ chế viết lại AOF cho Redis master-replica là gì?

| Dung lượng | Ngưỡng viết lại tự động (Kích thước AOF) | Ngưỡng viết lại thời gian vận hành (Kích thước AOF) |
| ------------| -----------------------------------  | -------------------------------------- |
| 1GB, 2GB    | 20GB                                | 5GB                                 |
| 4GB, 6GB, 8GB | 50GB                                | 10GB                                |
| 12GB, 16GB, 24GB, 32GB | 100GB                               | 40GB                                |
| 40GB, 48GB | 100GB                               | 60GB                                |
| 56GB, 64GB | 100GB                               | 70GB                                |

## Số lượng kết nối tối đa cho một Redis master-replica mới tạo là bao nhiêu?

| Dung lượng | Số lượng kết nối |
| ------------| ------------------- |
| 1GB         | 10000             |
| 2GB         | 20000             |
| 4GB, 6GB    | 30000             |
| 8GB, 12GB   | 40000             |
| 16GB, 24GB  | 50000             | 
| 32GB, 40GB, 48GB, 56GB, 64GB | 80000    |

## Các bản sao lưu có bị xóa sau khi xóa Thực thể Redis không?

Sau khi xóa thực thể Redis master-replica, các bản sao lưu (bao gồm cả sao lưu tự động và thủ công) sẽ được giữ lại trong 7 ngày và sau đó tự động được thu hồi.

## Băng thông của Redis master-replica

Băng thông lý thuyết của Redis master-replica là dưới 2Gb. Băng thông thực tế tùy thuộc vào điều kiện của máy chủ vật lý. Nếu bạn cần băng thông cao ổn định, bạn có thể cân nhắc sử dụng Redis master-replica Phiên bản Tăng cường Hiệu suất (Performance Enhanced).

## Băng thông Proxy Redis phân tán

| Số lượng Core | Giới hạn băng thông nội mạng |
| -- | -- |
| 4 core và dưới | 2Gb |
| 8 core | 4Gb |
| 16 core | 7.5Gb |
| 32 core | 15Gb |
| 64 core | 22Gb |

## Thông số kỹ thuật Proxy Redis phân tán

Các thông số kỹ thuật được hỗ trợ của proxy phân tán là: 2 core 4GB bộ nhớ, 4 core 8GB bộ nhớ, 8 core 16GB bộ nhớ, 16 core 32GB bộ nhớ, 32 core 64GB bộ nhớ, 64 core 128GB bộ nhớ.
