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

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

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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)

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

推荐网站 http://cz.qwangxiao.com/

猜你喜欢

转载自www.cnblogs.com/eryaketang/p/9963885.html