ホームページ  >  記事  >  データベース  >  Redis の 5 つの基本データ型について詳しく説明します。

Redis の 5 つの基本データ型について詳しく説明します。

青灯夜游
青灯夜游転載
2021-11-23 18:56:552187ブラウズ

この記事では、Redis の 5 つの基本データ型 (文字列文字列、リスト リスト、セット コレクション、ハッシュ ハッシュ、Zset 順序付きコレクション) について詳しく説明します。お役に立てば幸いです。

Redis の 5 つの基本データ型について詳しく説明します。

Redis データ構造の概要

Redis の場合、すべてのキーは文字列です。基本的なデータ構造について話すときは、値を保存するためのデータ型について説明します。これには、主に String、List、Set、Zset、Hash の 5 つの一般的なデータ型が含まれます。 [関連する推奨事項: Redis ビデオ チュートリアル ]

Redis の 5 つの基本データ型について詳しく説明します。

##構造タイプに格納される値構造体 構造体の読み取りおよび書き込み機能 は文字列または整数または浮動小数点数 文字列全体または文字列の一部を操作します。整数または浮動小数点数に対してインクリメントまたはデクリメント操作を実行します。リンク リスト。リンク リストの各ノードには文字列が含まれます。リンク リストの両端でプッシュおよびポップ操作を実行し、単一または複数の要素を読み取ります。値に応じて要素を検索または削除します。文字列を含む順序なしのコレクション文字列のコレクション、基本的な方法には、追加、取得、削除の有無の確認が含まれ、交差、和集合、差分の計算なども含まれます。 単一要素を追加、取得、削除するためのメソッドが含まれていますキーと値のペアの保存に使用されるハッシュと同じです。文字列メンバーと浮動小数点スコアの間の順序付けされたマッピング。要素の順序はスコアのサイズによって決まります。包含方法は単一要素の追加、取得、削除、およびスコア範囲またはメンバーに基づく要素の取得基本的なデータ構造の詳細な説明
文字列 string
リスト リスト
セット コレクション キーと値のペアを含む順序なしのハッシュ テーブル
#Zset 順序付きセット
## String
String は Redis の最も基本的なデータ型で、1 つのキーが 1 つの値に対応します。

String 型はバイナリ セーフです。つまり、redis の文字列にはあらゆるデータを含めることができます。数値、文字列、jpg画像、シリアル化されたオブジェクトなど。

コマンドの使用法

コマンド
  • 簡単な説明
#GETGET name を使用して、指定されたキーに格納されている値を取得します。 #SET指定されたキーに格納されている値を設定します 値を削除します指定されたキーに格納されています キーに格納されている値を 1##DECRキーに格納されている値を 1 ずつ減らします#DECR キーINCRBY key amountDECRBYキーの量
SET name value DEL
DEL 名 INCR
INCR キー # だけ増やします
INCRBY key に格納されている値に整数を加算します
DECRBY に格納されている値から整数を減算しますキー
  • コマンド実行
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
  • 実際のシナリオ
    • キャッシュ: 従来の使用シナリオ、共通情報、文字列、画像、ビデオ、その他の情報は Redis に配置され、Redis はキャッシュ層として機能し、mysql は永続化層として機能して、mysql の読み取りおよび書き込みの負荷を軽減します。
    • Counter: redis はシングルスレッド モデルです。1 つのコマンドは、次のコマンドが実行されるまで実行されません。同時に、データを他のデータ ソースに転送できます。ワンステップ。
    • session: 一般的なソリューションは、セッション共有を実装する Spring セッション Redis です。

List list

Redis の List は実際にはリンク リストです (Redis は List を実装するために両端リンク リストを使用します)。

List 構造を使用すると、最新のメッセージ キュー機能 (Sina Weibo の TimeLine など) を簡単に実装できます。 List のもう 1 つのアプリケーションはメッセージ キューで、List の PUSH 操作を使用してタスクを List に保存し、ワーカー スレッドが POP 操作を使用して実行するタスクを取り出します。

  • コマンドの使用法
