blog

レディスセット

1.はじめに javaのsetと同じように、setは重複を許さない==リストです。setは重複を許さないので、同じものを複数回追加すると...。...

Mar 3, 2020 · 6 min. read
シェア

[TOC]

はじめに

javaのsetと同じで、setはリスト==繰り返し不可==です。setも追加、削除、変更、クエリなどが可能です。違いは、リストがO(n)のコストでクエリを実行するのに対し、setはO(1)のコストでクエリを実行することです。セットに対するクエリの実行コストはO(1)であるのに対し、リストに対するクエリの実行コストはO(n),nはリストのインデックスに依存するという違いがあります。

setは重複を許さないため、同じ要素が複数回追加された場合、最後のコピーだけが保持されます。setはセット間の集約操作をサーバー側で行うため、サーバー上で完結することができ、非常に効率的でIOネットワークの消費を節約することができます。

注文

増加

コマンド==

コマンドの説明: 指定されたキーに値を挿入します。値が存在する場合は何もしませんが、存在しない場合は追加されます。キーがセットでない構造体に対応する場合は、例外を実行します。

戻り値:実際の増加量

統計数

コマンド==SCARD キー==

コマンドの説明: 指定されたキーのセットの要素数を取得します。

戻り値: 0: キーが存在しないか、セット内の要素が空; non-0: 実際のキーに対応するセット内の要素の数。

存在

コマンド:==SISMEMBER key element==

コマンドの説明: 指定されたキーを持つセットに要素が存在するかどうかを判定します。キーがセットされていないセットに対応する場合、例外を実行します。

0: 要素が存在しないか、キーが存在しない。

すべてのセットを取得

コマンド:==SMEMBERS key==

コマンドの説明: 指定されたキーの set のすべての要素を取得します。

戻り値:指定されたキーに対応する set の要素のリスト。key が存在しない場合は null を返します。key が set に対応しない場合は例外がスローされます。

要素のランダム削除

コマンド==SPOP キー [count]==

コマンド説明: キーに対応するセット内の要素のカウントをランダムに取り出します。カウントは省略可能で、省略は1を意味します。セット内の要素のレイアウトは外部から制御できないため、取り出された要素は制御できません。countが集合内の要素の総数より大きければ、集合内の要素はすべて取り除かれ、countが0に等しければ何も行われません。

戻り値:取り出された要素。key に対応する set が空であるか、 key が存在しない場合は null を返します。key が set に対応しない場合は、例外がスローされます。

削除

コマンド:==SREM キーエレメント [element1 ...]==SREM キーエレメント [element1 ...==

コマンドの説明: 指定されたキーのセットから指定された要素を削除します。要素が存在しない場合は無視されます。キーが存在しない場合、操作は何も変更しません。

戻り値:実際に削除された要素の数。キーが set 以外に対応する場合は、例外がスローされます。

エレメントへのランダムアクセス

コマンド:==SRANDMEMBER キー[count]==。

コマンドの説明: 指定されたキーの集合に含まれる要素の数をランダムに返します。==この操作によって要素がセットから削除されることはありません。==countが集合の総数より大きい場合は、すべての集合の要素を返します。countが0に等しい場合は、何もしません。countが0より小さい場合は、countの要素を返します。

戻り値:セット内の要素のランダムなリスト。キーが存在しない場合は、空のリストが返されます。キーが set に一致しない場合は、例外がスローされます。

トランスファー要素

コマンド==SMOVE source dest element==

コマンドの説明: 指定された要素を source から削除し、dest に追加します。dest が存在しない場合は作成されます。要素が source に存在しない場合は何もしません。要素が既に dest に存在する場合は、source から要素を削除します。source または dest のいずれかが設定されていない場合は、例外がスローされます。

0: 要素がソースに存在しません。

差分セット

コマンド==SDIFF キー [key1 ....]==

説明:最初のキーの集合を基本として、次のキーの集合と最初のキーの集合の差の集合を返します。キーが存在しない場合は空集合とみなされ、いずれかのキーが集合でない場合は例外がスローされます。

戻り値: 差分要素のリスト

多様性ストレージ

コマンド==SDIFFSTORE dest key [key1 ...]==SDIFFSTORE dest key [key1 ...]==SDIFFSTORE dest key [key1 ...==

コマンドの説明: キーの集合と、それ以降のキーに対応する集合との差分集合要素を取得し、その差分集合要素を dest に入れます。destが存在しない場合は新規作成、既に存在する場合は上書き。destが既に存在する場合は上書きし、dest,keysのいずれかが設定されていない場合は例外を実行します。

戻り値:差集合の要素数。

交差点

コマンド:==SINTER キー [key1 ...]==SINTER キー [key1 ...]==SINTER キー [key1 ...==

コマンドの説明: 指定されたキーの集合の交差要素を取得します。いずれかのキーの集合が空であるか、そのキーが存在しない場合、交点も空になります。いずれかのキーがセットでない場合は、例外がスローされます。

戻り値: 交差点要素のリスト

交差点保管

コマンド:==SINTERSTORE dest key [key1 ....]==

コマンドの説明: キーの集合の交差要素を取得し、その交差要素を dest に格納します。destが存在しない場合は作成します。destが空でなければdestを上書きし、dest,keysのいずれかが設定されていなければ例外を実行します。

戻り値:交差点の要素数

連結

コマンド:==SUNION キー [key1 ...]==SUNION キー [key1 ...]==SUNION キー [key1 ...==

コマンドの説明:キーの集合の全ての要素を連結した集合の要素を取得します。キーが存在しない場合は空集合として扱われます。キーが設定されていない場合は例外を実行します。

戻り値: 連結された要素のリスト

連結ストレージ

コマンド==SUNIONSTORE dest key [key1 ...]==SUNIONSTORE dest key [key1 ...]==SUNIONSTORE dest key [key1 ...==

destが存在しない場合は作成し、dest,keysが設定されていない場合はdestを上書きします。destが存在する場合は上書きし、dest,keysが設定されていない場合は例外を実行。

戻り値:連結された要素の数。

ランダムプレゼンテーション

ホームページにはランダムな情報が表示されます:

メッセージセットを作成し、ホームページを開くたびに、そのセットからn個のランダムなエントリーを取り出します。

ランダム実行

マルチスレッド条件では、タスクはredisのセットに保存され、各スレッドは実行するn個のランダムなタスクを取得します。

タスクのセットを作成し、一度にn個のタスクをランダムに取り出します。

白黒リスト

繰り返し不可能で、クエリ効率に優れたセットを使用して、白黒のリストを作成します。

wlホワイトリストとblブラックリストを作成し、リクエストごとに判定します。

ユーザーはブラックリストかホワイトリストに登録されます。

=== ホワイトリストの優先順位 ===

まず、ホワイトリスト => twl の交点を取得します。

ホワイトリストに登録された差分セットは、ブラックリストから除外されます。

== ブラックリストの優先順位 ==

まず、ブラックリスト => tblの交点を取得します。

ブラックリストに登録されたディファレンシャルは、ホワイトリストから除外されます。

== ブラックリストに載っているかどうかの判断 ==

Read next

プロジェクト概要|9つの欠損値処理方法のうち、あなたに合った方法が必ずある。

欠損値を扱う理由\nこの段落は全くのナンセンスです。欠損値を含むサンプルは、削除するか、好きな値で埋めるかのどちらかです。削除すればサンプル情報の一部が失われ、間違った値で埋めればサンプルにノイズが加わります。\nつまり、選択の問題なのです:\n削除の選択

Mar 3, 2020 · 3 min read