Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Redis中正确建模以写入单个实体但查询多个实体_Redis - Fatal编程技术网

在Redis中正确建模以写入单个实体但查询多个实体

在Redis中正确建模以写入单个实体但查询多个实体,redis,Redis,我正在尝试将Sql DB上的数据转换为Redis。为了获得更高的吞吐量,因为这是一个非常高的吞吐量。我知道持久性、存储成本等的缺点 因此,我有一个名为“Users”的表,它只有很少的列。让我们假设:身份证,姓名,电话,性别 大约90%的请求是写请求。更新一行。 大约10%的请求是读取。在每个请求中获得20行 我正试着让我的头围绕着这个正确的模型,以便最大限度地发挥它 如果只有更新,我会使用哈希。 但由于10%的阅读量,我担心这不会有效率 有什么建议吗 实际上,真正的问题是您是否需要支持部分更新

我正在尝试将Sql DB上的数据转换为Redis。为了获得更高的吞吐量,因为这是一个非常高的吞吐量。我知道持久性、存储成本等的缺点

因此,我有一个名为“Users”的表,它只有很少的列。让我们假设:身份证,姓名,电话,性别

大约90%的请求是写请求。更新一行。
大约10%的请求是读取。在每个请求中获得20行

我正试着让我的头围绕着这个正确的模型,以便最大限度地发挥它

如果只有更新,我会使用哈希。 但由于10%的阅读量,我担心这不会有效率


有什么建议吗

实际上,真正的问题是您是否需要支持部分更新

假设不需要部分更新,您可以将记录存储在与键(即字符串数据类型)关联的blob中。所有写入操作都可以在一次往返中完成,因为记录总是一次写入。使用MGET命令,也可以在一个rountrip中完成多个读取操作

现在,假设需要部分更新,您可以将记录存储在与键(即哈希数据类型)关联的字典中。所有写操作都可以在一次往返中完成(即使是部分写操作)。如果使用HGETALL命令,也可以在一次往返中执行多个读取操作


通过管道传输几个HGETALL命令比使用MGET消耗更多的CPU,但并没有那么多。就延迟而言,除了在Redis实例上每秒执行数十万个延迟之外,其他延迟应该没有太大区别。

这是一个很好的问题!我也有同样的担忧。有人对此有想法吗?“在每个请求中获得20行。”是最后20行,随机20行,特别是20行吗?将读数留给SQL数据库?是否通过redis进行写操作,并根据需要更新SQL数据库?丢失一些文字是一个问题吗?将需要一些调查和更复杂的。每次20行。视请求而定。2.我试图完全避免使用Sql。但你的方向是一个选择。3.我可以承受失去一些书面感谢。更新-一个用户发送一个关于其自身状态的更新,其中包含多个属性。(部分更新)。读取-一个用户请求大约20个用户的数据,需要他们的所有属性。大多数操作都是写操作。