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. SQL:(转)数据库中的锁机制(数据库中有哪些锁)

    数据库中的锁机制 锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数 据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统 ...

  2. VirtualBox虚拟机内的系统时间无法调整的解决方法

    VirtualBox虚拟机内的系统时间无法调整的解决方法   因试用某软件要求将系统时间设置在特定的日期,利用windows自带的调整日期/时间功能进行设置,发现过几秒钟就又恢复到和主机相同的时间了, ...

  3. 使用Artful MySQL模块出错

    总是报错: root@gitlab:/opt# newlisp newLISP v.10.6.0 64-bit on Linux IPv4/6 UTF-8 libffi, options: newli ...

  4. Git 学习(五)远程仓库

    Git 学习(五)远程仓库 之前的章节所说的是本地Git仓库的操作,版本管理的优越性显然不会仅仅在本地.远程仓库也就是服务器或是网络端的仓库操作也是必须的. 本文具体说明 Git 的远程仓库操作,示例 ...

  5. 第八章 ArrayBlockingQueue源码解析

    注意:在阅读本文之前或在阅读的过程中,需要用到ReentrantLock,内容见<第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()><第六章 Reen ...

  6. N-Queens II leetcode java

    题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...

  7. JQuery缓冲加载图片插件lazyload.js的使用方法

    lazyload.js是一个基于JQuery的插件,可以用来缓冲加载图片.如果一个网页很长并且有很多图片的话,下载图片就需要很多时间,那么就会影响整个网页的加载速度,而这款延迟加载插件,会通过你的滚动 ...

  8. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之中的一个】环境搭建

    * 确定你安装了Android NDK R9B 版本号 ,假设没有前往下面地址下载. ( https://dl.google.com/android/ndk/android-ndk-r9b-linux ...

  9. 系统出现bootmgr is missing解决方式,戴尔dellserver装系统须要特别注意的问题

    系统出现bootmgr is missing解决方式,戴尔dellserver装系统须要特别注意的问题 欢迎关注http://blog.csdn.net/aaa123524457 转载请注明出处: h ...

  10. 我所认识的PCA算法的princomp函数与经历 (基于matlab)

    我接触princomp函数,主要是因为实验室的项目需要,所以我一接触的时候就希望快点学会怎么用. 项目中需要利用PCA算法对大量数据进行降维. 简介:主成分分析 ( Principal Compone ...