Node-redis: 有効期限の蚭定方法

䜜成日 2016幎03月07日  Â·  40コメント  Â·  ゜ヌス: NodeRedis/node-redis

client.set(key, value)

有効期限の蚭定方法

最も参考になるコメント

@BridgeAR node_redisラむブラリを䜿うべきではありたせん。 倚分私はその䞊に座っおこれを私から匕き離す䜕か他のものを䜿うべきです。 ただし、前に述べたように、ほずんどの人はRedisをキャッシュずしお䜿甚しおおり、 node_redisドキュメントには、「expire」たたは「expiration」たたは「EX」コマンドたたはTTLしたがっお、Redisの公匏ドキュメントを掘り䞋げないず、キヌにTTLを実際に蚭定する方法を理解するのは困難です。これは、倧倚数の人が行う必芁があるず私が予想するアクションです。

党おのコメント40件

コマンドdcoumentationを確認しおください。 すべおのパヌツには独自のパラメヌタヌがあるため、次のように蚘述したす。

client.set(key, value, 'EX', 60 * 60 * 24, callback);

ありがずう

@BridgeARドキュメントリンクが機胜しない

動䜜したせん..redisバヌゞョン3.0

client.set(key, value, 'EX', 60 * 60 * 24, callback);

@sxyjijijiそれは私にずっお完党にうたく

@brucejcwリンクを修正したした

set関数でさえ、node_redisのドキュメントには含たれおいないず思いたす。
倚分それは䜕人かの人々を混乱させるでしょう。

@bruceCzK明瀺的なコマンドドキュメントはありたせん。 たた、Redisでコマンドが倉曎されたり、時間の経過ずずもに新しいパラメヌタヌが远加されたりする可胜性があるため、これは䞀般的にはお勧めできたせん。

ただし、コマンドがどのように機胜するかを確認するために垞に確認する必芁があるメむンドキュメントぞの参照が耇数ありたす。 珟圚のドキュメントを改善する可胜性がある堎合は、プルリク゚ストを開いおください。 README.md内のすべおの「コマンド」オカレンスにリンクを远加するこずをお勧めしたす。

やあみんな、クラむアントレベルでデフォルトの有効期限を蚭定する方法はありたすか

䟋

  const redisClient = redis.createClient({
    host: process.env.REDIS_ENDPOINT,
    port: process.env.REDIS_PORT,
    expire: 60 
})

これは、特に初心者にずっおは非垞に玛らわしい構文であるこずを繰り返したす。 node_redisのドキュメントには、キヌの有効期限/ TTLに関する情報はありたせん。 ほずんどの人がRedisをキャッシングレむダヌの䞀郚ずしお䜿甚しおおり、キヌの有効期限はそのワヌクフロヌの非垞に重芁な郚分になるず思いたす。 IMO、これは基本APIに組み蟌たれる必芁がありたすおそらくset関数はオプションのパラメヌタヌを受け取るこずができたす、たたはドキュメントは少なくずもキヌの有効期限に関連するコマンドAPIに぀いお説明する必芁がありたす。

答えは、クラむアントレベルでグロヌバル有効期限を蚭定できないずいうこずではないようです。 すべおのキヌに有効期限を蚭定する必芁があるのはちょっず残念です。

@ryanvanderpol set関数は、説明されおいるように、すでにオプションのパラメヌタヌを取りたす。 ドキュメントず䞊蚘の私のコメントを芋おください。

@ kienpham2000クラむアントレベルではグロヌバルな有効期限はなく、これを実装するのは困難です。 各コマンドをチェックしお操䜜する必芁がありたす。 代わりに、フックを远加する新しい機胜でそれを解決できたす。
これはキャッシングラむブラリではなく、代わりにそれを探しおいる可胜性がありたす。

@BridgeAR node_redisラむブラリを䜿うべきではありたせん。 倚分私はその䞊に座っおこれを私から匕き離す䜕か他のものを䜿うべきです。 ただし、前に述べたように、ほずんどの人はRedisをキャッシュずしお䜿甚しおおり、 node_redisドキュメントには、「expire」たたは「expiration」たたは「EX」コマンドたたはTTLしたがっお、Redisの公匏ドキュメントを掘り䞋げないず、キヌにTTLを実際に蚭定する方法を理解するのは困難です。これは、倧倚数の人が行う必芁があるず私が予想するアクションです。

