2

我在 Adob​​e 社区论坛上发布了一个类似的问题,但也有人建议在这里提问。

我正在尝试缓存与特定数据库关联的不同查询,并且需要能够刷新该数据库的所有查询,同时保持其他缓存查询不变。所以我想我会利用 ColdFusion 的 ehcache 功能。我创建了一个特定的缓存区域来用于来自这个特定数据库的查询,因此我可以使用 cacheRemoveAll(myRegionName) 来刷新那些存储的查询。

由于我需要每个不同的查询都可以轻松地被缓存和检索,我想我会将查询参数散列成一个唯一的字符串,用于每个查询的缓存键。这是我迄今为止尝试过的方法:

  1. 创建一个包含参数键值对(参数名称、参数值)的结构。
  2. 使用 SerializeJSON() 将 Struct 转换为字符串。
  3. 使用 Hash() 对字符串进行散列。

这种方法有意义吗?我想知道其他人是如何处理缓存密钥生成的。此外,“MD5”算法是否足以满足此目的,它会保证唯一的密钥生成,还是我需要使用“SHA”?

4

1 回答 1

3

更新:使用cacheRegionCF10 中引入的属性!

http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html

然后您需要做的就是指定cachedAfteror cachedWithin,而忘记如何生成唯一键。CF 将通过“散列”为您完成:

  • 查询“姓名”
  • SQL 语句
  • 数据源
  • 用户名和密码
  • 数据库类型

参考: http: //www.coldfusionmuse.com/index.cfm/2010/9/19/safe.caching

我认为这将是最简单的,除非您确实需要通过键获取特定查询,否则您可以使用cacheIDCF10 中引入的另一个新属性来提供您自己的哈希。

于 2012-12-22T00:29:59.553 回答