Memcached FAQ(1) 一般性的问题

最后更新时间 2009-04-10 更新人 dormando@rydia.net
这里收集了经常被问到的关于memcached的问题

一般的问题

什么是memcached?
memcached是一个高性能的、分布式的、内存对象缓存系统。memcached本质上是一个通用的缓存系统,但是它通常被用来减小数据库的负载,以达到加速dynamic web应用的目的。


Dange Interactive (开发memcached的组织机构,译者注)开发memcached的目的是,加快LiveJournal.com 的速度。 LiveJournal.com 这个网站拥有大量的web server和database server,每天访问的用户数高达1百万,每天的动态网页PV高达2千万+。有了memcached,数据库就跟没事一样,其负载被大大减小。Memcached加快了动态网页的响应时间,提高了资源利用率,加快了memcached不命中时数据库的访问速度。

从哪获得memcached?
到这个下载页面 下载吧!

怎么安装memcached?
可以参考安装指南 ,也可以使用操作系统的软件包管理系统来自动下载安装(apt, yum等)。
如果您的linux发行版没有memcached,或者有了memcached但版本不够新,您还可以从源代码安装。从我们的下载页面获得源代码的tar包,然后在shell中执行以下命令:
$ tar -zxvf memcached-1.x.x.tar.gz
$ ./configure --enable-threads (如果您想使用多线程工作方式)
$ make
$ make test
$ sudo make install
您可以使用'./configure --help' 可以查看所有的选项。

哪些平台可以运行memcached?
任何有空闲内存的地方都可以!Memcached可以运行在linux、BSD、windows。它只需要很少的CPU时间,所以无论哪里有空闲内存,哪里就可以运行它。

什么情况下适合使用memcached?
如果您的网站包含了访问量很大的动态网页,因而数据库负载很高,而且大部分数据库请求都是读操作,那么memcached可以帮您显著地减小数据库负载。


Memcached同样适用在其他很多场合。至于到底适用哪些场合,您可以通读Memcached FAQ和相关的指南来获得一些灵感。如果您的数据库负载比较低但CPU使用率很高,您可以缓存计算好的结果( computed objects )和渲染后的模板(enderred templates)。通过memcached,您可以缓存session数据、临时数据以减少对他们的数据库写操作,缓存一些很小但是被频繁访问的文件, 缓存Web 'services'(非IBM宣扬的Web Services,译者注)或RSS feeds的结果...

即使您的资源(CPU、内存、数据库等,译者注)很充足,memcached至少也可以帮您加快页面的渲染速度。

什么情况下不适合适用memcached?
参见这里 。(下面也翻译这个页面)

Memcached的确很棒!但也不是每种场合都适用...

  • 对象的大小大于1MB
    • Memcached本身就不是为了处理庞大的多媒体(large media)和巨大的二进制块(streaming huge blobs)。
    • 考虑其他的条件:http://www.danga.com/mogilefs
  • key的长度大于250字符
    • 如果真的用了这么长的key,那么您什么地方可能做错了。
    • 还有,可以看看关于key长度的邮件列表。
  • 您的虚拟主机不让您运行memcached
    • 如果您的应用托管在低端的虚拟私有服务器(virtual private server, a slice of a machine)上,像vmware, xen这类虚拟化技术并不适合运行memcached。Memcached确实需要接管和控制大块的内存--如果memcached的内存被OS或 hypervisor交换出去,memcached的性能将大打折扣。
  • 您的应用运行在不安全的环境中
    • 记住,任何人仅仅通过telnet就可以访问到您的memcached。如果您的应用运行在共享的系统上,要盯紧哦!
  • 您需要持久化数据,或者说您需要的应该是database
    • 如果您仅仅期待memcached提供SQL接口,那么您可能需要重新思考一下对cache和memcached的理解。如果想对这个问题有更多的了解,庆参考下面dormando写的blog。
  • links

怎么访问memcached?

一般来说,您的应用可以使用memcached的客户端库来访问一个或多个memcached。

这个客户端页面上列出了所有可用的API库,包括Perl, C, C#, PHP, Python, Java, Ruby, PostgreSQL的存储过程及触发器。

您可以根据memcached协议 编写自己的客户端库。

怎么把memcached当成database使用?

如果您想把memcached用作数据存储媒介而不是缓存,那么您应该使用database。MySQL Cluster拥有一些与memcached类似的特性(尽管MySQL Cluster安装并不容易),而且MySQL Cluster完全可以胜任一个可靠的分布存储媒介。

能够遍历memcached中所有的item吗?

不!Memcached不支持也不计划支持这个操作。这个操作的速度相对缓慢且阻塞其他的操作(这里的缓慢时相比memcached其他的命令)。如前面所说,memcached是一个缓存,不是数据库。Tugelamemcachedb 是memcached派生出的系统,它们速度比较慢,但是行为更有点像数据库。

当然,memcached毕竟是软件,所以从某种角度说,答案最终肯定是YES。但是这个操作确实慢而且阻塞memcached。对于开发和测试服务器来说,这不是问题,但是对于99.9%的真正部署来说,答案是NO。

我们前面提到的“阻塞memcached”究竟是什么意思呢?memcached所有非调试(non-debug)命令,例如add, set, get, fulsh这些命令,无论memcached中存储了多少数据,它们的执行都只消耗常量时间。任何遍历所有item的命令执行所消耗的时间,将随着memcached中数据量的增加而增加。当其他命令因为等待(遍历所有item的命令执行完毕)而不能得到执行,阻塞就发生了。

也许您可以说,“删除我所有的key”这个命令平均只花费半秒钟,我有足够的CPU空闲时间,我隔几秒钟才执行一次这个命令,那么还有什么问题吗(还不能遍历所有的item吗)?(当然有问题)因为这半秒钟,其他的请求都至少延迟半秒钟。It'll take as long as it takes the hardware to process through that queue in order to catch up. So all of your other requests end up taking too long.

所以我们努力不做这样的事情。如果您确实需要遍历所有的item,考虑使用MySQL吧,使用主键访问数据,您还可以使用一个辅助索引加快搜索速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于PyTorch的Embedding和LSTM的自动写诗实验LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的这个代码主要是研究手写数字的识别效率,用卷积神经网络算法来实现,用的是官方手写字体数据,能够显现百分之九十以上的识别率+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
基于LSTM+CNN的自然语言处理,基于单维LSTM、多维LSTM时序预测算法和多元线性回归算法的预测模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值