@ryanvanderpolこれはRedisクラむアントラむブラリであり、キャッシュラむブラリではありたせん。 Redisラむブラリを䜿甚する堎合、特にnode_redisがコマンドの動䜜を文曞化しおいないため、Redisのドキュメントを読むこずが期埅されたす。 結局のずころ、node_redisはほずんどの堎合パラメヌタをRedisに転送するだけです。

キャッシュラむブラリが必芁な堎合は、 cacheman-redisやnode-redis-cacheなどの倚くのnpmパッケヌゞの1぀を䜿甚できたす。それらのドキュメントには、「expire」に぀いお明瀺的に蚘茉されおいたすsmile

私はあなたの䞻匵を理解しおいたすが、Redisのドキュメントを耇補したり、必芁以䞊に抜象化したりするのはnode_redisの仕事ではないず思いたす...

@CherryDTあなたの

私がやりたかったのは、生の圢匏でRedisず盎接通信するこずだけだった堎合、このラッパヌは私にずっおあたり䟡倀がありたせん。 Redisを䜿甚しおいる倧倚数の人々がキャッシュの目的でそうしおおり、有効期限を気にかけおいるず考えるのは完党に公正だず思いたす。

この䌚話党䜓は、「良い点です。他の䞀般的に䜿甚されるコマンドずずもに、キヌの有効期限を蚭定する方法に぀いおのドキュメントに少し远加する必芁がありたす」で吊定された可胜性がありたす。 そのためのPRも提出できるず思いたすが、Redisをキャッシュずしお䜿甚する以倖はよく知りたせん。

そうは蚀っおも、あなたが蚀及した他のラむブラリを芋お、それらが私のナヌスケヌスにより適しおいる堎合は、代わりにそれらの1぀に移動する可胜性がありたす。

私のポむントは、TTLよりもはるかに倚くの機胜があるずいうこずです。 さたざたなデヌタ型リスト、セット、゜ヌトされたセット、パブリッシャヌずサブスクラむバヌシステムなどがあり、基本的にRedisのドキュメントを耇補するそしお曎新を維持するか、パラメヌタヌに砂糖を远加するそしおそれらを曎新し続ける私が信じおいるこずは、このクラむアントの範囲倖です。 MySQLクラむアントにORMたたはMySQLリファレンスの機胜も期埅しおいたせんか

私はモゞュラヌ蚭蚈を信じおいるので、個々のモゞュヌルは必芁以䞊に倧きくすべきではないずも信じおいたす。 この堎合、このクラむアントは、ネットワヌキング郚分を抜象化し、コマンドを䟿利な第1局のメ゜ッドずしお提䟛するずいう点で優れおいたすが、その䞊にあるのは、特定の目暙に特化したラむブラリの仕事であるず思いたす。 以前にキャッシュ甚にリンクしたものや、pubsub甚にリンクしたものなど。 ちなみに、これらはnode_redisを内郚的に䜿甚するこずがよくありたす。したがっお、盎接はあたり圹に立たない堎合でも、間接的に䜿甚できたす。䜿甚する可胜性のあるより抜象化されたラむブラリは、䟝存関係ずしおnode_redisを䜿甚する可胜性があるためです。

したがっお、あなたのナヌスケヌスでは、node_redisのようなものの䞊にもっず「高レベル」のラむブラリを配眮したほうがよいこずに同意したす。

ええ、私はここであなたに完党に同意したせん。 MySQLクラむアントのドキュメントには、集蚈関数を䜿甚しおselectを実行する方法や、サブク゚リを実行する方法など、MySQLで誰もが行う䞀般的な䜜業のいく぀かを実行する方法が瀺されおいるず思いたす。 ORMを構築する方法や、MySQLドキュメント党䜓を耇補する方法を説明するこずは期埅しおいたせんが、ラむブラリを䜿甚しお䞀般的な䜜業を行う方法を瀺しおいたす。

ずにかく、明らかにあなたは私の芖点を芋る぀もりはなく、これは時間の無駄です。 これたでのずころ、17人が私に同意し、あなたず他の1人だけが同意したせん。 だから、たたに䞀歩䞋がっお、他人の芖点から物事をどうやっお芋るこずができるかを考えるべきかもしれたせん。

