【问题标题】:How to cache BLOB type in Laravel如何在 Laravel 中缓存 BLOB 类型
【发布时间】:2021-06-28 04:43:33
【问题描述】:

大家好,

有没有办法在 Laravel 中临时缓存 BLOB 类型?

场景:
我将暂时缓存一些大小为 2048KB 的数据MEDIUMBLOB。 这些数据实际上是一个 16MB 的大型单个文件的一部分。 缓存所有部分后,将它们组合成一个文件,然后从缓存中删除。

每个单独部分的内容由file_get_contents函数给出。

我已经在使用MySQL 进行此操作。 (但是,有很多查询并且需要时间来完成。)

有没有更好的方法将MEDIUMBLOB数据临时存储在缓存存储中?

我在 Laravel 中遇到过 Redis 和 Cache,但我不确定它们是否支持 MEDIUMBLOB。

【问题讨论】:

  • 是的,redis 支持这个用例,但是你的问题听起来像 XY problem 可能有助于提供更多上下文,因为我怀疑有更好的方法来做你需要的事情
  • @apokryfos 感谢您的回答。那么我可以信任 Redis 来处理这些数据吗? Redis中存储数据的数据类型是什么?
  • 这将是一个简单的键值对,基本上 Cache::put('key', $data); 任何缓存驱动程序都应该工作,而不仅仅是 redis。然后,当您想删除数据时,您可以调用Cache::forget('key')(或按照here 的说明设置过期时间,以免担心删除项目)
  • @apokryfos 你救了我!据我了解,数据类型是什么并不重要。 file_get_contents 函数将内容作为字符串获取,对吗?这才是重点。非常感谢你帮助我。我不确定这个问题是否有用(如果没有,我会删除它!)。

标签: php mysql database laravel caching


【解决方案1】:

这里是重点。最后,BLOB 只是一串字节。与正式字符串类型的主要区别在于 BLOB 没有任何类型的编码或排序规则与之相关联。这是一种二进制字符串,是“通用数据”的另一种说法。 file_get_contents 通常也会返回这种“通用数据”。

Laravel 的缓存是这样构建的,因此它没有任何特定的数据类型与之关联。它只是键/值对的存储,键必须是 ascii 字符串,而值可以是任何东西 Laravel 在进入缓存之前将它们序列化,因此基本上任何可以在 PHP 中表示为变量并且可序列化的东西都可以被缓存。

【讨论】:

  • 很好解释。可以将Binary data 处理为简单的string。
猜你喜欢
  • 2020-10-08
  • 2022-01-25
  • 2018-04-09
  • 2016-02-24
  • 2018-03-13
  • 1970-01-01
  • 2020-01-18
  • 2012-12-25
  • 1970-01-01
相关资源
最近更新 更多