问题标签 [database-caching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
730 浏览

php - codeigniter 数据库缓存不起作用

我只是想知道,因为我对 codeigniter 数据库缓存有疑问。

我试图通过 database.php 文件启用缓存

问题是,它成功创建了缓存,我也可以使用 $this->db->cache_delete() 删除它

也没有错误。但问题是我无法从缓存中检索数据。

你们认为是什么问题..我一直在寻找互联网,但没有运气。

0 投票
1 回答
2015 浏览

php - Laravel 4 Cache::remember 永远不会返回具有给定 ID 的响应

我将 Laravel 4 与 PHP Shopify 连接器结合使用。我试图通过在首次需要时缓存特定产品页面来限制检索 Shopify 产品的调用。

我在 Laravel 中做了以下简单的路线来测试这个流程:

ShopifyLib 是我编写的用于与 Shopify 连接器通信的 PHP 库。该调用每次都会正确返回 JSON 格式的产品页面。问题是调用总是在 Shopify 外部进行,而不是从缓存中检索。

我正在使用数据库缓存并保存以下条目:

$id 永远不会改变,所以我假设每次都应该返回这个条目。

我尝试了一个更简单的示例:

这按预期工作,只调用一次非缓存,所有未来的调用都进入缓存。

0 投票
1 回答
75 浏览

php - 使用 php 文件缓存

我正在使用简单的编码创建一个 php 脚本。我对缓存知之甚少。但是听说有对象缓存,数据库缓存可以提高加载时间。

例如,我有一个示例 php 查询,如何启用数据库缓存,还请告诉我一些有关对象缓存的基础知识。

0 投票
3 回答
237 浏览

python - 如何使用派生数据在 Django 中进行数据库内存缓存?

注意: 这是一个详细的问题,询问如何使用 memcached 在我的 Web 应用程序中最好地实现和管理数据库缓存。这个问题使用 Python/Django 来说明数据模型和用法,但语言并不是那么相关。我真的对学习保持缓存一致性的最佳策略更感兴趣。Python/Django 恰好是我用来说明这个问题的语言。

我的申请规则:

  1. 我有一个 3 x 3 的整数单元格网格
  2. 这个网格的大小将来可能会增加或减少。我们的解决方案必须扩展。
  3. 它们是每行的累积分数,通过(value * Y-Coord)对该行中的每个单元格求和来计算。
  4. 它们是每列的累积分数,通过(value * X-Coord)对该列中的每个单元格求和来计算。
  5. 单元格中的值很少更改。但是这些值和分数分数经常被读取。
  6. 我想用它memcached来最小化我的数据库访问。
  7. 我想最小化/消除在我的数据库中存储重复或派生信息

下图显示了我的网格状态的示例。

在此处输入图像描述

我的代码:

所以这是我的问题:

你可以看到我已经设置了一个memcached实例。当然我知道如何在memcached. 但是鉴于我上面的代码,我应该如何正确命名键?如果键名是固定的,它将不起作用,因为每一行和每一列都必须存在单独的键。至关重要的是,当单元格中的值更新时,如何确保适当的键(并且只有适当的键)无效?

每当有人更新 Cell.values 以最小化数据库访问时,我如何管理缓存失效?没有一些 django 中间件可以为我处理这个簿记吗?我看到的文件没有这样做。

0 投票
0 回答
606 浏览

java - 用于实现 Guava Cache 和 Spring for Database 缓存的示例应用程序

首先,我对 Guava 缓存和 Spring 也完全陌生,我搜索了 50 多个站点,但找不到我想要的东西。我正在寻找使用 spring 缓存数据库值的番石榴缓存的实现。

另外,以前我已经实施Ehcache但遇到了以下问题:

  1. 它不适用于static(根据我的发现)。
  2. @Cacheable当通过非 bean 类实例调用可缓存方法时不起作用,这是类似的问题
  3. 它需要每次配置新的缓存 ( ehcache.xml)。等等都是问题。

因此,现在我正在寻找一种解决方案,guava cache如果有人可以提供带有 spring 的配置 + 实现示例,那么它可以克服障碍,而不是对我有很大的帮助。此外,如果他们有任何其他方式从数据库缓存数据,请告诉我(除了手动缓存实现,如listhashmap)。

0 投票
1 回答
2600 浏览

java - net.sf.ehcache.ObjectExistsException:已配置默认缓存

我正在使用 Spring (4.2.6.RELEASE) 和 Hibernate(5.1.0.Final)。在 spring.xml 中定义为 bean 的 Hibernate 属性。
我为二级缓存库添加了ehcache。我收到错误net.sf.ehcache.ObjectExistsException:默认缓存已在以下项目中配置。
有人帮忙吗?

***************************** applicationContext-dao.xml **************** ************************

我实现了以下 GenericDao 类。此类将实体视为通用的。

***************************** GenericDao ******************** **

在 Junit 测试类中,我这样调用插入批处理。

****************************** TestClass.java ********************* ********

***************************** ehcache.xml ****************** ****

0 投票
1 回答
42 浏览

php - Codeigniter 缓存网页与数据库。什么是顺从?

现在我刚刚开始使用 codeigniter 作为框架。我有很多数据将保存在数据库中。我阅读了有关 codeigniter 缓存系统的更多信息。而且我发现它上面有两种类型的缓存DATABASE CACHING & WEB PAGE CACHING。我的问题是,我什么时候必须使用数据库缓存?我什么时候必须使用网页缓存?

0 投票
0 回答
72 浏览

codeigniter - Codeigniter 数据库缓存与浏览器缓存冲突

我在我的 codeigniter 项目中使用 db 缓存,当我将该应用程序上传到服务器时,我使用并存储在服务器上的 db 缓存与我与 htaccess 文件一起使用的浏览器缓存之间存在一些冲突。

究竟是什么问题。当两种缓存方法都被激活时,正确显示内容会出现问题,例如,当我以访客身份浏览我的网站然后登录帐户时,它会显示在某些页面上(恰好在我作为访客浏览的那些页面上),就像我不会的那样没有登录,只有当我使用 f5 刷新网站或单击浏览器中的刷新按钮时才会更改。

所以我的问题是如何同时使用缓存(来自 ci 的 db 缓存和浏览器缓存)而不会出现显示正确内容的问题?或者也许我应该只选择一种缓存方法?

亲切的问候

0 投票
0 回答
70 浏览

json - 为什么在 Postgres 中查找 JSONB 字段会使查询时间增加 62 倍?

我正在运行一个从单个表中检索数据的简单查询。如果我只查找表中的非 JSON 字段,则查询需要 16 毫秒。如果我包含引用 JSONB 数据中的字段的字段,那么它会增加 62 倍。如果我查找两个不同的 JSONB 字段,则将其翻倍。

SELECT 子句中包含两个 JSON 字段,查询需要 2.0 秒。如果省略一个需要 1.0 秒,如果省略两个 JSON 字段,则查询只需要 16 毫秒。

该表本身有大约 700 条记录。查询返回 83 条记录。运行不同的查询我注意到在查询 2 个 JSON 字段时,返回的记录越多,完成查询所需的时间就越长(大约 0.0066 * X 1.32毫秒)。

我尝试为车辆和行程查找添加索引,但这并没有太大区别(正如预期的那样)。看起来这是对数据的实际检索,在 JSONB 字段中查找数据需要时间。现在,如果 WHERE 子句中需要 JSON 字段,那么看到这种降级会更容易理解,但事实并非如此。

一个简单的解决方案当然是将每个字段从 JSON blob 中拉出,并在表本身中为此创建单独的字段。但在我走这条路之前,还有什么可以解决这个性能问题的吗?

以下是分析的结果:

另一个有趣的观察是多次运行相同的查询,我发现缓存没有任何改进,我希望在随后的相同查询中发生这种情况。

我对股票 postgres 服务器配置所做的唯一修改是将shared_buffers128MB 增加到 256MB 并设置effective_cache_size = 1GB. 我也max_connections从 100 减少到 20。

以上结果是在8核i7处理器的Win7下运行的。还在双核 CPU 上的 Ubuntu 下进行了相同的测试,查询时间大致相同:2.2 秒(当在 SELECT 子句中包含两个 JSONB 字段时)。


更新

SELECT 子句中的单个 JSON 字段:

结果:


SELECT 子句中没有 JSON 字段:

结果:


表定义:


更新#2:

正如@Mark_M 指出的那样修复转换问题,更改json为 jsonb` 将查询时间从 2 秒减少到 300 毫秒:


这改进了很多,但仅使用非 JSON 字段查找仍然是 18 倍,但这要好得多。这是使用 JSONB 字段的合理性能损失吗?

0 投票
0 回答
346 浏览

performance - 如何提高审计表的性能?

问题

通过在每次更新时插入一个旧行和一个新行,审计触发器正在扼杀我的批量更新查询的性能。

在这个触发器中,由于某种原因,旧行的插入比插入新行需要更多的时间。

桌子

审计表有一个集群索引,3 个非集群索引,它有大约 3500 万条记录。

事实

旧行可以插入聚簇索引中的任何位置

新行将插入聚集索引的底部

调查

我测试的是 Cache 在这个操作中可以提高很多性能,但是我没有弄清楚到底需要缓存什么。

假设

我假设聚集索引是插入操作中最相关的索引。

我假设通过对聚集索引的正确页面进行查询,可以大大提高审计性能

行动

我创建了一个查询来加载与我要在操作表上插入的行相关的所有审计行。通过这样做,性能提高了 2 倍多一点,但还不够好。

为什么不够好?

我做了另一个性能更高的测试,但我没有弄清楚我到底需要缓存什么。

那次测试怎么样?

T01 - 来回测试

我从操作表中抓取 1000 行并来回更新它们,看看我是否从审计表中获得了惊人的缓存性能。

T02 - 在更新操作表时检查缓存在审计表上的对象

然后我清理了审计缓存、索引缓存和数据缓存,并再次执行 T01 - A)。

我发现集群索引页面和数据页面都加载了,并且数量大致相同,并且在其他索引中加载了剩余数量的页面。

T03 - 运行我的人工缓存加载查询时,检查缓存在审计表上的对象

然后我清理了审计缓存并运行了我的查询。与测试 T02 相比,它只加载了大约一半的页面。

我对我的人工缓存加载查询应用了什么逻辑?

我假设如果我查询审计表中的所有行,其中 GROUPID 和 USERID 存在于 1000 行中以进行更新(在操作表中),我将加载以缓存所有聚集索引和数据页,这些索引和数据页需要从审计触发器中获得出色的性能。

然而事实并非如此,因为与测试 T02 相比,我加载了一半的页面。

问题 我可以怎样做才能在第一次获得测试 T01 - C) 或 D) 的表现?我只能在预缓存数据/索引页面时想到,但我无法找出究竟缺少什么。

如果你们有其他改进审计表触发器的建议,它也很有价值。

数据库

SYBASE 15.7

注意:这是一个属于特定产品解决方案的表格,这意味着我无法随意更改它。我有一些限制。