可以使用Python读取java写入redis 的object数据,并解析吗

发布网友

我来回答

2个回答

懂视网

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() 

参考文章:  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客户端进行操作。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com