2017-09-13 4 views
0

Maintenant, mon mongodb a une table, dans laquelle sont stockés les mots-clés et le nombre de grappins par mots-clés, maintenant comment insérer les mots-clés dans la liste redis et par le nombre de grabs prioritaires niveau? thks! très voici mon code:comment insérer des données mongo dans la liste rouge

def init_mongo_to_redis(mongo_db, redis_pool): 
    r = redis.Redis(connection_pool = redis_pool) 
    mongo_handle = mongo_db.keywords_tbl.find({}, {'keyword': 1, 'keyword_type': 1, \ 
      'ignore_station': 1}, no_cursor_timeout=True) 
    redis_len = r.llen('fetch_keywords') 
    if redis_len != 0: 
     logging.info('redis fetch_keywords size is %d', redis_len) 
     return 

    logging.info('init redis fetch_keywords start') 

    r_pipe = r.pipeline() 
    pbar = tqdm(mongo_handle) 
    for keyword in pbar: 
     item = { 
      'keyword_type': keyword['keyword_type'], 
      'ignore_station': keyword['ignore_station'], 
      'keyword': keyword['keyword'] 
     } 
     r_pipe.lpush('fetch_keywords', json.dumps(item)) 
     pbar.set_description('Processing %s' % keyword) 
    r_pipe.execute() 

    logging.info('init redis fetch_keywords end :%d', r.llen('fetch_keywords')) 
+0

S'il vous plaît poster le code que vous avez trouvé et de poser des questions spécifiques –

Répondre

0

Chaque fois que vous avez à l'ordre par une valeur numérique (entière ou flottante) dans Redis, il est préférable d'envisager la première utilisation Sorted Sets. Vous pouvez commander les valeurs d'une partition, que, dans votre cas, je suppose est

nombre

de grappins niveau de priorité