Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails memcached可伸缩性和高效投票统计_Ruby On Rails_Performance_Memcached - Fatal编程技术网

Ruby on rails memcached可伸缩性和高效投票统计

Ruby on rails memcached可伸缩性和高效投票统计,ruby-on-rails,performance,memcached,Ruby On Rails,Performance,Memcached,在缓存可能每秒都会过期的环境中,memcache的可伸缩性如何。事实上,我的问题不仅仅是关于memcached的可伸缩性,而是关于模型不断变化的情况,以及扩展该类型环境的最佳方式。有人可能会说,如果缓存每秒都过期,为什么要缓存呢 在一个假设的应用程序中考虑这一点,人们把标记文章列为收藏夹,让我们考虑到成千上万的人不断地标记文章的最爱,并创建一个最喜欢的记录。每次插入后,都需要更新帖子视图,以显示关于帖子的当前统计信息、有多少人喜欢它、用户喜欢的次数等 我们认为这可以缓存起来,只显示每x多分钟拍摄

在缓存可能每秒都会过期的环境中,memcache的可伸缩性如何。事实上,我的问题不仅仅是关于memcached的可伸缩性,而是关于模型不断变化的情况,以及扩展该类型环境的最佳方式。有人可能会说,如果缓存每秒都过期,为什么要缓存呢

在一个假设的应用程序中考虑这一点,人们把标记文章列为收藏夹,让我们考虑到成千上万的人不断地标记文章的最爱,并创建一个最喜欢的记录。每次插入后,都需要更新帖子视图,以显示关于帖子的当前统计信息、有多少人喜欢它、用户喜欢的次数等

我们认为这可以缓存起来,只显示每x多分钟拍摄一次的快照。但是有没有一种好方法可以让rails更加实时呢?

试试这样的算法:

  • 以+1票更新post的db记录
  • 创建缓存值| |为后fav计数更新现有缓存+1
  • 创建缓存值| |为用户fav计数更新现有缓存+1
  • 因为缓存没有事务,所以值可能与当前数据库值不一致- 可能会出现罕见的并行读写竞争情况。但这些不一致性将在缓存项失效并从数据库重新计算值时终止

    在上述场景中,缓存扫描操作可能每分钟执行一次,甚至每小时执行一次,具体取决于统计数据的准确性。请记住,您不会丢失任何东西-所有准确的数据都保存在数据库中

    这里最重要的是,用户可以看到投票的实时值变化。
    Memcached的读/写成本肯定比DB低,因为memcache只是一个没有事务的多访问散列存储。

    我建议编辑标题。”memcached和高效投票统计数据'