1、安装

yum install memcached
easy_install python-memcached

2、操作memcached

import memcache
mc = memcache.Client(['127.0.0.1:12000'],debug=True)
mc.set('name','luo',60)
print mc.get('name')
mc.delete('name') 

3、监控脚本

"""
Server Density Agent Plugin for memcached
This script requires a config entry in the agent config
[Memcached]
host = '127.0.0.1'
port = 12000
""" import sys
import telnetlib
import re
import socket
import logging
import json
import time class Memcached:
def __init__(self, agentConfig, checksLogger, rawConfig):
self.agentConfig = agentConfig
self.checksLogger = checksLogger
self.rawConfig = rawConfig def run(self):
stats = {} if hasattr(self.rawConfig['Memcached'], 'host'):
host = self.rawConfig['Memcached']['host']
else:
host = '127.0.0.1' if hasattr(self.rawConfig['Memcached'], 'port'):
port = self.rawConfig['Memcached']['port']
else:
port = 12000 try:
telnet = telnetlib.Telnet()
telnet.open(host, port)
telnet.write('stats\r\n') out = telnet.read_until("END") telnet.write('quit\r\n')
telnet.close()
except socket.error, reason:
sys.stderr.write("%s\n" % reason)
sys.stderr.write("Is memcached running?\n")
sys.stderr.write("Host: %s Port: %s\n" % (host, port))
return stats # Current / Total
stats['curr_items'] = int(re.search("curr_items (\d+)", out).group(1))
stats['total_items'] = int(re.search("total_items (\d+)", out).group(1)) # Memory Usgae
stats['limit_maxbytes'] = int(re.search("limit_maxbytes (\d+)", out).group(1))
stats['bytes'] = int(re.search("bytes (\d+)", out).group(1)) # Network Traffic
stats['bytes_read'] = int(re.search("bytes_read (\d+)", out).group(1))
stats['bytes_written'] = int(re.search("bytes_written (\d+)", out).group(1)) # Connections
stats['curr_connections'] = int(re.search("curr_connections (\d+)", out).group(1))
stats['total_connections'] = int(re.search("total_connections (\d+)", out).group(1)) # Hits / Misses
stats['cmd_get'] = int(re.search("cmd_get (\d+)", out).group(1))
stats['cmd_set'] = int(re.search("cmd_set (\d+)", out).group(1))
stats['get_hits'] = int(re.search("get_hits (\d+)", out).group(1))
stats['get_misses'] = int(re.search("get_misses (\d+)", out).group(1))
stats['delete_hits'] = int(re.search("delete_hits (\d+)", out).group(1))
stats['delete_misses'] = int(re.search("delete_misses (\d+)", out).group(1))
stats['incr_hits'] = int(re.search("incr_hits (\d+)", out).group(1))
stats['decr_hits'] = int(re.search("decr_hits (\d+)", out).group(1))
stats['incr_misses'] = int(re.search("incr_misses (\d+)", out).group(1))
stats['decr_misses'] = int(re.search("decr_misses (\d+)", out).group(1)) # Evictions
stats['evictions'] = int(re.search("evictions (\d+)", out).group(1))
stats['reclaimed'] = int(re.search("reclaimed (\d+)", out).group(1)) return stats if __name__ == '__main__':
"""
Standalone test configuration
"""
raw_agent_config = {
'Memcached': {
'host': '127.0.0.1',
'port': 12000,
}
} main_checks_logger = logging.getLogger('Memcached')
main_checks_logger.setLevel(logging.DEBUG)
main_checks_logger.addHandler(logging.StreamHandler(sys.stdout))
host_check = Memcached({}, main_checks_logger, raw_agent_config) while True:
try:
print json.dumps(host_check.run(), indent=4, sort_keys=True)
except:
main_checks_logger.exception("Unhandled exception")
finally:
time.sleep(60)

可以把记录写入日志文件,用gnuplot或者rrdtool绘成图片会更好

4、压力测试脚本

