本記事では、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
というふうに行い、
返り値は、削除したキーの数になります。
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が返される