我有一个3级张量,组成如下:
$sql = "INSERT IGNORE INTO `all`(`id`, `name`,`phone`) VALUES ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";
$result = mysqli_query($conn, $sql);
if($result)
{
echo "<script type=\"text/javascript\">alert(\"CSV File has been successfully Imported.\");
}</script>";
else {
echo "<script type=\"text/javascript\"> alert(\"Invalid File Format/ Data Please check file is csv and data as per headings.\");
}</script>";
}
索引表示 t111, t121, t131 t112, t122, t132 t113, t123, t133
T = (t211, t221, t231), (t212, t222, t232), (t213, t223, t233)
t311, t321, t331 t312, t322, t332 t313, t323, t333
。每个索引都映射到一个JSON Blob。例如,在索引t(row, column, matrix)
处,斑点可能是t322
。我想知道什么是建模数据的最佳方法,以便我可以使用Redis有效地查询此张量的子集(切片),并获取切片中包含的所有JSON Blob。
例如,在典型的查询中,我需要获取从第二行和第二列开始到第三矩阵的第三行和第三列开始的数据。使用我的符号,我想要与"{10: 1, 102:1, 88: 2}"
相匹配的数据。在此示例中,我将获取4个单元的JSON Blob(在下面表示为****)。
t(223)-t(333)
n.b。 查询将永远不会跨越矩阵(即,切片的第三个维度对于查询的开始和结束(例如 t111, t121, t131 t112, t122, t132 t113, t123, t133
T = (t211, t221, t231), (t212, t222, t232), (t213, ****, ****)
t311, t321, t331 t312, t322, t332 t313, ****, ****
)始终是相同的。
我是Redis的新手,对如何最好地对数据和查询类型建模没有很好的了解。天真地,人们可以仅以t(xx1)-t(xx1), or t(xx2)-t(xx2), or t(xx3)-t(xx3)
的形式构建键,并以JSON blob作为值,然后发出一堆GET命令来返回匹配的单元格,但是我想知道是否有一种更有效的方法使用t(xxx)
还是设置交集?在幼稚的方法中,我的密钥空间的基数是〜1M个密钥。
任何人都可以提供帮助吗?谢谢。