検索
ホームページバックエンド開発C#.Net チュートリアルRedisチュートリアル(7):キー操作コマンドの詳細説明

1. 概要:

このシリーズの最初の数回のブログでは、主に String、List、Set、Hashes、Sorted-Set などの Redis データ型に関連するコマンドについて説明しました。これらのコマンドにはすべて、キーに関連付けられた値に対してすべての操作が実行されるという共通点があります。このブログでは、キー関連の Redis コマンドに焦点を当てます。これらのコマンドを学習することは、Redis を学習するための非常に重要な基礎であり、Redis の可能性を最大限に活用するための強力なツールでもあります。
このブログでは、いつものように、現在の学習と将来の参照を容易にするために、すべての関連コマンドの詳細なリストと典型的な例を示します。

2. 関連コマンドリスト:


DEL key [key...]EXISTS key MOVE key db RENAME key newkey
コマンドプロトタイプ 時間計算量 コマンドの説明 戻り値
KEYSパターン O(N) 時間計算量のNはデータベース内のキーの数を表します。パターンパラメータに一致するすべてのキーを取得します。大規模なデータベースの場合、このコマンドは非常に時間がかかり、Redis サーバーのパフォーマンスに比較的大きな影響を与えるため、通常の操作ではこのコマンドを呼び出さないようにする必要があることに注意してください。パターンは glob スタイルのワイルドカード形式をサポートしています。たとえば、* は 1 つ以上の任意の文字を表し、? は任意の文字を表し、[abc] はパターンに一致する角括弧内の任意の文字を表します。
O(N) 時間計算量の N は、削除されたキーの数を表します。パラメータで指定したキーをデータベースから削除します。指定したキーが存在しない場合は無視されます。指定されたキーに関連付けられたデータ型が文字列型ではなく、リスト、セット、ハッシュ、ソートされたセットなどのコンテナー型である場合、各キーを削除するこのコマンドの時間計算量は O であることにも注意してください。 (M)。ここで、M はコンテナ内の要素の数を表します。文字列型 Key の場合、時間計算量は O(1) です。 削除されたキーの実際の数。
O(1) 指定されたキーが存在するかどうかを判定します。 1 は存在することを意味し、0 は存在しないことを意味します。
O(1) 現在のデータベースで指定されたキー Key をパラメータで指定されたデータベースに移動します。キーがターゲット データベースにすでに存在するか、現在のデータベースに存在しない場合、このコマンドは何も行わず 0 を返します。 移動が成功した場合は 1 を返し、それ以外の場合は 0 を返します。
O(1) パラメータ内の 2 つの Key コマンドが同じである場合、またはソース Key が存在しない場合、このコマンドは関連するエラー情報を返します。 newKey がすでに存在する場合は、直接上書きされます。
RENAMENX key newkey O(1) 新しい値が存在しない場合は、パラメータの元の値を新しい値に変更します。他の条件は RENAME と一致します。 1 は変更が成功したことを意味し、そうでない場合は 0 を意味します。
PERSIST key O(1) キーに有効期限がある場合、このコマンドはその有効期限を削除し、キーにタイムアウトがなく、永続的に保存できるようにします。 1 はキーの有効期限が削除されたことを意味し、0 はキーが存在しないか、有効期限がないことを意味します
EXPIRE キーの秒数 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です。キーが存在しない場合はnoneを返します
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...] ] [ 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/RAN DOMKEY/ 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 チュートリアル (7): キー操作コマンドの詳細説明です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
es和redis区别es和redis区别Jul 06, 2019 pm 01:45 PM

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

一起来聊聊Redis有什么优势和特点一起来聊聊Redis有什么优势和特点May 16, 2022 pm 06:04 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

实例详解Redis Cluster集群收缩主从节点实例详解Redis Cluster集群收缩主从节点Apr 21, 2022 pm 06:23 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

Redis实现排行榜及相同积分按时间排序功能的实现Redis实现排行榜及相同积分按时间排序功能的实现Aug 22, 2022 pm 05:51 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

详细解析Redis中命令的原子性详细解析Redis中命令的原子性Jun 01, 2022 am 11:58 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

一文搞懂redis的bitmap一文搞懂redis的bitmapApr 27, 2022 pm 07:48 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

实例详解Redis实现排行榜及相同积分按时间排序功能的实现实例详解Redis实现排行榜及相同积分按时间排序功能的实现Aug 26, 2022 pm 02:09 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

一起聊聊Redis实现秒杀的问题一起聊聊Redis实现秒杀的问题May 27, 2022 am 11:40 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター