sql >> データベース >  >> NoSQL >> Redis

redisリストの値でアイテムのインデックスを取得する

    これに関するnodejsクライアントの詳細はわかりませんが、以下はluaでの非常に単純なindexOfコマンドの実装です。

    私のファイルindexof.lua 私は次のコードを持っています:

    local key = KEYS[1]
    local obj = ARGV[1]
    local items = redis.call('lrange', key, 0, -1)
    for i=1,#items do
        if items[i] == obj then
            return i - 1
        end
    end 
    return -1
    

    いくつかの値をmylistにプッシュしましょう 。

    > rpush mylist foo bar baz qux
    (integer) 4
    

    luaスクリプトを使用して、リスト内の任意の値のインデックスを見つけることができます。コマンドはO(N)です。

    $ redis-cli --eval indexof.lua mylist , bar
    (integer) 1
    

    barのインデックス 1でした

    > lindex mylist 1
    "bar"
    

    nilのインデックス -1

    $ redis-cli --eval indexof.lua mylist , nil
    (integer) -1
    

    EVALコマンドに関するhttp://redis.io/commands/evalの詳細なドキュメントを参照してください。



    1. BookSleeveでredisのコンテンツ値を検索する方法

    2. MongoDB-配列の最後の要素をクエリしますか?

    3. maxdistanceとMongoDBに使用するユニット?

    4. MongoDBでHibernate