`
ahuaxuan
  • 浏览: 639572 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

完善坛子工具库之--python版memcached遍历脚本

阅读更多
      


      今天看到robbin大哥用ruby写了一个遍历memcached的脚本,由于自己不用ruby就鳴发了用python也写一个的想法,说做就做,虽然功能上没有ruby版的强憾,不过也可以凑合用一下。

这个python版本还可以继续优化。代码如下:


import socket, StringIO

'''
@author: ahuaxuan
@date: 2008-10-22
'''

class mcstats(object):
    
    def __init__(self, address, port):
        self.address = address
        self.port = port
        
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.connect((self.address, self.port))
    
    def __del__(self):
        self.s.close()
        
    def connect(self, command):
        
        num = self.s.send(command)
        
        totalData = ''
        while True:
            data = self.s.recv(1024)
            if len(data) <= 0:
                break
            
            totalData = totalData + data
            if totalData.find('END') >= 0:
                break
            
        return totalData
        
    def calcSlabsCount(self, data):
        f = StringIO.StringIO(data)
        tmp = None
        for a in f:
            
            if a.find('END') >= 0:
                break
            else:
                tmp = a
        f.close()
        if tmp != None:
            return int(tmp.split(":")[1])
        else:
            return 0
        
    def showKVpairs(self, slabCounts, command):
        for a in range(0, slabCounts):
            tmpc = command + str(a + 1) + ' 0 \r\n'
            data = self.connect(tmpc)
            f = StringIO.StringIO(data)
            for b in f:
                if b.find('ITEM') >= 0:
                    arr = b.split(' ')
                    print 'key : ' + arr[1] + ' ------ value size : ' + arr[2][1:len(arr[2])]
        
            f.close()
            
if __name__ == "__main__":
    mcs = mcstats("localhost", 11211)
    mcs.showKVpairs(mcs.calcSlabsCount(mcs.connect('stats items \r\n')), 'stats cachedump ')
分享到:
评论
3 楼 zgd 2008-12-24  
2.5 增加了一个 with
2 楼 ahuaxuan 2008-10-22  
robbin 写道
和ruby代码看起来差不多,要说差别,可能就是ruby非常喜欢用迭代器,而我看你的python代码里面没有迭代器。在没有迭代器的情况下,处理异常和保证释放资源方面,你一般怎么写?


我这个代码确实没有考虑到异常,一般处理异常:
try:
   do something
except socke.error:
   do anothing


python 里一般都是直接for循环(不过俺的python水平应该还是在入门水平),不过python3000好像加入了这个特性。

ruby那段脚本给我最大的映象一个是迭代器,还有一个是end,由于python的强制缩进的特点,写出来的代码格式要求比较高,不过可以省去{}和begin end


1 楼 robbin 2008-10-22  
和ruby代码看起来差不多,要说差别,可能就是ruby非常喜欢用迭代器,而我看你的python代码里面没有迭代器。在没有迭代器的情况下,处理异常和保证释放资源方面,你一般怎么写?

相关推荐

    Python库 | tencentcloud-sdk-python-memcached-3.0.335.tar.gz

    《Python库tencentcloud-sdk-python-memcached-3.0.335详解》 在IT行业中,Python作为一门简洁且强大的编程语言,被广泛应用于各种领域,包括但不限于数据分析、机器学习、网络开发等。而当涉及到云计算服务时,...

    Python库 | tencentcloud-sdk-python-memcached-3.0.556.tar.gz

    《Python库tencentcloud-sdk-python-memcached-3.0.556详解》 在IT行业中,Python作为一门简洁且强大的编程语言,被广泛应用于各种领域,包括但不限于数据分析、机器学习、网络爬虫以及云计算等。而在这些应用场景...

    python-memcached python-memcached

    Python-memcached是Python语言的一个库,用于与Memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。Python-memcached库则...

    PyPI 官网下载 | tencentcloud-sdk-python-memcached-3.0.315.tar.gz

    总结来说,"tencentcloud-sdk-python-memcached-3.0.315"为Python开发者提供了与腾讯云Memcached服务交互的便利工具,不仅简化了开发过程,还增强了应用的性能和稳定性。通过学习和熟练掌握这款SDK,开发者可以充分...

    Python库 | tencentcloud-sdk-python-memcached-3.0.418.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-memcached-3.0.418.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python库 | tencentcloud-sdk-python-memcached-3.0.567.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-memcached-3.0.567.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-memcached-latest.tar

    总的来说,`python-memcached-latest.tar`提供的库是Python开发者在处理高并发、数据读取密集型应用时的一个强大工具。通过使用Memcached作为缓存层,可以显著提高数据读取速度,减轻数据库压力,提升整体系统性能。

    MSM--memcached session manager(memcached+tomcat7共享session所需jar包)

    本lib包包含:javolution-5.5.1.jar、kryo-1.03.jar、kryo-serializers-0.10.jar、memcached-2.5.jar、memcached-session-manager-1.5.1.jar、memcached-session-manager-tc7-1.5.1.jar、minlog-1.2.jar、msm-...

    cas-client-support-distributed-memcached-3.2.0.jar

    cas-client-support-distributed-memcached-3.2.0.jar

    python-memcached

    8. **持久化**:虽然Memcached不支持数据持久化,但可以通过配合其他工具(如Redis或数据库)实现一定程度的持久化,Python-Memcached可以作为这些工具的缓存层。 9. **错误处理**:Python-Memcached库能够处理...

    spring-mybatis-memcached.zip_Memcached java_annotation_mybatis_m

    ssm3-mybatis2-memcached 使用了 simple-spring-memcached 。因为 mybatis-memcached 不支持 MyBatis2(iBatis),只能用在 MyBatis3 里。但是因为有的项目还跑在 MyBatis2 版本上,所以也做一个例子。 mm-mybatis3-...

    Python库 | python-binary-memcached-0.24.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python-binary-memcached-0.24.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    apache-tomcat-7.0.47-memcached-各种序列化策略-session共享

    3. **apache-tomcat-7.0.47-memcached-javolution-session共享.rar**:Javolution是一个高性能的Java库,提供了一种序列化策略。它优化了内存使用和性能,适用于对速度有严格要求的环境。 4. **apache-tomcat-...

    tomcat-7.0.54配合使用的memcached-session-manager1.6.1的整套jar包

    2. `spymemcached-2.8.4.jar`:这是一个Java客户端库,用于连接和通信Memcached服务器,`memcached-session-manager`依赖它来与Memcached交互。 3. `netty-3.9.9.Final.jar`:Spymemcached使用的NIO库,提供非阻塞I/...

    memcached-win-32/64-1.4.4-14

    下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’...

    python-memcached-1.58-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    maven-springmvc-mybatis-memcached

    使用Memcached需要配置客户端库,并在服务器端启动服务。 综上所述,"maven-springmvc-mybatis-memcached"项目是一个全面的Web应用开发实例,它涵盖了现代Java Web开发中的多个关键组件。通过学习和实践这个项目,...

    memcached-win32-1.4.4-14.zip

    4. `bin`目录:可能包含其他辅助工具或脚本。 5. `conf`目录:可能包含默认配置文件,如`memcached.conf`。 6. `docs`目录:可能包含文档和帮助资料。 **Memcached工作原理** Memcached基于键值对存储,客户端通过...

    Ansible-ansible-role-memcached.zip

    Ansible-ansible-role-memcached.zip,ansible角色-memcachedansible角色:memcached,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    python-memcached-dump:从memcache服务器导出数据,只为备份数据

    python-memcached-转储 从memcache服务器导出数据,只为备份数据求助 [ root @ localhost ~ ] # python memcached-dump.py --help usage : memcached - dump . py [ - h ] [ - - host HOST ] [ - - port PORT ] [ - ...

Global site tag (gtag.js) - Google Analytics