#!/usr/bin/python2
import memcache
import time
def test_set():
m = memcache.Client(['127.0.0.1:12000'],debug=True)
for i in range(100000):
m.set('name'+ str(i) ,'problem'+str(i),5000)
return def test_get():
m = memcache.Client(['127.0.0.1:12000'],debug=True)
for i in range(100000):
m.get('name'+ str(i))
return
def test_delete():
m = memcache.Client(['127.0.0.1:12000'],debug=True)
for i in range(100000):
m.delete('name'+ str(i))
return
def bench(desc):
start=time.clock()
desc()
stop=time.clock()
diff=stop-start
print "%s has token %s" % (desc.func_name,str(diff))
if __name__=='__main__':
bench(test_set)
bench(test_get)
#bench(test_delete)

10W次读取需要1s多,读取也是1s多 ,5-6W QPS问题不大

使用Python操作Memcached的更多相关文章

  1. python操作memcached以及分布式

    memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件.现在已成为 mixi.Facebook.Live ...

  2. Python操作memcached及redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  3. Python之路第十一天,高级(3)-Python操作 Memcached、Redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  4. python操作----Memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  5. python 操作Memcached

    启动Memcached memcached -d -m 10 -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid 参数说明: -d ...

  6. Python操作Memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  7. Python自动化开发 - Python操作Memcached、Redis、RabbitMQ

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  8. Python操作——Memcached

    Memcached是一个高性能的分布式内存对象缓存系统,用于Web应用以减轻数据库的负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memcached ...

  9. Python操作Memcached使用Python-memcached模块

    安装Python的memcached驱动模块 pip install python-memcached 简单的操作示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/ ...

随机推荐

  1. Spring 反射注入+全注解注入

    Spring IoC容器会先把所有的Bean都进行实例化,不管是要用到的火鼠用不到的,如果你想暂时不进行Bean的实例化,要用到属性lazy-init="true". Spring ...

  2. jstl 处理字符串函数 substring spli等

    在jstl中的fn标签也是我们在网页设计中经常要用到的很关键的标签,在使用的时候要先加上头 <%@ taglib uri="http://java.sun.com/jsp/jstl/f ...

  3. Java按键事件KeyEvent

    按键事件可以利用键盘来控制和执行一些动作,或者从键盘上获取输入,只要按下,释放一个键或者在一个组件上敲击,就会触发按键事件.KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值. ...

  4. 系列文章 -- OpenCV入门教程

     <OpenCV3编程入门>内容简介&勘误&配套源代码下载 [OpenCV入门教程之十八]OpenCV仿射变换 & SURF特征点描述合辑 [OpenCV入门教程之 ...

  5. windows server 2008 远程桌面(授权、普通用户登录)~ .

    大家好,因公司上ERP系统,用户端需要远程到服务器,但大家都知道微软默认只有2个,所以没有办法达到我公司的要求. 在网上找了很久也没有找到合适的文章,要不就这里说一点,那里说一点,没有一个全的,还有很 ...

  6. 基于Packet Tracer 组建智能公司局域网

    背景及要求                                                                                               ...

  7. DFA 算法实现关键词匹配

    起因: 从网页中爬去的页面.须要推断是否跟预设的关键词匹配(是否包括预设的关键词),并返回全部匹配到的关键词 . 眼下pypi 上两个实现 ahocorasick https://pypi.pytho ...

  8. STL - 容器 - Map(一)

    MapTest.cpp #include <map> #include <string> #include <iostream> #include <algo ...

  9. Linux下时间格式转换及获取方法

    Linux下使用clock_gettime给程序计时 #include <stdio.h> #include <unistd.h> #include <stdlib.h& ...

  10. wepy - Cannot read property 'Promise' of undefined

    正当我们准备试探示例时,突然.... 造成这个错误有两个原因 (wepy以前的版本默认启动了Promise,自1.4.x以后需要手动开启) 1.未下载Promise 详情见启用文档:Promise   ...