Sql 服务器内存 table 使用 Redis 实现

Sql Server In-memory table implemented with Redis

从SqlServer 2014 开始,Microsoft 实现了内存中 OLTP,IMO 是一个非常有趣的功能! 我从未尝试过,但我很感兴趣,因为它确实可以加快我的 "READ" 操作(我的意思是 select 查询)。

我的想法是运行 "WRITE" 直接对磁盘(而不是内存)执行操作(插入、更新、删除),以确保数据持久写入。 相反 "READ" 操作(特别是对大 tables 的查询,Application_Startup 处的计数器,ecc)将在内存中完成。

现在我有一些问题: 1) 内存中 table 是否以某种方式与保存在磁盘中的数据同步?

2)我上面写的可以实现还是我理解错了?

3) 因为Sql Server 2016 的企业版对于初创公司或小公司来说成本太高,是否可以使用Redis 实现所有这些? 我也是 Redis 的新手,我不确定它是否具有 "in-memory" table 功能。 在 Google 上搜索我发现它做了一个缓存(它不清楚什么,查询?)并且它是一个内存数据结构存储(键值对)

提前谢谢大家

回答你的第一个和第二个问题:

In-Memory in SQL Server 2016 可以通过两种方式创建,一种是使用 Schema Only - 这意味着数据是易变的并且只保留在内存中

CREATE TABLE TestInMem (
i int,...<columns>
)
WITH (MEMORY_OPTIMIZED = ON,
          DURABILITY = SCHEMA_ONLY);

另一种方式是架构和数据 - 两者都将定期保存到辅助存储中,您的操作会更快,因为您将直接访问主内存来访问数据。

CREATE TABLE TestInMem (
i int,...<columns>
)WITH (MEMORY_OPTIMIZED = ON,
          DURABILITY = SCHEMA_AND_DATA);

https://msdn.microsoft.com/en-us/library/dn133186.aspx

关于第三个问题:

你不能直接在 redis 中强加 sql 查询。 Redis 不是那样工作的。相反,它具有集合、排序集合、哈希映射等结构,您可以使用它们并尝试实现等效查询,但绝对不是简单的方法,并且永远不会实现 sql 提供的一切。例如,复杂的连接、分组依据、排序依据可能需要超过 5 或 6 个操作,前提是您完美地存储它们并选择最佳检索方式。