Php Redis—存储然后获取大数据的最佳数据结构

Php Redis—存储然后获取大数据的最佳数据结构,php,laravel,redis,Php,Laravel,Redis,我最近在我的一个Laravel项目中实现了Redis。它目前更多的是一个技术练习,而不是生产,因为我想看看它能做什么 我所做的是创建一个支付交易列表。我推到列表中的是每次处理事务时从webhook接收的有效负载。有效负载本质上是一个对象,包含与该特定事务相关的所有信息 我创建了一个VueJS前端,它将显示表中的所有数据,并具有分页功能,因此一次显示10行 最初这是超快速的,但是现在列表包含30000行,大约11MB的数据,请求大约需要11s 我认为这里的问题是,我正在使用一个列表,并且正在使用L

我最近在我的一个Laravel项目中实现了Redis。它目前更多的是一个技术练习,而不是生产,因为我想看看它能做什么

我所做的是创建一个支付交易列表。我推到列表中的是每次处理事务时从webhook接收的有效负载。有效负载本质上是一个对象,包含与该特定事务相关的所有信息

我创建了一个VueJS前端,它将显示表中的所有数据,并具有分页功能,因此一次显示10行

最初这是超快速的,但是现在列表包含30000行,大约11MB的数据,请求大约需要11s

我认为这里的问题是,我正在使用一个列表,并且正在使用LRANGE从列表中获取所有行

我之所以使用列表,是因为它有LPUSH命令,所以最新的事务会转到列表的开头

我决定做一个测试,从列表中获取所有数据并将值输出到一个空白页,这花费了大约相同的时间,因此Vue、Axios等都没有问题

首先,这个读取速度正常吗?我一直听说Redis的速度很快

第二,在使用Redis时,有没有更好的方法来提高读取性能

第三,我是否使用了错误的数据类型

最终,我需要能够存储100万行数据。

在我看来:

  • 首先:正如你所知,Redis的速度非常快。因为Redis数据总是在内存中,所以您可以说读取关于使用11s的11MB数据,您可以检查您的带宽
  • 第二:很抱歉,我不知道如何增加这个环境
  • 第三:我认为你的选择可以

所以,您可以先检查带宽(redis服务器)。

因为我意识到,在任何事务更新中都会得到所有30000行,然后在前端对其进行分页。在我看来,真正的策略是在每个请求中获得更轻的数据包。
例如,根据您的请求使用Laravel分页。

请使用国际认可的SI单位前缀
MB=MB
MB=millibit
@MarkSetchell millibit不存在<代码>[位(b)](https://en.wikipedia.org/wiki/Bit)是最小的、基本的度量标准,你不能把一点划分成更小的部分。@Tpojka我就是这么说的。原始帖子中使用了术语
mb
,我的意思是
m
milli
的SI前缀,
b
是位的SI单位,因此它会指定millibits,无论这种东西是否存在。我对Redis没有太多经验,但您可以查看现有的包以及它们是如何实现的。例如,Horizon似乎对有效负载使用hashmap,对带有TTL的键使用排序集。看看他们的网站。即使有很多元素(100k+),感觉也相当快(您会说:'最初这工作速度非常快,但现在列表包含30000行,大约11mb的数据,请求大约需要11s。'我想知道11s是读取30000行数据还是10行数据?当我有大约5000行数据时,它工作速度很快,但现在从列表中提取所有30000行数据需要11sRedis。10行正是VueJS前端显示的内容。该表具有分页功能,因此您可以一次浏览所有数据10行。我只是不想让人们认为我试图一次显示30k行。@Dally是否使用LRANGE命令一次获取30000行数据?如果为真,我认为您可以使用LLEN获取数据计数并获取10行数据马上去。