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

Redis:あるキーを別のキーの値と等しく設定するにはどうすればよいですか?

    これはLuaスクリプトで実行できます:

    redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
    
    1. KEYS1はソースキーです
    2. KEYS2がターゲットキーです

    以下の例では、SCRIPT LOADを使用してスクリプトを作成し、EVALSHAを使用してスクリプトを呼び出し、次の引数を渡します。

    1. スクリプトの読み込みから返されたSHA1
    2. 渡されるキーの数は2です
    3. ソースキー
    4. ターゲットキー。

    出力:

    redis 127.0.0.1:6379> set src.key XXX
    OK
    redis 127.0.0.1:6379> get src.key
    "XXX"
    redis 127.0.0.1:6379> SCRIPT LOAD "redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;"
    "1119c244463dce1ac3a19cdd4fda744e15e02cab"
    redis 127.0.0.1:6379> EVALSHA 1119c244463dce1ac3a19cdd4fda744e15e02cab 2 src.key target.key
    (integer) 1
    redis 127.0.0.1:6379> get target.key
    "XXX"
    

    単にGETを実行してからSETを実行する場合と比較すると、多くの作業が行われているように見えますが、スクリプトをロード(およびSHA1を記憶)すると、スクリプトを繰り返し再利用できます。



    1. $toLowerを使用してMongoDBコレクションを更新します

    2. HBaseACLのレンジャーポリシーへの変換

    3. Redisでキーを一括作成-ServiceStackC#

    4. mongodbでの日付比較