首页 > 解决方案 > Memcache 数据更新问题

问题描述

我需要帮助来优化 Rails 代码以更新 Memcache 数据。问题是,我以以下方式获得特定匹配的 JSON 数据并写入缓存。

match_data = {'teams' : 'Team one', 'Team two', 'score' { 'team1':0, 'team2': 1 }, time: 60 }
Rails.cache.write('match_123', match_data) #123 is match id

以上是一个非常小的匹配示例,它可以包含大量数据。

因此,匹配数据在应用程序中频繁地从服务接收,并在缓存中更新,并在前端显示。所以实际的问题是我收到了比赛更新作为响应,比如分数、时间、单独和频繁。所以我使用下面的代码来更新缓存数据。

data = Rails.cache.read('match_123')
data[:time] = 120
OR 
data[:score][:team1] = 1

Rails.cache.write('match_123', data)

我正在使用后台作业来执行上述过程。这个过程太快了,我们有多个匹配一起运行,所以在某个时刻,当我们每次在缓存中更新完整的匹配哈希以获取特定的键值更改时,这里发生了什么。那么当我们有两个队列时会发生什么,例如:

UpdateMatchCacheDataJob.perform_later(score_update)
UpdateMatchCacheDataJob.perform_later(time_update)

假设此队列一次一起运行,它将更新缓存中的时间或分数。这就是我面临的复杂性。我现在也尝试过执行这项工作,但有时会遇到问题。

UpdateMatchCacheDataJob.perform_now(score_update)
UpdateMatchCacheDataJob.perform_now(time_update)

如果我使用需要更新的特定数据而不是每次都更新完整的哈希,我的问题可能会解决。或者有没有办法更新哈希中的特定数据

注意:我使用 AWS Memcache 实例来存储缓存数据。

我希望我能解释我的问题,如果我有任何需要解释问题的地方,请告诉我。

标签: ruby-on-railsrubymemcached

解决方案


推荐阅读