- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在使用Dalli直到现在缓存,今天我遇到了Redis -Store .
我想知道我是否应该切换到 redisstore。我的应用程序已经将 redis 用于某些东西,所以我有一个相当大的 redis 服务器(就资源而言),我还有另一个 memcached 服务器。因此,如果我在哪里切换到 redis-store,这意味着我可以删除 memcached 服务器(更少的服务器维护 + 更少的成本)。
有没有人比较过这两种解决方案。
最佳答案
Redis 可以用作缓存或永久存储,但如果您尝试将两者混合使用,最终可能会遇到“有趣的问题”。
当你有 memcached 时,你有最大的进程内存量,所以当 memcached 变满时,它会自动删除最近最少使用的条目,为新条目腾出空间。
您也可以将 Redis 配置为具有该行为,但如果您将 Redis 用于持久存储,则您不希望这样做,因为在这种情况下,您可能会丢失本应具有持久性的 key 。
因此,如果您为 Redis 使用持久存储,则需要有两个不同的 Redis 进程:一个用于持久键,一个用于缓存。当然,您始终可以只有一个进程并为每个缓存项设置过期时间,但没有人会向您保证在它们过期之前不会达到内存限制并且您会丢失数据,因此实际上您需要两个进程。此外,如果您为持久数据设置主/从配置,并将缓存存储在同一台服务器上,那么您基本上是在浪费 RAM,因此需要单独的进程。
关于性能,redis 和 memcached 的性能都非常好,在不同的测试中,它们在获取/提取数据方面处于同一范围内,但是当您只需要缓存时,memcached 更好。
为什么会这样?首先,由于 memcached 只有一个任务,即存储键/值,因此在存储元数据方面没有任何开销。另一方面,Redis 提供不同的数据结构,因此它存储每个键的更多元数据。这方面的一个例子:将数据存储在 Redis 中的散列上而不是使用单独的键要“便宜”得多。你不会在 memcached 上得到任何这些,因为只有一种类型的数据。这意味着在你的服务器内存量相同的情况下,你可以在 memcached 上存储比在 redis 上更多的数据。如果你有一个相对较小的安装,你并不真正关心,但当你开始看到增长时,相信我,你会想要控制这些数据。
因此,尽管我喜欢 Redis,但我更喜欢使用 memcached 来满足我的缓存需求,而使用 redis 来满足我的持久存储/临时存储/队列需求。我仍然将 Redis 用作“缓存”,但不是一个过期的临时缓存,而是用作查找缓存以保存从更昂贵的存储中读取数据。例如,我在 Redis 上保留了用户 ID 和昵称之间的映射。我从不使这些映射过期,因此 Redis 是一个完美的地方。
如果您处理的是少量数据,那么采用单一技术处理所有数据的想法可能是合理的,但是当您开始增长超过数百 MB 时,我会建议同时使用这两种技术
关于ruby-on-rails - Dalli vs Redis-Store for Rails App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076902/
我一直在尝试将 Redux 集成到项目中。 我按照使用示例进行操作,但收到错误store.getState is not a function。 所以我知道其他人也问过类似的问题,但情况略有不同。 R
我正在尝试将我的第一个应用程序上传到 App Store。我已完成 iTunes Connect 所需的所有步骤,我的应用程序状态为“等待上传”。 我相信下一步是使用 Application Load
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
App Store 有所谓的“服务器到服务器”通知。也就是说,当您购买应用内功能时,Apple 服务器会向您服务器的回调方法(发送收据数据)发出 HTTPS 请求。 问题是 - 收据数据中似乎没有用户
我已经将我的第一个应用程序上载到App Store,但是我没有放置我的App需要位置服务和wifi的UIRequiredDeviceCapabilities。结果:该应用程序没有像应做的那样开始寻找坐
由于iOS 8将于本月发布,并且我的应用仅支持32位(因为第3个库仅兼容32位),因此我不确定如果我将新版本的应用提交给我,则该应用的新版本是否会被拒绝App Store将于下个月发布,因为它不支持6
我有一个让我有些困惑的问题。 为了将我的应用提交到App Store,我必须输入Bundle ID后缀。如您所知,Bundle ID会获得Bundle ID后缀的确切名称(您在Bundle ID后缀上
如问题所述,我想知道更新后的应用程序一旦获得批准,是否会自动发布到应用程序商店中? 我的更新已完成并且已经过测试,由于需要几天的时间才能批准,因此我希望现在将其提交批准。同时,我需要在服务器上更改一些
获取应用程序提交到 Apple App Store 的屏幕截图的最简单方法是什么,需要包含的各种尺寸是多少? 另外,是否允许状态栏?我相信我听说它不是,但是包括 Facebook 和 Quora 在内
我在 iTunes 商店中有一个应用程序,其分发证书(在 key 链访问中)将于明天到期。它是一年前生成的,尽管我最近更新了我的 iPhone 开发者计划,但我还没有更新任何证书或签名。 当我将测试设
我的商店包含以下 reducer : export const centralStampState = { layoutState : layoutReducer, //this one is n
我即将将我的应用程序提交到 Apple App Store,并且我了解到 Apple 需要两周时间才能对其进行审核,然后才能上线。但是,在 iTunes Connect 的定价部分,它询问我什么时候发
如果我的应用程序正在接受审核或已获得批准(因此处于 Ready For Sale 状态或同等状态),我可以编辑哪些应用程序信息而无需提交应用程序的新版本? 最佳答案 据此Apple Documenta
我已经在Opera管理控制台上进行了全面检查,看不到他们在哪里提到付款方式。他们说明何时制作,但没有说明。即Paypal,Cheque等。 有人知道他们如何付款吗? 最佳答案 当金额达到200美元时,
我上传了我的二进制文件并创建了屏幕截图。我做的所有屏幕截图都是 640x960,我将它们上传为 PNG。这背后的想法是,我应该以尽可能最好的质量把它交给他们,这样当他们将它们重新压缩成 320x480
我从Microsoft下载了Windows 8 app samples,并下载了这些示例之一加速度传感器示例 我不知道如何测试它以计划使用此功能的软件? 我没有水面设备,想知道只有一种方法可以做到吗?
我正在为TestFlight上传第二个应用程序。第一次进展顺利,但这次却被拒绝了。 We have started the review of your beta app, but we are no
不确定这是正确的论坛,如果不是,我提前道歉。 某处是否有 App Store 新版本的提要?还是带有类别和发布日期的应用提要/列表? 此列表已从 App Store 中消失,我想看看是否可以制作一个应
我有一个 JSON 存储,定义如下 var subAccountStore = new Ext.data.JsonStore({ autoLoad: true, proxy: { ty
我有一个提交到应用商店的应用被拒绝,原因是: 2.30 不符合 Mac OS X 文件系统文档的应用将被拒绝 他们声称我的应用正在修改不受支持的 ~/Library/Preferences/com.a
我是一名优秀的程序员,十分优秀!