我应该如何使用Redis作为SQL Server的缓存?

时间:2012-01-30 20:36:22

标签: sql-server asp.net-mvc redis

我有一些表格数据,由于无关的问题导致实时退出SQL Server太慢。随着我们获得更多用户,这只会变得更糟,所以我在考虑使用Redis作为前端缓存来存储用户的表格可分页数据。

这个数据在大约10分钟后可能会变得陈旧,之后我想再次获得记录集并放入Redis。

该应用程序是一个.NET MVC应用程序。我在想,当用户登录到应用程序时,这些数据会从数据库中拉出(大约需要10秒钟)并放入​​Redis准备好供MVC客户端使用。我会对该数据进行过期,然后当它变得陈旧时,它将从SQL Server数据库中重新获取。

这一切听起来合理吗?我有点害怕:

  1. 用户可以在数据进入Redis之前访问该页面
  2. 如果Redis出现故障或没有响应,我需要确保ViewModel可以直接从SQL SErver填充而不使用Redis

2 个答案:

答案 0 :(得分:3)

我将使用Service stack redis实现,here是所需的全部细节。与其他nosql相比,Redis在进行缓存时特别好。但是如果你有很高的读写应用程序,我会坚持将nosql数据库作为数据库与SQL服务器结合使用。这将有助于扩展性。

如果需要进一步的详细信息,请与我们联系。你只需要激活nuget命令,你几乎已经启动并运行了。

答案 1 :(得分:1)

您可以使用MemcacheD之类的​​东西在内存中存储缓存页面。

您可以在缓存对象上设置10分钟的有效期。之后,缓存将自动删除该对象。

您的实际存储库必须执行以下步骤:
1.检查缓存中是否有您想要的数据,如果有,请使用它 2.如果缓存的数据不存在,请转到SQL服务器检索它 3.使用从SQL Server返回的数据

更新缓存

我之前使用过Enyim客户端。它很棒。 https://github.com/enyim/EnyimMemcached

我也可能会使用像Quartz这样的东西来安排后台任务来填充缓存。 http://quartznet.sourceforge.net/