
Practice Assessment for Exam AZ-204: Developing Solutions for Microsoft Azure – 017



✅ Phân tích đáp án câu hỏi
📌 Dịch câu hỏi:
Bạn có lớp GameStat
sau:
public class GameStat
{
public string Id { get; set; }
public string Sport { get; set; }
public DateTimeOffset DatePlayed { get; set; }
public string Game { get; set; }
public IReadOnlyList<string> Teams { get; set; }
public IReadOnlyList<(string team, int score)> Results { get; set; }
public GameStat(string sport, DateTimeOffset datePlayed, string game, string[] teams, IEnumerable<(string team, int score)> results)
{
Id = Guid.NewGuid().ToString();
Sport = sport;
DatePlayed = datePlayed;
Game = game;
Teams = teams.ToList();
Results = results.ToList();
}
public override string ToString()
{
return $"{Sport} {Game} played on {DatePlayed.Date.ToShortDateString()} - " +
$"{string.Join(',', Teams)}\r\n\t" +
$"{string.Join('\t', Results.Select(r => $"{r.team} - {r.score}\r\n"))}";
}
}
Câu hỏi:
Bạn cần lưu trữ thể hiện của
GameStat
trong Azure Cache for Redis.
Bạn nên sử dụng đoạn mã nào?

🔍 Các lựa chọn:
Đoạn mã | Có phù hợp không? | Giải thích |
---|---|---|
✅ Dùng JsonSerializer.Serialize(stat) để chuyển sang JSON và gọi StringSet để lưu | ✅ Đúng | Đây là cách chính xác và chuyên nghiệp nhất để lưu trữ một đối tượng trong Redis – chuyển đối tượng thành chuỗi JSON bằng System.Text.Json.JsonSerializer , sau đó lưu vào Redis qua StringSet . |
✅ Dùng stat.ToString() và lưu bằng StringSet | ✅ Đúng (chấp nhận được) | Vì lớp GameStat đã override ToString() để định dạng dữ liệu theo cách cụ thể, nên việc dùng stat.ToString() vẫn hợp lệ. Tuy nhiên, đây không phải cách tối ưu nếu cần deserialize lại sau này. |
❌ Gọi StringGet để lưu dữ liệu | ❌ Không | StringGet là hàm đọc dữ liệu từ Redis, không phải hàm ghi dữ liệu. Do đó, không dùng được trong trường hợp này. |
❌ Dùng ToString() và StringGet để ghi dữ liệu | ❌ Không | Tương tự như trên, StringGet không phải là phương thức lưu trữ – không thực hiện được thao tác ghi vào Redis. |
📘 Bổ sung từ tài liệu chính thức
Câu hỏi này kiểm tra kiến thức của thí sinh về cách triển khai lưu trữ vào bộ nhớ đệm (caching).
Các đoạn mã sử dụng phương thức
StringSet
sẽ thực hiện tuần tự hóa (serialization) và lưu nội dung của đối tượngGameStat
vào Azure Cache for Redis.Các đoạn mã sử dụng
StringGet
sẽ không thực hiện thao tác ghi dữ liệu – doStringGet
chỉ dùng để truy xuất dữ liệu từ Redis.
🔗 Nguồn tài liệu:
- Interact with Azure Cache for Redis by using .NET – Training | Microsoft Learn
- What is Azure Cache for Redis? | Microsoft Learn
✅ Kết luận:
Các đáp án chính xác là:
✅ DùngStringSet
cùng vớiJsonSerializer.Serialize(stat)
✅ DùngStringSet
cùng vớistat.ToString()

🔐 Lý do:
StringSet
là phương thức dùng để ghi dữ liệu vào Redis.JsonSerializer.Serialize()
là cách tuần tự hóa chuẩn dùng trong Redis/Cache.- Việc override
ToString()
có thể được dùng, nhưng không nên sử dụng cho các tình huống cần deserialize lại.