コード例 #1
0
def load_words_into_redis_mset_slice(redis, words):
    '''
    Load words into redis as sliced chunks - slow.......
    '''
    ct = CodeTimer()    

    print(f"Loading {len(words)} words")
    count = 0
    grab = 5000
    ct.start()
    while count < len(words):
        take = grab
        if count + grab > len(words):
            take = len(words) - count        
        sliced = words[count:(take + count)]
        count += take

        bag = {}
        for word in sliced:
            bag[word] = "true"   
        redis.mset(bag)

        print(f"{count} words loaded - first:'{sliced[0]}' last:'{sliced[-1]}' '{ct.stop():0.4f}' secs")
        ct.start()

    ct.stop()
    print("Finished")
コード例 #2
0
ファイル: updater.py プロジェクト: galistvan/ebedke
def update(id, downloader, now):
    try:
        daily_menu = downloader(now)
        assert isinstance(daily_menu, list)
    except Timeout:
        print(f"timeout in «{id}» provider")
        daily_menu = []
    except:
        print(f"exception in «{id}» provider:\n", traceback.format_exc())
        daily_menu = []
    daily_menu = normalize_menu(daily_menu)

    redis.mset({
        f"{id}:menu": json.dumps(daily_menu),
        f"{id}:timestamp": now.isoformat()
    })
コード例 #3
0
def update(place, now):
    try:
        daily_menu = place.downloader(now)
        assert isinstance(daily_menu, Iterable), "Download function must return a list or other iteratable"
        daily_menu = normalize_menu(daily_menu)
    except Timeout:
        print(f"timeout in «{place.id}» provider")
        daily_menu = []
    except:
        print(f"exception in «{place.name}» provider:\n", traceback.format_exc())
        daily_menu = []

    redis.mset({
        f"{place.id}:menu": json.dumps(daily_menu),
        f"{place.id}:timestamp": now.strftime(DATEFORMAT)
    })
コード例 #4
0
def strings_redis():
    import redis
    #charset="utf-8", decode_responses=True => avoid b' in redis python
    redis = redis.Redis(host='127.0.0.1',
                        port=6379,
                        db=0,
                        charset="utf-8",
                        decode_responses=True)
    print("-------------")
    print("STRINGS")
    print("-------------")

    #info()
    print(redis.info())
    print("-------------")

    #monitor()
    print(redis.monitor())
    print("-------------")

    #set()
    redis.set("name", "javier")
    redis.set("name", "jaime")
    print("key: ", redis.get("name"))
    print("-------------")
    print("all keys: ", redis.keys())
    print("keys with a 'name...': ", redis.keys("name*"))
    print("keys with a 'e': ", redis.keys("*e*"))
    print("-------------")

    #setnx(name, value)
    redis.set("name", "javier")

    #mset(name, value)
    redis.mset({"name": "peter", "name": "david"})
    print("name: ", redis.mget("name"))
    print("-------------")

    #getrange(name, start, end) - substrings of the value
    print("range : ", redis.getrange("name", 0, 3))

    #delete all keys
    for key in redis.scan_iter("prefix:*"):
        redis.delete(key)
コード例 #5
0
def load_words_into_redis_mset(redis, words):
    '''
    Load words into redis as keys - slow.......
    '''
    ct = CodeTimer()    

    print(f"Loading {len(words)} words")
    count = 0
    first_word = ""
    ct.start()
    for word in words:
        redis.mset({word:"true"})
        count += 1
        if first_word == "":
            first_word = word

        if count % 1000 == 0:
            print(f"{count} words loaded - first:'{first_word}' last:'{word}' '{ct.stop():0.4f}' secs")
            first_word = ""
            ct.start()

    print(f"{count} words loaded - first:'{first_word}' last:'{word}' '{ct.stop():0.4f}' secs")
    print("Finished")
コード例 #6
0
 def __multi_set_ttl(self, conn, flattened, ttl):
     redis = conn.pipeline()
     redis.mset(flattened)
     for key in flattened:
         redis.expire(key, ttl)
     redis.execute()