Redis の生存時間の設定
Redis はキーの生存時間を提供します。生存時間が指定されていない場合、生存時間は永続的になります。 Redis は、時間が経過するとこのキーを自動的に削除します。 EXPIRE コマンドを使用できます。時間の単位は秒です。キーの生存時間が制限されている場合、SET キーが再割り当てされると、キーは再び永続的に設定されます:
SET session:captcha sd2a EXPIRE session:captcha 600
生存期間をキャンセルするキーの有効期間が永続に設定されており、これは PERSIST:
PERSIST session:captcha
TTL コマンドを使用してキーの有効期間を表示します。-1 は永続、または有効期限が切れると削除されることを意味します。
TTL session:captcha
Redis の INCR、LPUSH、HSET、ZREM およびその他のコマンドでは、生存時間は変更されません。
(推奨: redis ビデオ チュートリアル )
時間をミリ単位で正確に管理したい場合は、PEXPIRE が必要で、残り時間を確認するには PTTL を使用します。
有効期限が切れる秒数ではなく、有効期限を指定したい場合はどうすればよいでしょうか? EXPIREAT と PEXPIREAT が必要です。 EXPIREAT のパラメータは有効期限のタイムスタンプ (秒)、PEXPIREAT のパラメータはタイムスタンプの有効期限 (ミリ秒) です。
SET session:captcha sd2a EXPIREAT session:captcha 1399902009 PEXPIREAT session:captcha 1399902009000
アプリケーション シナリオ 1: アクセス頻度制限: 各ユーザーを 1 分に制限します。 10ページを閲覧します。疑似コードは次のとおりです。
$isExists = EXISTS limit:user1:192.168.1.2 if($isExists){ $num = INCR limit:user1:192.168.1.2 if($num > 10){ print '超过限制' exit } }else{ MULTI INCR limit:user1:192.168.1.2 EXPIRE limit:user1:192.168.1.2 60 EXEC }
トランザクションを使用する理由は、INCR limit:user1:192.168.1.2 を実行した後、EXPIRE limit:user1:192.168.1.2 60 を実行する前に、クライアントがクローズとして追加されるためです。その後、キーと値は永続化されます。そして、このIDは一生に10回しかアクセスできません。それは残念です。
アプリケーション シナリオ 2: キャッシュを実装します。 10,000 ユーザーのランキングの計算は非常にリソースを消費するため、最初の計算後にデータをキーに保存し、このキーの生存時間を設定します。 1 時間後に生存時間が経過するとキーが削除され、新しいランキングが再度計算されて一時キーが保存されます。
//战斗排行榜 $rank = GET cache:rank:fight if not $rank $rank = 计算排名() MULTI SET cache:rank:fight $rank EXPIRE cache:rank:fight 3600 EXEC
Redis はメモリに保存されたデータベースです。メモリがキャッシュでいっぱいの場合、Redis は構成ファイルに基づいて特定のキャッシュを削除します。設定項目はRedis設定ファイルのmaxmemoryパラメータで、単位はバイトです。この制限を超えると、構成ファイルの maxmemory-policy パラメータに従って不要なキーが削除されます。 maxmemory-policy のオプションのルールは次の 4 つです:
1. volatile-lru: LRU アルゴリズムを使用してキー (生存時間が設定されたキー) を削除します。
2. allkey-lru: LRU アルゴリズムを使用してキーを削除します。
3. Volatile-random: キーをすぐに削除します (有効期間が設定されたキー)。
4. allkey-random: キーをすぐに削除します。
5. volatile-ttl: 有効期限が近づいているキーを削除します。すべてのキーを走査して期限切れになりそうなキーを削除するのではなく、一度に N 個のキーを取り出し、その N 個のキーのうち期限切れになりそうなキーを削除することです。 Nって何ですか?設定ファイル。
6. Nevication: 削除しないでください。エラーを返します。
Redis はキーの有効期限を設定します - EXPIRE コマンド
EXPIRE key seconds
指定されたキーの生存時間を設定します。キーの有効期限が切れると (生存時間は 0)、自動的に削除されます。 。
Redis では、生存期間を持つキーを「揮発性」(揮発性) と呼びます。
ライフタイムを削除するには、DEL コマンドを使用してキー全体を削除するか、SET および GETSET コマンドで上書きします。これは、コマンドがライフタイムを持つキーのみを変更 (変更) する場合、値がキーが新しいキー値に置き換えられても、有効期間は変更されません。
たとえば、キーに対して INCR コマンドを実行したり、リストに対して LPUSH コマンドを実行したり、ハッシュ テーブルに対して HSET コマンドを実行したりしても、これらの操作によってキー自体の生存時間は変更されません。
一方、RENAME を使用してキーの名前を変更した場合、名前を変更したキーの生存時間は名前変更前と同じになります。
RENAME コマンドのもう 1 つの可能性は、有効期間を持つキーの名前を有効期間を持つ another_key に変更しようとすることです。このとき、古い another_key (およびその有効期間) は削除され、古いキーはしたがって、新しい another_key の生存時間は元のキーと同じになります。
PERSIST コマンドを使用すると、キーを削除せずにキーの有効期間を削除でき、キーを再び「永続的」キーにできるようになります。
生存時間の更新
すでに生存時間が設定されているキーに対して EXPIRE コマンドを実行すると、新しく指定した生存時間で古い生存時間が置き換えられます。
有効期限の精度
Redis 2.4 バージョンでは、有効期限の遅延は 1 秒以内です。つまり、キーの有効期限が切れている場合でも、有効期限が切れる可能性があります。期限切れ後も 1 秒以内にアクセスできますが、新しい Redis 2.6 バージョンでは、遅延が 1 ミリ秒未満に短縮されます。
Redis 2.1.3 より前の相違点
Redis 2.1.3 より前のバージョンでは、生存期間を指定してキーを変更すると、キー全体が削除され、この動作が発生します。これは当時のレプリケーション層の制限によるものでしたが、この制限は現在修正されています。利用可能なバージョン:
>= 1.0.0
時間計算量:
O(1)
戻り値:
设置成功返回 1 。
当 key 不存在或者不能为 key 设置生存时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0 。
redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间 (integer) 1 redis> TTL cache_page (integer) 29996
1、在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。
2、redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。
3、如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。
4、redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。
也就是说 :
redis.expire(key,expiration); redis.lpush(key,field,value); redis.get(key) //return null
redis2.1.3之后的版本里面没有这个约束,可以任意修改。
redis.set(key,100); redis.expire(key,expiration); redis.incr(key) redis.get(key) //redis2.2.2 return 101; redis<2.1.3 return 1;
5、redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。
更多redis知识请关注redis入门教程栏目。
以上がRedis の生存時間の設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisは、キーの一意性を確保するために5つの戦略を使用します。1。名前空間分離。 2。ハッシュデータ構造。 3.データ構造を設定します。 4。文字列キーの特殊文字。 5。LUAスクリプト検証。特定の戦略の選択は、データ組織、パフォーマンス、およびスケーラビリティ要件に依存します。

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redis Clusterは、Redisインスタンスの水平拡張を可能にする分散展開モデルであり、ノード間通信、ハッシュスロット部門キースペース、ノード選挙、マスター奴隷レプリケーション、コマンドリダイレクトを通じて実装されます。ハッシュスロット:キースペースをハッシュスロットに分割して、キーの責任ノードを決定します。ノード選挙:少なくとも3つのマスターノードが必要であり、選挙メカニズムを通じて1つのアクティブマスターノードのみが保証されます。マスタースレーブレプリケーション:マスターノードはリクエストの書き込みを担当し、スレーブノードはリクエストとデータレプリケーションを読む責任があります。コマンドリダイレクト:クライアントはキーを担当するノードに接続し、ノードは誤ったリクエストをリダイレクトします。トラブルシューティング:障害検出、オフラインのマーク、および再

Redisバージョン番号を表示するには、次の3つの方法を使用できます。(1)情報コマンドを入力し、(2) - versionオプションでサーバーを起動し、(3)構成ファイルを表示します。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

Redis Orderedセット(ZSET)は、並べ替えられた要素を保存し、関連するスコアでソートするために使用されます。 zsetを使用する手順には次のものがあります。1。zsetを作成します。 2。メンバーを追加します。 3.メンバースコアを取得します。 4。ランキングを取得します。 5.ランキング範囲のメンバーを取得します。 6.メンバーを削除します。 7.要素の数を取得します。 8。スコア範囲のメンバーの数を取得します。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。
