Python实现遍历数据库并获取key的值

527次阅读  |  发布于5年以前

遍历Redis数据库中有以格式为PREFIX_*的按照key-value方式存储的key,并打印其值.

遍历使用SCAN,因为KEYS PREFIX_*可能会造成Redis长时间阻塞。
查询使用pipeline减少交互,提高效率。


    import redis
    import hiredis

    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0)
    r = redis.Redis(connection_pool=pool)

    pipe = r.pipeline()
    pipe_size = 100000

    len = 0
    key_list = []
    for key in r.scan_iter(match='PREFIX_*', count=100000):
    key_list.append(key)
    pipe.get(key)
     if len < pipe_size:
     len += 1
    else:
     for (k, v) in zip(key_list, pipe.execute()):
     print k, v
     len = 0
     key_list = []

    for (k, v) in zip(key_list, pipe.execute()):
     print k, v

附上其他网页的代码,参考下吧


    # filename itertaorfilefolder 
    import os 
    import os.path

    filePath = raw_input('Enter filepath : ')

    #遍历文件夹 
    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 
    for parent ,dirnames , filenames in os.walk(filePath): 
      #输出文件夹信息 
      for dirname in dirnames: 
        print 'parent is :'+parent 
        print 'dirname is '+ dirname 
      #输出文件信息 
      for filename in filenames : 
        print 'parent is :'+parent 
        print 'filename is :' + filename 
        #输出文件路径信息 
        currentPath = os.path.join(parent,filename) 
        print 'the fulll name of the file is :'+ currentPath 
        filesize = os.path.getsize(currentPath)/1024/1024 
        print 'the file size is : %.3f MB' %(filesize) 
        #删除大于50m的文件 
        if filesize > 50: 
          delete = raw_input(' are you sure to delete ?') 
          if delete == 'yes': 
            os.remove(currentPath)

以上所述就是本文的全部内容了,希望大家能够喜欢。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8