1. 概要:
この記事では主に Key に関連する Redis コマンドについて説明します。これらのコマンドを学習することは、Redis を学習するための非常に重要な基礎であり、Redis の可能性を最大限に活用するための強力なツールでもあります。 (推奨: redis ビデオ チュートリアル )
2. 関連コマンド リスト:
時間計算量 | コマンドの説明 | 戻り値 | |
O(N) | 時間計算量の N は、データベース内のキーの数を表します。パターンパラメータに一致するすべてのキーを取得します。大規模なデータベースの場合、このコマンドは非常に時間がかかり、Redis サーバーのパフォーマンスに比較的大きな影響を与えるため、通常の操作ではこのコマンドを呼び出さないようにする必要があることに注意してください。 pattern は、glob スタイルのワイルドカード形式をサポートしています。たとえば、* は 1 つ以上の任意の文字を表し、? は任意の文字を表し、[abc] は角括弧内の任意の文字を表します。 | パターンに一致するキーのリスト。 | |
O(N) | 時間計算量の N は、削除されたキーの数を表します。パラメータに指定したキーをデータベースから削除します。指定したキーが存在しない場合は無視されます。指定されたキーに関連付けられたデータ型が文字列型ではなく、リスト、セット、ハッシュ、ソートされたセットなどのコンテナー型である場合、各キーを削除するこのコマンドの時間計算量は O であることにも注意してください。 (M)。ここで、M はコンテナ内の要素の数を表します。文字列型 Key の場合、時間計算量は O(1) です。 | 削除されたキーの実際の数。 | |
O(1) | 指定されたキーが存在するかどうかを確認します。 | 1 は存在することを意味し、0 は存在しないことを意味します。 | |
O(1) | 現在のデータベースで指定されたキーをパラメータで指定されたデータベースに移動します。キーがターゲット データベースにすでに存在するか、現在のデータベースに存在しない場合、このコマンドは何も行わず 0 を返します。 | 移動が成功した場合は 1 を返し、それ以外の場合は 0 を返します。 | |
O(1) | 指定されたキーの名前を変更します。パラメータ内の 2 つの Key コマンドが同じである場合、またはソースキーが存在しない場合、このコマンドは関連するエラー情報を返します。 newKey がすでに存在する場合は、直接上書きされます。 | ||
O(1) | 新しい値が存在しない場合は、パラメータは新しい値に変更されます。他の条件は RENAME と一致します。 | 1 は変更が成功したことを意味し、そうでない場合は 0 を意味します。 | |
O(1) | キーに有効期限がある場合、このコマンドはその有効期限を削除し、キーがタイムアウトは発生しますが、永続的なストレージは可能です。 | 1 はキーの有効期限が削除されたことを意味し、0 はキーが存在しないか、有効期限がないことを意味します。 | |
O(1) | このコマンドは、パラメーターで指定されたキーのタイムアウト秒数を設定します。自動的に削除されます。タイムアウトが発生する前にキーが変更された場合、キーに関連付けられたタイムアウトは削除されます。 | 1 はタイムアウトが設定されていることを意味し、0 はキーが存在しないか設定できないことを意味します。 | |
EXPIREAT キーのタイムスタンプ | O(1) | このコマンドの論理機能は EXPIRE とまったく同じですが、唯一の違いはタイムアウトです。コマンドで指定した時間は相対時間ではなく絶対時間です。 time パラメータは Unix タイムスタンプ形式で、1970 年 1 月 1 日から経過した秒数を表します。 | 1 はタイムアウトが設定されていることを示し、0 はキーが存在しないか設定できないことを示します。 |
TTL キー | O(1) | キーの残りのタイムアウトの説明を取得します。 | 残りの説明を返します。キーが存在しない場合、またはタイムアウト設定がない場合は、-1 を返します。 |
RANDOMKEY | O(1) | 現在開いているデータベースからキーをランダムに返します。 | 返されるランダムなキー、またはデータベースが空の場合は nil 。 |
TYPE key | O(1) | パラメータで指定されたキーに関連付けられた値のタイプを取得します。このコマンドはそれを返します。文字列形式。 | 返される文字列は、string、list、set、hash、zset です。キーが存在しない場合は、何も返されません。 |
SORT キー [BY パターン] [LIMIT オフセット数] [GET パターン [GET パターン ...]] [ASC|DESC] [ALPHA] [STORE 先] | O(N M*log(M)) | このコマンドは比較的複雑なので、ここでは最も基本的な使用法のみを説明します。興味のあるネットユーザーは、redis の公式ドキュメントを参照してください。 | ソートされた元のリストを返します。 |
3. コマンド例:
1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:
#在Shell命令行下启动Redis客户端工具。 /> redis-cli #清空当前选择的数据库,以便于对后面示例的理解。 redis 127.0.0.1:6379> flushdb OK #添加String类型的模拟数据。 redis 127.0.0.1:6379> set mykey 2 OK redis 127.0.0.1:6379> set mykey2 "hello" OK #添加Set类型的模拟数据。 redis 127.0.0.1:6379> sadd mysetkey 1 2 3 (integer) 3 #添加Hash类型的模拟数据。 redis 127.0.0.1:6379> hset mmtest username "stephen" (integer) 1 #根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。 redis 127.0.0.1:6379> keys my* 1) "mysetkey" 2) "mykey" 3) "mykey2" #删除了两个Keys。 redis 127.0.0.1:6379> del mykey mykey2 (integer) 2 #查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。 redis 127.0.0.1:6379> exists mykey (integer) 0 #查看一下没有删除的Key,以和上面的命令结果进行比较。 redis 127.0.0.1:6379> exists mysetkey (integer) 1 #将当前数据库中的mysetkey键移入到ID为1的数据库中,从结果可以看出已经移动成功。 redis 127.0.0.1:6379> move mysetkey 1 (integer) 1 #打开ID为1的数据库。 redis 127.0.0.1:6379> select 1 OK #查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。 redis 127.0.0.1:6379[1]> exists mysetkey (integer) 1 #在重新打开ID为0的缺省数据库。 redis 127.0.0.1:6379[1]> select 0 OK #查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。 redis 127.0.0.1:6379> exists mysetkey (integer) 0 #准备新的测试数据。 redis 127.0.0.1:6379> set mykey "hello" OK #将mykey改名为mykey1 redis 127.0.0.1:6379> rename mykey mykey1 OK #由于mykey已经被重新命名,再次获取将返回nil。 redis 127.0.0.1:6379> get mykey (nil) #通过新的键名获取。 redis 127.0.0.1:6379> get mykey1 "hello" #由于mykey已经不存在了,所以返回错误信息。 redis 127.0.0.1:6379> rename mykey mykey1 (error) ERR no such key #为renamenx准备测试key redis 127.0.0.1:6379> set oldkey "hello" OK redis 127.0.0.1:6379> set newkey "world" OK #由于newkey已经存在,因此该命令未能成功执行。 redis 127.0.0.1:6379> renamenx oldkey newkey (integer) 0 #查看newkey的值,发现它也没有被renamenx覆盖。 redis 127.0.0.1:6379> get newkey "world"
2. PERSIST/EXPIRE/EXPIREAT/TTL:
#为后面的示例准备的测试数据。 redis 127.0.0.1:6379> set mykey "hello" OK #将该键的超时设置为100秒。 redis 127.0.0.1:6379> expire mykey 100 (integer) 1 #通过ttl命令查看一下还剩下多少秒。 redis 127.0.0.1:6379> ttl mykey (integer) 97 #立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。 redis 127.0.0.1:6379> persist mykey (integer) 1 #ttl的返回值告诉我们,该键已经没有超时了。 redis 127.0.0.1:6379> ttl mykey (integer) -1 #为后面的expire命令准备数据。 redis 127.0.0.1:6379> del mykey (integer) 1 redis 127.0.0.1:6379> set mykey "hello" OK #设置该键的超时被100秒。 redis 127.0.0.1:6379> expire mykey 100 (integer) 1 #用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。 redis 127.0.0.1:6379> ttl mykey (integer) 96 #重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。 redis 127.0.0.1:6379> expire mykey 20 (integer) 1 #再用ttl确认一下,从结果中可以看出果然被更新了。 redis 127.0.0.1:6379> ttl mykey (integer) 17 #立刻更新该键的值,以使其超时无效。 redis 127.0.0.1:6379> set mykey "world" OK #从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。 redis 127.0.0. 1:6379> ttl mykey (integer) -1
3. TYPE/RANDOMKEY/SORT:
#由于mm键在数据库中不存在,因此该命令返回none。 redis 127.0.0.1:6379> type mm none #mykey的值是字符串类型,因此返回string。 redis 127.0.0.1:6379> type mykey string #准备一个值是set类型的键。 redis 127.0.0.1:6379> sadd mysetkey 1 2 (integer) 2 #mysetkey的键是set,因此返回字符串set。 redis 127.0.0.1:6379> type mysetkey set #返回数据库中的任意键。 redis 127.0.0.1:6379> randomkey "oldkey" #清空当前打开的数据库。 redis 127.0.0.1:6379> flushdb OK #由于没有数据了,因此返回nil。 redis 127.0.0.1:6379> randomkey (nil)
Redis の詳細については、こちらをご覧ください。 redis 入門チュートリアル 列に注目してください。
以上がRedisの主要なコマンド関連の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。