Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails是否优雅地处理缓存存储中断(memcached)?

Rails是否优雅地处理缓存存储中断(memcached)?
EN

Stack Overflow用户
提问于 2014-12-20 20:06:46
回答 1查看 1.3K关注 0票数 6

我感兴趣的是使用https://github.com/kickstarter/rack-attack来控制滥用者和野蛮的攻击者。我的应用程序运行在多个dynos上,因此我设想Rails默认的FileStore并不完全有效,因为每个dyno都有一个文件系统,而节流需要两者的总和。

如果我要为Rails.cache使用memcached插件服务,那么如果memcached服务出现故障(例如,对FileStore),那么Rails中是否有内置的“后备”?

如果不是,随着memcached服务的中断,rails应用程序会崩溃还是变得用户无法访问(vs会优雅地处理错误)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-02 10:14:10

我是“机架攻击”的作者。

tl;dr:当缓存后端(memcached或redis)关闭时,所有请求都被允许(即失败打开)。

这实际上取决于Rails缓存的功能。Dalli客户端(ActiveSupport::Cache::DalliStore)和Redis (ActiveSupport::Cache::RedisStore)拯救连接错误和超时以返回nil

当齿条攻击查询缓存存储的节流值时,缓存存储将返回nil。机架攻击施放to_i以获得0。由于您的节气门限制是> 0,请求是允许的。

当memcached/redis不可用时,在每个提交测试上运行齿条攻击有集成测试,测试是否会引发错误并允许请求。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27586643

复制
相关文章
Memcached缓存
memcached是应用较广的开源分布式缓存产品之一,它本身其实不提供分布式解决方案。 在服务端,memcached集群环境实际就是一个个memcached服务器的堆积,环境搭建较为简单。 cache的分布式主要是在客户端实现,通过客户端的路由处理来达到分布式解决方案 客户端做路由的原理非常简单: 应用服务器在每次存取某key的value时,通过某种算法把key映射到某台memcached服务器nodeA上,因此这个key所有操作都在nodeA上
JavaEdge
2021/02/23
5750
Memcached缓存
MemcacheD 缓存是否启用成功及命中率检查
之前写过文章提到在 lnmp 环境中如何安装并启用 memcached 缓存,及对 wordpress 加速的直观效果。今天说一下如何检查是否启用 MemcacheD 缓存成功及命中率检查。 今天的文
魏艾斯博客www.vpsss.net
2018/06/01
2.8K3
缓存之Memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
菲宇
2019/06/13
4760
wordpress配置Memcached缓存
WordPress用Memcached缓存也已经半年之久了。对博客的访问速度提升还是很明显的。之前写过一篇文章介绍Memcached缓存以及如何部署(通过WPJAM Basic插件实现)
AlexTao
2019/07/16
3.4K0
wordpress配置Memcached缓存
Angular 实践:如何优雅地发起和处理请求
Tips: 本文实现重度依赖 ObservableInput,灵感来自同事 @Mengqi Zhang 实现的 asyncData 指令,但之前没有 ObservableInput 的装饰器,处理响应 Input 变更相对麻烦一些,所以这里使用 ObservableInput 重新实现。
灵雀云
2020/02/26
8670
Angular 实践:如何优雅地发起和处理请求
memcached分布式缓存
  memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。Memcache集群主机不能够相互通信传输数据,它的“分布式”是基于客户端的程序逻辑算法进一步实现的。
