地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Redis】計算量がO(N)以上のやつ

Redisの計算量でO(N)以上の値のやつを抜粋。データ量が多いみたいなケースでこれらの操作がある場合はレビュー観点として見ていく必要がある。

O(N)
BITCOUNT
BITOP
BITPOS
CLIENT KILL
CLIENT LIST
CLUSTER ADDSLOTS
CLUSTER COUNT-FAILURE-REPORTS
CLUSTER DELSLOTS
CLUSTER KEYSLOT
CLUSTER RESET
CLUSTER SLOTS
COMMAND
COMMAND GETKEYS
COMMAND INFO
DEL
GETRANGE
HDEL
HGETALL
HKEYS
HMGET
HMSET
HVALS
KEYS
LINDEX
LINSERT
LREM
LSET : 最初と最後の要素の設定はO(1)
LTRIM
MEMORY USAGE
MGET
MIGRATE
MSET
MSETNX
PFMERGE
PSUBSCRIBE
PUBSUB : NUMPATサブコマンドに対してはO(1)
PUBLISH : O(N+M) Nはクライアントが受け取っているチャンネル数。Mが購読しているパターンの数
PUNSUBSCRIBE : O(N+M) Nはクライアントが受け取っているチャンネル数。Mが購読しているパターンの数
RESTORE : 新しいキーの作成はO(1)、値のシリアライズの段階で O(N*M)。Sorted Setの値は、O(N*M*log(N))(Sorted Setの挿入がO(log(N))だから)
SCRIPT EXISTS
SCRIPT FLUSH
SCRIPT LOAD
SDIFF
SDIFFSTORE
SINTER : O(N*M) ワーストケースはNが最も小さい集合のカーディナリティで、Mが集合の数
SINTERSTORE : O(N*M) ワーストケースはNが最も小さい集合のカーディナリティで、Mが集合の数
SMEMBERS
SORT : O(N+M*log(M))
SRANDMEMBER : カウントの引数がない場合はO(1)
SREM
SUBSCRIBE
SUNION
SUNIONSTORE
TOUCH
UNSUBSCRIBE
ZINTERSTORE : O(N*K)+O(M*log(M)) ワーストケースはNが最も小さい入力Sorted Setで、Kが入力Sorted Setの数、Mが結果のSorted Set中の要素数
ZUNIONSTORE : O(N)+O(M log(M)) ワーストケースはNが最も小さい入力Sorted Setで、Mが結果のSorted Set中の要素数
XINFO
XTRIM
XRANGE
XREVRANGE
XREAD