2017-10-18 11 views
0

私はそれが数秒後に期限切れにし、新しいもの(追加する必要があるので、私はリストを作成し、私のpythonを使用して、一度それを埋めるしたいと思い、定期的にpython、redis:多次元リストをredisに格納します。最高のデータ型ですか?

[ 
[1, ...], 
[2, ...], 
[3, ...], 
[4, ...] 
] 
  1. のようなPythonのリストを格納する必要がありますリスト)。 [[2, ...], [3, ...]]

私はそれを作成し、満たされた後に有効期限が切れる時間を設定するexpire、一度にリストを作成し、埋めるためにlpushを使用するように考慮されたthis libraryを使用して:私は、例えば、特定の範囲のsub_listを取得する必要が

  • lrange私のpythonサブリストの特定の範囲を取得する

    私は良い解決法を使用していますか、私のニーズに合ったものがありますか?

  • +0

    音声を使用。キーは外側のリスト内の位置にする必要があります。接頭辞には全体の名前を付ける必要があります。サブリストにアクセスするこの方法は簡単です。 – Alfe

    +0

    @Alfeだから、私は(zadd)[http://redis-py.readthedocs.io/en/latest/#redis.Redis.zadd]を使うべきですか?私はredisリストを使用することは可能だとは思わないので、 – 91DarioDev

    +0

    Redisはリストもサポートしていますが、私はそれを文字列にのみ使用しています。 json-solutionは爪のように見える私のハンマーに。しかし、ネイティブにリストを自由に保存することをお勧めします。なぜそれは不可能だと思いますか? – Alfe

    答えて

    1

    Redisは1レベルのデータ構造しかサポートしていませんが、Jsonを使用してルールを破ることができます。だから、各内側のリストをjson文字列にして、redisリストを使ってこれを格納することができます。

    1

    ちょうどあなたが(おそらくJSONまたは類似としてエンコード)の値として、各内側のリスト( `[1、...]`など)を保存する必要がありますように漬物

    # store_objects_in_redis.py 
    ''' 
    Pickle (dumps) & set to store 
    Get & and unpickle (loads) to retrieve 
    # 
    Courtesy: Armin Ronacher, http://flask.pocoo.org/snippets/73/ 
    ''' 
    
    import redis 
    from pickle import loads, dumps 
    
    # Create client with default connection 
    client = redis.client.StrictRedis() 
    # An example complex object 
    stored_object = [{1,2,3}, {'a':1,'b':2,'c':3}, ['foo', 'bar']] 
    
    # store 
    client.set('obj', dumps(stored_object)) 
    
    # retrieve 
    retrieved_object = loads(client.get('obj')) 
    
    # compare 
    print(stored_object==retrieved_object, '\n', stored_object, '\n', retrieved_object) 
    
    ''' 
    Prints (Running in windows7) 
    == RESTART: K:/.../REDIS/store_objects_in_redis.py == 
    True 
    [{1, 2, 3}, {'c': 3, 'b': 2, 'a': 1}, ['foo', 'bar']] 
    [{1, 2, 3}, {'c': 3, 'b': 2, 'a': 1}, ['foo', 'bar']] 
    
    ''' 
    
    関連する問題