memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。
memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。
memcached作为缓存文件服务,默认是操作系统里面是可以直接yum -y install memcached进行安装的。
/etc/init.d/memcached 是属于系统shell编写的管理脚本,下面这个脚本是python脚本编写出来的memcached管理脚本,和shell编写的脚本实现的效果一样。
代码如下
#!/usr/bin/python import sys import os from subprocess import Popen,PIPE class Process(object): '''memached rc script''' args = {'USER':'memcached', 'PORT':11211, 'MAXCONN':1024, 'CACHESIZE':64, 'OPTION':''} def __init__(self,name,program,workdir): self.name = name self.program = program self.workdir = workdir def _init(self): '''/var/tmp/memcached''' if not os.path.exists(self.workdir): os.mkdir(self.workdir) os.chdir(self.workdir) def _pidFile(self): '''/var/tmp/memcached/memcached.pid''' return os.path.join(self.workdir, "%s.pid" % self.name) def _writePid(self): if self.pid: with open(self._pidFile(),'w') as fd: fd.write(str(self.pid)) def _readConf(self,f): with open(f) as fd: lines = fd.readlines() return dict([ i.strip().replace('"','').split('=') for i in lines]) def _parseArgs(self): conf = self._readConf('/etc/sysconfig/memcached') if 'USER' in conf: self.args['USER'] = conf['USER'] if 'PORT' in conf: self.args['PORT'] = conf['PORT'] if 'MAXCONN' in conf: self.args['MAXCONN'] = conf['MAXCONN'] if 'CACHESIZE' in conf: self.args['CACHESIZE'] = conf['CACHESIZE'] options = ['-u',self.args['USER'], '-p',self.args['PORT'], '-m',self.args['CACHESIZE'], '-c',self.args['MAXCONN']] os.system("chown %s %s" % (self.args['USER'],self.workdir)) return options def start(self): pid = self._getPid() if pid: print "%s is running..." % self.name sys.exit() self._init() cmd = [self.program] + self._parseArgs() + ['-d','-P',self._pidFile()] p = Popen(cmd,stdout=PIPE) #self.pid = p.pid #self._writePid() print "%s start Sucessful \t\t [OK]" % self.name def _getPid(self): p = Popen(['pidof',self.name],stdout=PIPE) pid = p.stdout.read().strip() return pid def stop(self): pid = self._getPid() if pid: os.kill(int(pid),15) if os.path.exists(self._pidFile()): os.remove(self._pidFile()) print "%s is stopped \t\t\t [OK]" % self.name def restart(self): self.stop() self.start() def status(self): pid = self._getPid() if pid: print "%s is already running" % self.name else: print "%s is not running" % self.name def help(self): print "Usage:%s {start|stop|status|restart|} " % __file__ def main(): name = 'memcached' prog = '/usr/bin/memcached' args = '-u nobody -p 11211 -c 1024 -m 64' wd = '/var/tmp/memcached' pm = Process(name = name, program = prog, workdir = wd) try: cmd = sys.argv[1] except IndexError,e: print "Option error" sys.exit() if cmd == 'start': pm.start() elif cmd == 'stop': pm.stop() elif cmd == 'restart': pm.restart() elif cmd == 'status': pm.status() else: pm.help() if __name__ == '__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我有一个Gradle应用程序,我使用启动它。这工作很好,但我正在尝试部署到AWS实例(Ubuntu12),我希望脚本在引导时执行。我尝试用上面的命令编写一个startup.sh文件,但没有骰子。我还尝试将该命令添加到文件中,但这似乎也不起作用。有人能给我一个关于如何在启动时执行'./gradlew run'的想法吗?谢谢!
本文向大家介绍python脚本作为Windows服务启动代码详解,包括了python脚本作为Windows服务启动代码详解的使用技巧和注意事项,需要的朋友参考一下 我们首先来看下全部代码: 这里注意,如果你需要更改文件名,比如将win32serviceutil.HandleCommandLine(test1)中的test1更改为你的文件名,同时class也需要和你的文件名一致,否则会出现服务不能启
问题内容: 我试图使我的python脚本非常用户友好,因此我想为其提供某种帮助。您对此有何建议?我可以提出一些逻辑,即如果用户将帮助作为脚本的参数传递给他们,他们将获得帮助。是否有最佳实践或惯例? 问题答案: 使用argparse。 例如,使用 test.py : 跑步 产量
编写HTTP/1.1和HTTP/2.0脚本 有时,我们希望编写一个快速的脚本而不会遇到创建类的麻烦。addons机制具有一种速记方式,可以将模块作为一个整体视为一个addon对象。这使我们可以将事件处理程序函数放在模块作用域中。例如,下面是一个完整的脚本,它向每个请求添加标头。 def request(flow): flow.request.headers["myheader"] = "v
当想要实现一个给定协议的编解码器,我们应该花一些事件来了解它的运作原理。通常情况下,协议本身都有一些详细的记录。在这里你会发现多少细节?幸运的是 Memcached 的二进制协议可以很好的扩展。 在 RFC 中有相应的规范,可以在 https://code.google.com/p/Memcached/wiki/MemcacheBinaryProtocol 找到 。 我们不会实现 Memcache
本文向大家介绍用Python编写脚本使IE实现代理上网的教程,包括了用Python编写脚本使IE实现代理上网的教程的使用技巧和注意事项,需要的朋友参考一下 厂里上个网需要设置代理服务器,切换各种环境『包括但不仅限于开发环境、QA、预上线、验收、生产环境、压力测试、Demo……』都需要给浏览器设置不同的代理服务器。 虽然俺有神器Firefox+Change Host+HostAdmin+Proxy