インフラ

【Redis基礎】汎用コマンドとString型について対応するコマンド

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

本記事では、Redisのデータ型のString型と、
データ型に関わらない、汎用コマンドを解説します。

前回の記事では、Redis自体がどういうものなのかについて、
解説したので、本記事では汎用コマンドや、データ型の一つである、
String型を取り上げます。

Redisのデータ型

前回のRedisの概要解説の記事で、
RedisがKVSタイプのインメモリデータベースである旨を解説しました。

参考【Redis基礎】Redisとは何か?Redisの基本を解説

本記事では、Redisの概要について解説します。Redisは、最近のモダンなWebシステムでは使われることが増えてきた、NoSQLの一種です。 Redisの知識は、インフラの知識にも、バックエンドの知 ...

続きを見る

ただ、KVSとはいっても、
Redisには多様なデータ型があるので、
通常のKVSよりも柔軟性が高いという特徴があります。

その中でも代表的なのが、

ポイント

  • Strings
  • Lists
  • Sets
  • Hashes
  • Sorted sets

あたりでしょうか。
(これ以外にもあります。)

本記事ではそんなRedisのデータ型の中でも
特に使用頻度が高いであろうString型について取り上げます。

Redisの汎用コマンド

String型の紹介の前に、
型に関わらず使用する汎用コマンドを一部紹介します。

KEYS

Redisでキーの一覧を取得したいときは、

KEYS *

というふうにすると、すべてのキーを取得できます。
* はワイルドカードで、全てという意味ですね。

しかし、KEYSコマンドは、
実行時間がかかるので本番環境とかではあまり使わない方が良いとされています。

ドキュメントには以下のようなコマンド例が紹介されていますね。

redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*

https://redis.io/commands/keys/

EXISTS

キーが存在するかどうかの確認は、

EXISTS X

というふうにします。
この場合、Xがキー名にあたります。

存在する場合は、1を返し、
存在しない場合は、0を返します。

キーを複数設定することも可能で、
その場合は、マッチした数を返します。

TYPE

データ型を確認する際は、

TYPE X

というふうにします。
返り値としては、stringやhashなどというように、
データ型が返されます。

DEL

削除は、

DEL X

というふうに行い、
返り値は、削除したキーの数になります。

Macとマグカップの画像

String型

プログラミング的に考えると、Stringというと、
文字列がぱっと思い浮かびますが、
RedisにおけるString型は文字列に限らず、
整数、小数、バイナリーデータなどもこのStringに該当します。

いわゆるKVSに相当するデータ型といえるだろう。

String型に対応するコマンド

String型の対応するコマンド一覧は、
こちらに書かれております。

https://redis.io/commands/?group=string

この中から一部抜粋します。

GETとSET

前回の記事でも少しだけ触れましたが、
値の取得はGETで行います。

GET X

これに対して、値の保存は、SETで行います。

SET X user

MGETとMSET

こちらは、GETとSETの複数設定バージョンです。

 MSET user1 tarou user2 hanako
 MGET user1 user2

GETRANGEとSETRANGE

こちらは、挿入・取得する位置などを指定できるGETとSETです。

SET test testtarou
GET test # testtarouが返される
GETRANGE test 0 3 # testが返される
SETRANGE test 0 first
GET test # firstarouが返される

https://redis.io/commands/setrange/

APPEND

既に存在するキーに対して、末尾に引数の内容を追加します。

SET user yamada
APPEND user syoutarou

ちなみに、キーが存在しない場合は、
新しく作成します。

STRLEN

こちらは、キーの値の長さを返します。

STRLEN user

INCR

String型には数値を入れることもできるので、
数値増加のコマンド(INCR)などを使用することもできます。

SET COUNT 100
INCR COUNT # INCRは1だけ増加させる
GET COUNT # 101が返される

INCRコマンドは、値が数値のときのみ使えます。

INCRBY

こちらは、増加させる値を指定できるINCRのような感じです。

SET COUNT 100
INCRBY COUNT 102 # 102増加させる
GET COUNT # 202が返される

DECRとDECRBY

こちらは、数値を減少させるバージョンのINCRとINCRBYに該当します。

SETコマンドのオプション

SETコマンドには、豊富なオプションが用意されています。
その中から一部紹介します。

https://redis.io/commands/set/

EX

EXオプションは、TTL(Time To Live)、すなわち失効時間を設定することができます。

SET anotherkey "will expire in a ten second" EX 10
GET anotherkey # 10秒後に行うと、nilになる。

ちなみにTTLコマンドでキーの残りのTTLを確認できます。

NX

NXオプションは、キーが存在しない場合に値を設定します。

SET user yamada
SET user tarou NX
GET user # yamadaが返される
SET user tanaka
GET user # tanakaが返される
  • この記事を書いた人
  • 最新記事

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

おすすめ記事はこちら

Vim/Neovimプラグイン 1

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

VimとNeovimの比較 2

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

Ruby変数やすべてがオブジェクトについて 3

本記事は、Rubyの基礎文法である、変数や真偽値、論理演算子に触れると同時に、「すべてがオブジェクト」というRubyの特徴的な思想についても解説します。 この思想は、Rubyの文法の根幹になっているの ...

4

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

5

エンジニアになるには? プログラミングは、専門性が高く自分一人で勉強するのが大変に感じることも多いですよね。 そこで本記事では「おすすめのプログラミングスクール5選」を特徴と、現役エンジニア目線で優れ ...

-インフラ