2012-01-30 56 views
13

Tôi đã có một số dữ liệu dạng bảng do các vấn đề không liên quan đang chứng minh quá chậm để thoát khỏi SQL Server trong thời gian thực. Vì chúng tôi nhận được nhiều người dùng hơn, điều này sẽ chỉ tệ hơn vì vậy tôi đang nghĩ đến việc sử dụng Redis làm bộ nhớ cache kết thúc để lưu trữ dữ liệu có thể thu thập bảng của người dùng.Tôi nên sử dụng Redis làm bộ nhớ cache cho SQL Server như thế nào?

Dữ liệu này có thể trở nên cũ sau khoảng 10 phút sau thời gian đó tôi muốn đặt lại bản ghi và đặt lại trong Redis.

Ứng dụng là ứng dụng .NET MVC. Tôi đã nghĩ rằng khi người dùng đăng nhập vào ứng dụng, dữ liệu này sẽ được lấy ra khỏi cơ sở dữ liệu (mất khoảng 10 giây) và đưa vào Redis sẵn sàng để được khách hàng MVC tiêu thụ. Tôi sẽ đặt hết hạn vào dữ liệu đó và sau đó khi nó trở nên cũ, nó sẽ được lấy lại từ cơ sở dữ liệu SQL Server.

Điều này có hợp lý không? Tôi là một chút sợ hãi rằng:

  1. Người dùng có thể nhận được để trang trước khi dữ liệu được trong Redis
  2. Nếu Redis đi xuống hoặc không trả lời tôi cần phải đảm bảo rằng các ViewModel có thể được điền trực tiếp từ SQL SErver mà không có Redis ở đó
+1

Victoria, bạn có thể tìm thấy [bài đăng này] (http://www.brentozar.com/archive/2011/11/how-stackoverflow-scales-sql-server-video/) thú vị. Khoảng phút 15, ông cho thấy một cách tiếp cận có thể cho việc tích hợp Redis. – uvita

+0

cảm ơn tôi sẽ xem xét – Victoria

+1

@uvita bạn có thể thêm câu trả lời này như tôi muốn chấp nhận nó không - là giải pháp hoàn hảo mà tôi đang tìm kiếm – Victoria

Trả lời

1

Bạn có thể sử dụng một cái gì đó như MemcacheD để lưu trữ các trang đã lưu trong bộ nhớ.

Bạn có thể đặt thời hạn hiệu lực là 10 phút trên đối tượng được lưu trong bộ nhớ cache. Sau đó, bộ nhớ cache sẽ tự động xóa đối tượng.

kho thực tế của bạn sẽ phải làm các bước sau:
1. Kiểm tra bộ nhớ cache cho các dữ liệu mà bạn muốn, nếu nó là ở đó, sử dụng tuyệt vời nó
2. Nếu dữ liệu lưu trữ không tồn tại, đi đến Máy chủ SQL để truy xuất nó
3. Cập nhật bộ nhớ cache với dữ liệu được trả về từ máy chủ SQL

Tôi đã sử dụng ứng dụng Enyim trước đây. Nó hoạt động tuyệt vời. https://github.com/enyim/EnyimMemcached

Tôi cũng có thể sử dụng một cái gì đó như Quartz để lên lịch cho tác vụ nền để làm nổi bật bộ nhớ cache. http://quartznet.sourceforge.net/

+0

Tôi thích ý tưởng của bạn về Redis dưới dạng bộ nhớ cache. Việc thực hiện Redis sẽ rất giống với Memcached ... một số người nói rằng nó chỉ là nhanh hoặc nhanh hơn và nó có nhiều tính năng hơn. Tôi không thể giới thiệu nó vì tôi chưa bao giờ làm việc với nó bên ngoài một số ứng dụng demo NodeJS –

3

Tôi sẽ thực hiện việc triển khai lại ngăn xếp dịch vụ, here là tất cả các chi tiết được yêu cầu. Redis là đặc biệt tốt khi làm bộ nhớ đệm so với nosql khác. Nhưng nếu bạn đang có ứng dụng đọc cao, tôi sẽ nhấn mạnh để kiểm tra cơ sở dữ liệu nosql như là cơ sở dữ liệu kết hợp với máy chủ SQL. Điều đó sẽ giúp trong trường hợp khả năng mở rộng.

Vui lòng cho tôi biết nếu bạn có thêm bất kỳ chi tiết nào. Bạn chỉ cần bắn lệnh nuget và bạn gần như đang chạy và chạy.

Các vấn đề liên quan