RedisにはStrings, Lists, Sets, Hashes, Sorted Setsなどのデータ型があります。このページでは最も基本的なString型の操作を説明します。命名から判断すると、String型には文字列しか格納できないように見えますが、文字列以外にバイナリや数値も格納できます。数値を格納した場合は、加算や減算の操作も可能です。
前提
公式ドキュメント
参考になる公式ドキュメントを以下に示します。
動作確認済環境
- Rocky Linux 8.6
- Redis 5.0.3
CRUD操作
単一のSETとGET
以下のようにSETコマンドを発行すると、値を設定する事ができます。
127.0.0.1:6379> SET key01 value01 OK 127.0.0.1:6379> SET key02 value02 OK 127.0.0.1:6379>
GETコマンドで値の取得が可能です。
127.0.0.1:6379> GET key01 "value01" 127.0.0.1:6379> GET key02 "value02" 127.0.0.1:6379>
DELコマンドでキーの削除が可能です。
127.0.0.1:6379> DEL key01 (integer) 1 127.0.0.1:6379> GET key01 (nil) 127.0.0.1:6379>
複数のSETとGET
MSETやMGETを使用すると、複数のキーを同時に設定できます。MSETの使用例は以下の通りです。
127.0.0.1:6379> MSET key03 value03 key04 value04 OK 127.0.0.1:6379>
MGETの使用性は以下の通りです。
127.0.0.1:6379> MGET key03 key04 1) "value03" 2) "value04" 127.0.0.1:6379>
TTL
TTLの設定
RedisのkeyはTTLを設定し、一定時間後に自動削除する事もできます。例えば、key04に対してTTL(秒単位指定)を設定するには、以下のようにEXPIREコマンドを使用します。
127.0.0.1:6379> EXPIRE key04 30 (integer) 1 127.0.0.1:6379>
TTLの確認
期限切れになる前は以下のようにGETコマンドで値の取得が可能です。また、TTLコマンドで残り時間(秒単位表示)を確認する事もできます。
127.0.0.1:6379> GET key04 "value04" 127.0.0.1:6379> TTL key04 (integer) 24 127.0.0.1:6379>
期限切れになると、以下のようにGETコマンドで値の取得ができなくなります。TTLコマンドは-2を返します。
127.0.0.1:6379> GET key04 (nil) 127.0.0.1:6379> TTL key04 (integer) -2 127.0.0.1:6379>
TTLコマンドの戻り値を整理すると以下のようになります。
戻り値 | 意味 |
---|---|
正の数 or 0 | 期限切れになるまでの時間(秒) |
-1 | TTLが設定されていない |
-2 | 期限切れの状態 |
SETとTTLの同時設定
以下のようにSETコマンドにEXを付与すると、SETと同時にTTLを設定する事ができます。
127.0.0.1:6379> SET key05 value05 EX 30 OK 127.0.0.1:6379>
算術操作
加算
INCRやINCRBYコマンドを使用すると、値の加算ができます。
127.0.0.1:6379> SET counter 100 OK 127.0.0.1:6379> INCR counter (integer) 101 127.0.0.1:6379> INCRBY counter 5 (integer) 106 127.0.0.1:6379>
減算
DECRやDECRBYコマンドを使用すると、値の加算ができます。
127.0.0.1:6379> SET counter 100 OK 127.0.0.1:6379> DECR counter (integer) 99 127.0.0.1:6379> DECRBY counter 10 (integer) 89 127.0.0.1:6379>
小数
INCRBYFLOATコマンドを使用すると、小数の操作ができます。
127.0.0.1:6379> SET counter 10 OK 127.0.0.1:6379> INCRBYFLOAT counter 0.1 "10.1" 127.0.0.1:6379> INCRBYFLOAT counter -0.3 "9.8" 127.0.0.1:6379>