なぜあなたはこれを個人的にするのですか 私はあなたの䞻匵を完党に理解しおいたす。node_redisはその時の仕事に適したツヌルではないず思いたす。 私が䞻匵し始める前にあなたが同意したように。それに぀いお考えおください。物事を小さくし、自己完結型に保぀こずは倚くのこずを単玔化したす。 node_redisはネットワヌキングに぀いお心配しおいたすnode-cache-redis たたは独自の実装のようなものは、RedisAPIを正しく䜿甚するこずに぀いお心配しおいたす。 このように、䟝存関係はそれほど倚くありたせん。 「最䞊䜍」のラむブラリは垞に䜕らかの圢で存圚したす。このようにしお、Redisが機胜を远加たたは倉曎するたびにnode_redisを曎新する必芁はありたせんたたは異なるAPIバヌゞョンをサポヌトする必芁もありたせん_ command_党䜓を远加する堎合のみ 。

私はあなたに代替゜リュヌションを提䟛したした、そしおこれらがあなたのニヌズを満たすこずを願っおいたす、そしおそうでなければ、npmで「redis」を怜玢しおください、そしおあなたは他のたくさんのラむブラリも芋぀けるでしょう。

私たちがこれに同意しないこずに同意したしょう。 そしお、17人か1700人があなたず私に同意するかどうかは関係ありたせん。すべおの意芋は評䟡されるべきだず思いたす。

元の質問ず回答を芋るず、このラむブラリで'EX'ずそのような時間オプションを䜿甚しお.set()を䜿甚する必芁があるこずを知りたせんでした。

珟圚のREADME.mdを芋るず、 client.hgetall https://github.com/NodeRedis/node_redis#clienthgetallhash-callbackの䜿甚方法が説明されおいたす。おそらく、SETずGETの䞀般的なケヌスをいく぀か远加できたす。同様の方法で たた、倚くのGETずSETでredisを䜿甚しおいるず想定しおいたす。

いいねが受信トレむに衚瀺されないため、倚くの人が問題を抱えおいるこずに気づいおいたせんでした。

「expire」に぀いおも觊れながら、䟋ずしおsetコマンドを文曞化したPRを考えおいたす。

たた、これがキャッシュラむブラリではなく、キャッシュラむブラリを意図しおいないこずを文曞化したPRが必芁です。 私は、新しい人々のためにドキュメントをより良くする方法に぀いおのどんな意芋にもオヌプンです。

@ kienpham2000たあ、それは別のコマンドでもありたす-setex :)

_node_redis_モゞュヌルのreadmeで_redis_を説明する方法に぀いおここでチャむムを鳎らしおください。 私はその考えで完党に売られおいるわけではありたせん。 この䟋で瀺されおいるように、 multi / execでsetずexpireを䜿甚する、 setexを䜿甚する、たたはset with'ex'-倚くのこずを行う方法はたくさんありたす。 どれもノヌドずは䜕の関係もありたせん。 hgetall 、他のコマンドが倀を返す方法ずは異なるため、説明したす。

質問がないずいうわけではありたせんが、ここに集䞭するよりも、ブログや䞭皋床の投皿などを曞く方が、人々に情報を提䟛するためのより良い方法だず思いたす。 質問があれば、発生した問題にリンクするこずができたす。 _node_redis_モゞュヌルのreadmeをすべおの知識の゜ヌスに倉えるこずは、おそらく範囲倖です。

@stockholmuxこのラむブラリでsetexをどのように䜿甚するのか興味がありたすか ただのclient.setex()ですか

このlibがredisコマンドを䜿甚した1-1マッピングである堎合、docは必芁ないず思いたす。 しかし、このラむブラリにオプションを枡すための特別なapiたたはdiffの方法がある堎合、ある皮のAPIドキュメントがあるず開発者にずっお非垞に圹立぀ず思いたす。

@ kienpham2000これは1察1のマッピングです。 それは垞に䞀぀になるこずを意図しおいた。 APIを䜿甚するためのシンプルなクラむアント。 これは䜎レベルであり、高レベルではありたせん。

たた、 @ stockholmuxは、 hgetallが文曞化されおいるのは、他のどのコマンドよりも倚くの方法で䜿甚できるためです。 しかし、それでも1察1のマッピングです。

ずにかく私はこれに぀いおのセクションを远加するこずに賛成なので、これは二床ず珟れたせん。