#RPOP キーLPOP値をポップしますリストの左端から順に取得して返します。 ポップされた値を返します。 LRANGELINDEX
コマンド 簡単な説明
RPUSH を使用して、指定された値をリストの右端にプッシュします。 RPUSH キーの値
LPUSH 指定された値をリストの左端にプッシュします LPUSH キーの値
RPOP リストの右端から値をポップし、ポップされた値を返します
#LPOP key
リスト内のすべての値を取得します。指定された範囲 LRANGE key 0 -1
インデックスによってリスト内の要素を取得します。負の添え字を使用することもできます。-1 はリストの最後の要素を表し、-2 はリストの最後から 2 番目の要素を表します。 LINEX キー インデックス
リスト使用のヒント
  • lpush lpop=Stack(stack)
    • lpush rpop=Queue (キュー)
    • lpush ltrim=Capped Collection (限定コレクション)
    • lpush brpop=Message Queue (メッセージキュー)
  • コマンドの実行
  • 127.0.0.1:6379> lpush mylist 1 2 ll ls mem
    (integer) 5
    127.0.0.1:6379> lrange mylist 0 -1
    1) "mem"
    2) "ls"
    3) "ll"
    4) "2"
    5) "1"
    127.0.0.1:6379> lindex mylist -1
    "1"
    127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
    (nil)
実際のシナリオ
    • Weibo TimeLine
    • : 誰かが Weibo に投稿し、lpush を使用してタイムラインに追加します。新しいリスト情報が表示されます。
    • メッセージ キュー
セット コレクション

Redis のセットはString 型の順序付けされていないコレクション。セットのメンバーは一意であるため、セット内に重複したデータが存在することはできません。

Redis のコレクションはハッシュ テーブルを通じて実装されるため、追加、削除、検索の複雑さは O(1) です。

    コマンドの使用法
コマンド#SADDSADD キー値 # を使用して、1 つ以上のメンバーをコレクションに追加します。 セット内のメンバーの数を取得します#SCARD キーSMEMBERすべてのメンバーを返しますセット内 SMEMBER キー メンバーSISMEMBERメンバー要素がセット キーのメンバーであるかどうかを判断しますSISMEMBERキーメンバーその他の set 操作については、こちらを参照してください。https://www.runoob.com/redis/redis-sets。 html
簡単な説明
##SCARD

コマンド実行

    127.0.0.1:6379> sadd myset ycf ycf1 xiao ycf
    (integer) 3
    127.0.0.1:6379> smember myset
    1) "xiao"
    2) "ycf1"
    3) "ycf"
    127.0.0.1:6379> sismember myset ycf
    (integer) 1
  • 実際のシナリオ
タグ
    (タグ)、ユーザーにタグを追加するか、ユーザーがメッセージにタグを追加すると、同じタグまたは類似のタグを持つユーザーがフォローするものや人を推奨できるようになります。
    • いいね、嫌い、収集など をセットに配置して
    • ハッシュ ハッシュ

Redis ハッシュは文字列型のフィールドと値のマッピング テーブルであり、オブジェクトの保存に特に適しています。

#コマンドの使用法

  • ##コマンド
  • 簡単な説明
使用##HSET ハッシュ キー サブキー 1 値 1HGET指定されたハッシュ キーの値を取得しますHGET ハッシュ キー key1HGETALL ハッシュに含まれるすべてのキーと値のペアを取得します HGETALL hash-keyHDEL指定されたキーがハッシュに存在する場合を削除し、このキーを削除しますHDEL ハッシュキー サブキー1
  • 命令执行
127.0.0.1:6379> hset user name1 ycf
(integer) 1
127.0.0.1:6379> hset user email1 ycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"ycf"
127.0.0.1:6379> hset user name2 xiaoycf
(integer) 1
127.0.0.1:6379> hset user email2 xiaoycf@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "ycf"
3) "email1"
4) "ycf@163.com"
5) "name2"
6) "xiaoycf"
7) "email2"
8) "xiaoycf@163.com"
  • 实战场景
    • 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • 命令使用
##HSET キーと値のペアを追加
命令 简述 使用
ZADD 将一个带有给定分值的成员添加到哦有序集合里面 ZADD zset-key 178 member1
ZRANGE 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 ZRANGE zset-key 0-1 withccores
ZREM 如果给定元素成员存在于有序集合中,那么就移除这个元素 ZREM zset-key member1

更多命令请参考这里 

https://www.runoob.com/redis/redis-sorted-sets.html

  • 命令执行
127.0.0.1:6379> zadd myscoreset 100 ycf 90 xiaoycf
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaoycf"
2) "ycf"
127.0.0.1:6379> ZSCORE myscoreset ycf
"100"
  • 实战场景
    • 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

更多编程相关知识,请访问:编程视频!!

以上がRedis の 5 つの基本データ型について詳しく説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。