import redis
import datetime
#redis-server.exe redis.conf
class Database:
def __init__(self):
self.host = 'localhost' # 设置端口
self.port # 本机默认端口
self.write_pool = {}
self.read_pool = []
def write(self, website, city, year, month, day, deal_number): #将数据写入数据库
try:
key = '_'.join([website, city, str(year), str(month),str(day)])
val = deal_number
r = redis.StrictRedis(host = self.host, port = self.port)
r.set(key,val)
except Exception, exception:
print exception
def add_write(self, website, city, year, month, day, deal_number):
key = '_'.join([website, city, str(year), str(month),str(day)])
val = deal_number
self.write_pool[key] = val
def batch_write(self): # 将大量数据一起写入数据库,提升效率
try:
r = redis.StrictRedis(host = self.host, port = self.port)
r.mset(self.write_pool)
except Exception, exception:
print exception
def read(self, website, city, year, month, day): # 读取数据
try:
key = '_'.join([website, city, str(year), str(month), str(day)])
r = redis.StrictRedis(host = self.host, port = self.port)
value = r.get(key)
print value
return value
except Exception, exception:
print exception
def add_read(self, website, city, year, month, day):
key = '_'.join([website, city, str(year), str(month), str(day)])
self.read_pool.append(key)
def batch_read(self):
try:
r = redis.StrictRedis(host = self.host, port = self.port)
val = r.mget(self.read_pool)
except Exception, exception:
print exception
def single_write():
beg = datetime.datetime.now()
db = Database()
for i in range(1, 10001):
db.write('meituan', 'shanghai', i, 9, 1, i)
end = datetime.datetime.now()
print end-beg
def batch_write():
beg = datetime.datetime.now()
db = Database()
for i in range(1, 10001):
db.add_write('meituan', 'shanghai', i, 9, 1, i)
db.batch_write()
end = datetime.datetime.now()
print end-beg
def single_read():
beg = datetime.datetime.now()
db = Database()
for i in range(1, 10001):
db.add_write('meituan', 'shanghai', i, 9, 1)
end = datetime.datetime.now()
print end-beg
def batch_read():
beg = datetime.datetime.now()
db = Database()
for i in range(1, 10001):
db.add_read('meituan', 'shanghai', i, 9, 1)
db.batch_read()
end = datetime.datetime.now()
print end-beg
if __name__ == '__main__':
#single_write()
batch_write()
#single_read()
batch_read()