那一叶随风
2018/08/22
1K0
memcached分布式缓存
memcached架构及缓存策略
----------------------------------------概述----------------------------------------
星哥玩云
2022/07/26
6940
memcached架构及缓存策略
memcached缓存知识简单梳理
memcached工作原理 基本概念:slab,page,chunk。 slab,是一个逻辑概念。它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同slab有不同的chunk size。具体分配多少个slab由参数 -f (增长因子)和 -n (chunk最小尺寸)决定的。 page,可以理解为内存页。大小固定为1m。slab会在存储请求时向系统申请page,并将page按chunk size进行切割。 chunk,是保存用户数据的最小单位。用户数据it
洗尽了浮华
2018/01/23
1.1K0
优雅地烘焙 Retrofit
将构造 Retrofit 时所需要的材料隔离开来,利用依赖倒置这个原则,优雅地烘烤出美味的 Retrofit 实例。
HelloVass
2018/09/12
5910
优雅地烘焙 Retrofit
Spring Boot:使用Memcached缓存
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached基于内存的key-value存储,用来存储小块的任意数据,这些数据可以是数据库调用、API调用或者是页面渲染的结果。通过Memcached缓存数据库查询结果,可以有效地减少数据库访问次数,进而提高动态Web应用的速度。虽然Memcached的守护进程是用C写的,但是客户端可以用任何语言来编写,并通过Memcached协议与守护进程进行通信。
朝雨忆轻尘
2019/07/03
1.7K0
Spring Boot:使用Memcached缓存
手动清除memcached缓存方法[通俗易懂]
1.查memcache状态 /usr/bin/perl /usr/local/src/memcached-1.4.5/scripts/memcached-tool localhost:11211 或者 telnet localhost 11211
全栈程序员站长
2022/07/11
1.8K0
SpringBoot:如何优雅地进行响应数据封装、异常处理?
越来越多的项目开始基于前后端分离的模式进行开发,这对后端接口的报文格式便有了一定的要求。通常,我们会采用JSON格式作为前后端交换数据格式,从而减少沟通成本等。
程序新视界
2022/09/19
1.9K0
Docker: 优雅地部署
在我去年的一篇博客自动化的高效团队开发环境提到了用vagrant来统一开发团队的开发环境。用vagrant基本上解决了开发环境异构的问题,但VM(vagrant使用virtual box)footpr
tyrchen
2018/03/28
8370
Docker: 优雅地部署
优雅地使用 PyCharm
0.0 前言 昨天教了大家安装和使用PyCharm 后,有朋友留言说 PyCharm 使用的语言是英文,看得头晕,该怎么设置成中文。那我今天就写一个教程,教大家设置成中文,优雅的使用 PyCharm
伪君子
2018/04/04
4.8K0
优雅地使用 PyCharm
优雅地烘焙 DBService
记得大二那年第一次接触 GreenDao 这个神奇的数据库,惊叹道,哇,原来代码还能这么写啊,不用自己手撸 SQLiteDatabase,不用写那些麻烦的 SQL 语句,编程还真是一件 “轻松” 的事情呢2333。然而,时隔多年,当我再次看到自己曾经留在项目里的那段代码时,相顾无言,惟有泪千行…
HelloVass
2018/09/12
7110
优雅地烘焙 DBService
python优雅地爬虫
我需要获得新闻,然后tts,在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路:获得html内容-> python的工具库解析,获得元素中的内容,完成。
shigen
2023/08/08
1410
Linux中断处理
由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux对中断的处理过程。
用户7686797
2020/08/25
6.7K0
Memcached·Redis缓存的基本操作
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信
Wyc
2018/09/11
1.2K0
Memcached·Redis缓存的基本操作
springboot快速整合Memcached缓存技术
memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。它通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用速度,提高扩展性。Memcached的API使用32位元的循环冗杂校验计算键值后,将资料分散在不同机器上。当表格慢了以后,接下来新增的资料会以LRU机制替换掉。Memcached基于一个存储键值对的hashmap,其守护线程是用C语言写的,但是客户端可以用任何语言来编写,并通过Memcached协议与守护线程通信
一个风轻云淡
2023/10/15
2090
springboot快速整合Memcached缓存技术
点击加载更多

相似问题

Rails Memcached缓存

10

Rails优雅地存储文本元数据

11

Memcached和Rails片段缓存问题

20

Rails中用于片段缓存的Memcached

12

memcached中简陋的http缓存存储

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文