使用Python操作Memcached
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的更多相关文章
- python操作memcached以及分布式
memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件.现在已成为 mixi.Facebook.Live ...
- Python操作memcached及redis
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- Python之路第十一天,高级(3)-Python操作 Memcached、Redis
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- python操作----Memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- python 操作Memcached
启动Memcached memcached -d -m 10 -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid 参数说明: -d ...
- Python操作Memcached
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- Python自动化开发 - Python操作Memcached、Redis、RabbitMQ
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...
- Python操作——Memcached
Memcached是一个高性能的分布式内存对象缓存系统,用于Web应用以减轻数据库的负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memcached ...
- 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 #!/ ...
随机推荐
- 单点登录 之 OAuth
OAuth2.0是什么 OAuth2.0是什么——豆瓣和QQ的故事 OAuth简单说就是一种授权的协议,只要授权方和被授权方遵守这个协议去写代码提供服务,那双方就是实现了OAuth模式. 举个例子,你 ...
- SharePoint 2013 升级
原文地址:https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/SharePoint-2013-Upgrade.aspx ...
- 内存及字符串操作篇strlen strchar strcmp strcoll strcpy strdup strstr strtok strspn strrchr bcmp bcopy bzero index memccpy memset
bcmp(比较内存内容) 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件 #include<string.h> 定 ...
- Git 学习(八)其他
Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼: 包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...
- MySQL命令行查询结果中文显示乱码
数据库编码格式为utf8,表和字段也都是utf8,存进去的格式是utf-8 但是用命令行工具查询命令select * from 表名; 查询出来的中文是乱码 原因:MySQL客户端根本就不能以utf8 ...
- 纯净版xp系统在局域网共享需要密码如何解决
纯净版xp系统在局域网共享需要密码怎么办?这是近来不少朋友都向小编反馈的问题.他们表示每次共享者更改密码后其他人都需要再重新输入密码,感觉十分的麻烦.下面是系统城小编给大家整理的一些有关XP系统局域网 ...
- Balanced Binary Tree leetcode java
题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...
- 【Other】希腊诸神大全-中英文名称
希腊诸神大全-中英文名称 希腊诸神的名字_百度搜索 希腊诸神_百度百科 希腊神话人物名字大全_极客百科 希腊神话人物名称大全 希腊神话中的人物名称大全 希腊神话即口头或文字上一切有关古希腊人的神. ...
- 为Ubuntu 安装Transmission 2.90
Transmission 是 Ubuntu 的默认 BitTorrent 客户端,近期发布了最新的 Transmission 2.90 版本,目前已经可通过 PPA 为 Ubuntu 15.10.Ub ...
- TCP/IP、SOCKET、HTTP之间的联系与区别
主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...