Redis数据库(初级)

2015-01-21 12:14:06 · 作者: · 浏览: 2

Redis是一个开源的非关系型数据库,它采用C语言编写,是一个key-value存储系统,它存储的value类型很多,包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希)。


比如,我们插入一条数据,如下:


?import redis?
?
class Database:?
? ? def __init__(self):?
? ? ? ? self.host = 'localhost'?
? ? ? ? self.port = 6379?
?
? ? 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 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?
?
if __name__ == '__main__':?
? ? db = Database()?
? ? db.write('meituan','beijing',2013,9,1,8000)?
? ? db.read('meituan','beijing',2013,9,1)?


上面操作是先写入一条数据,然后再读取,如果写入或者读取数据太多,那么我们最好用批处理,这样效率会更高。


import redis?
import datetime?
?
class Database:?
? ? def __init__(self):?
? ? ? ? self.host = 'localhost'?
? ? ? ? self.port = 6379?
? ? ? ? self.write_pool = {}?
?
? ? 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 add_data():?
? ? beg = datetime.datetime.now()?
? ? db = Database()?
? ? for i in range(1,10000):?
? ? ? ? db.add_write('meituan','beijing',2013,i,1,i)?
? ? db.batch_write()?
? ? end = datetime.datetime.now()?
? ? print end-beg?
? ? ? ? ? ? ?
if __name__ == '__main__':?
? ? add_data()?