@BridgeARこのドキュメントPRを喜んで受け入れおくれおありがずう、これが私の最初のドラフトです https 

曎新 https 

今私はこれを芋぀けたした、そしおそれは別の方法のように芋えたす //dzone.com/articles/tutorial-working-nodejs-and

そのメ゜ッドも機胜させるこずができたせんでした゚ラヌなし、効果がないため、このプロゞェクトを䞭止し、ずにかくRedisを䜿甚できるhttps://www.npmjs.com/package/node-cacheに切り替えたす。

Windowsでは、「set」メ゜ッド内で'EX', 20お有効期限を蚭定するこずはできたせん。これは、o3ではなく2぀のパラメヌタヌのみを受け入れるためです。

たぶんあなたは叀いRedisバヌゞョンを持っおいたすか ドキュメントによるず、Redis 2.6.12で远加されたずのこずです https 

代わりに、2.0.0以降に存圚するSETEXを䜿甚できたす。

たぶんあなたは叀いRedisバヌゞョンを持っおいたすか ドキュメントによるず、Redis 2.6.12で远加されたずのこずです https 

node-expressプロゞェクトでredisを䜿甚しおいたすが、JSでは3぀のパラメヌタヌを远加できたせんたたはできたせん。.:-(

redis.set("cache:" + req.originalUrl, JSON.stringify(result), 'EX', 25); ->これは有効期限領域に゚ラヌがある私のコヌドです。

どのRedisバヌゞョンですか

Windows甚のRedis2.4.5redis-windowsおよびノヌ​​ドモゞュヌルの

ですから、それは明らかです。䞊蚘のメッセヌゞをもう䞀床読んで、Redisのドキュメントを確認しおください。 SETの「EX」パラメヌタは2.6.12でのみ远加されたため、Redisバヌゞョン2.4.5にはありたせんが、代わりに2.0.0以降に存圚するSETEXを䜿甚できたす。

redis.setex(key, seconds, value)
redis.setex(key, value, seconds)

redis.setex(key, value, expiration) ->機胜しおいたせん

...しかし、私はこのリンクで1぀の正しい方法を芋぀けたした redisりィンドり

Redisのバヌゞョンを倉曎したい堎合は、もちろんそうです。
そうでない堎合は、私のものも機胜したす。パラメヌタが間違っおいるだけですただし、SETEXのドキュメントを確認した堎合は、気付いたはずです。キヌ、秒、倀であり、キヌ、倀、秒ではありたせん。

ずにかく、それが今あなたのために働くず聞いお玠晎らしいです。

以䞋は動䜜したせん。

client.set('key', 'value', 'EX', 10, (error, replay)=>{
...
}

これに぀いお曎新されたものはありたすか
今はclient.expire(id,10)を䜿っおいたす。

PS私はredisバヌゞョン Redis server v=5.0.0ずノヌドバヌゞョン v8.10.0

@kdthanviそれはredis-cliからMONITORを䜿甚しお、実際に䜕が起こっおいるかを再確認しおください。

@kdthanviは正しいです。 redis 5では機胜したせん

client.set(key, value, 'EX', 60 * 60 * 24, callback);

必芁なもの

`
client.setkey、value、callback;

client.expirekey、TTL、callback;
`

それを実際に機胜させるために。

@martinlevesque私はあなたが間違っおいるず信じおいたす。 EXは2.6.12で远加され、node_redisはバヌゞョンに関係なく「EX」を正しく枡したす。 MONITOR確認するず、衚瀺されたす。

SET + EXPIREは、原子の違いにより、 SET .. EXず危険なほど異なる堎合がありたす。

「Redisノヌドセットの有効期限」を怜玢するず、このスレッドは1番なので、今日の時点で、follow setexpireコマンドはnodeJSredisで機胜するず結論付けたいず思いたす。

setex(key, 60, value)

ここで、60は秒単䜍の有効期限です。

「Redisノヌドセットの有効期限」を怜玢するず、このスレッドは1番なので、今日の時点で、follow setexpireコマンドはnodeJSredisで機胜するず結論付けたいず思いたす。

setex(key, 60, value)

ここで、60は秒単䜍の有効期限です。

これは、2時間のデバッグず゚ラヌ解決の埌に芋぀かりたした。 どうもありがずうございたす ;

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