发布网友
共2个回答
懂视网
上面操作是先写入一条数据,然后再读取,如果写入或者读取数据太多,那么我们最好用批处理,这样效率会更高。
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()
参考文章: http://www.jb51.net/article/48212.htm
Python读写Redis数据库
标签:
热心网友
-redis 本来就只支持存储一些基本类型(数值,字符...)的。java将对象存储在redis中是将对象序列化后的字节数组存入redis的,所以你用python取到的redis中的数据时,会带有特殊的前缀,表示序列化后java的类信息。java获取这些数据的时候会有反序列的操作,所以不影响。但python取到数据后是无法解析的。
-Java 存储与python共享数据时,应避免将String字符串当做对象进行序列化存储,应直接以字符串的形式存储,如果需要共享对象,对象转化为json串存储。
-另外spring的redisTemplate 进行Hash操作时,就算你存储的是String类型的数据,也会被当做String对象序列化后存储。所以 如果过要操作redis的hash结构,建议实例化一个Jedis客户端进行操作。