#!/usr/bin/env python
# -*- coding: utf-8 -*-
import redis
host = r'localhost'
port = 6379
POOL = redis.ConnectionPool(host=host, port=port, db=0)
my_server = redis.Redis(connection_pool=POOL)
def read_in_data(file_name):
data = []
with open(file_name, 'r') as f:
for line in f:
line = line.strip()
data.append(line.split(','))
return data
def write_data_to_redis(data):
my_server.set('counter', 0)
for items in data:
my_server.incr('counter')
for item in items:
my_server.rpush(items[0], item)
def get_data_from_redis():
keys = my_server.keys()
for key in keys:
data_type = my_server.type(key)
if data_type == 'list':
val = my_server.lrange(key, 0, -1)
elif data_type == 'string':
val = my_server.get(key)
print "%s:%s" % (key, val)
if __name__ == '__main__':
fileName = r'/Users/qinchuanqing/Code/workspace/IMP/installation/storage/NeSchedule.txt'
data = read_in_data(fileName)
write_data_to_redis(data)
print 'all data items number is %s' % my_server.get('counter')
print my_server.keys()
print get_data_from_redis()
Redis 的连接池是多线程安全的、多进程安全的、自动重连的。
你扔 flask.g 之类的全局的地方当然也行,反正 Redis 总是会使用连接池(不指定它每次就用一个新的)。显式指定连接池的话差异不大,反正你总是要手动在某个全局的地方存一样东西(连接池对象或者 Redis 对象)。