我有以下网站:
用户输入一些数据,服务器根据这些数据生成大量结果,这些结果需要显示给用户。我正在使用php计算数据,将其存储在MySQL DB中,并通过服务器端处理将其显示在Datatables中。数据需要在有限的时间内保存 - 每隔一小时,整个表都会被删除并重新创建。
观察到的最大负载为:每天 7000 个会话/用户,一次最多 400 个用户。每小时我们在主表中插入超过 5000 万条记录。我们正在使用带有 Intel i7 和 24GB 内存、HDD 磁盘的专用服务器。
问题是当更多的人(一次> 100人)使用该站点时,MySQL无法处理负载并且MySQL +硬盘成为瓶颈。即使有几千个结果,用户也必须等待几分钟。磁盘是 HDD,目前没有放置 SSD 的选项。
问题:
用 Redis 代替 MySQL 能提高性能,能提高多少?
如何将生成的数据存储在 redis 中,以便我可以为 1 个用户检索它并按任何值对其进行排序并过滤它?
我在php中有以下数据
$user_data = array (
array("id"=>1, "session"="3124", "set"=>"set1", "int1"=>1, "int2"=>11, "int3"=>111, "int4"=>1111),
array("id"=>2, "session"="1287", "set"=>"set2", "int1"=>2, "int2"=>22, "int3"=>222, "int4"=>2222)...
)
$user_data 可以是长度从 1 到 1-2 百万的数组(我正在计算它并以 10000 的块插入数据库)
我需要为至少 400 个这样的用户存储 redis 数据,并且能够以 10/20 的块为分页检索特定用户的数据。我还需要能够按任何字段集(字符串)、int1、int2 ...(我有大约 22 个 int 字段)进行排序,并且还需要按任何整数字段进行过滤(类似于 sql WHERE 子句 9000 < int4 < 100000)。
- redis 也可以制作类似于 SQLs WHERE set LIKE '%value%' 的东西吗?