Redis

Page content

Intro

Redis は Remote Dictionary Server の略で高速でオープンソースなインメモリ key-value store である。 " データベース、キャッシュ、メッセージブローカー、キューとして利用される。

Usage example

Docker を用い Redis Server を run する。

docker run -dit --rm --name=my-redis -p 6379:6379 redis:6.0.8
docker exec -it my-redis redis-cli

Redis コンソール内

SET name "keigo"
GET name
>> "keigo"

key を上書きするのを防ぐため Namespaces を作ることがある。

慣習的に Namespace を区切るために:や/を使うことが多い。

SET user:keigo:address "Tokyo"
SET user:taro:address "Osaka"

GET user:keigo:address
>> "Tokyo"

GET user:taro:address
>> "Osaka"

Mathematical commands

値を加算するなど算術処理をすることもできる。

SET score:man_c 0
INCR score:man_c
>> (integer) 1
INCRBY score:man_c 3
>> (integer) 4
DECRBY score:man_c 5
>> (integer) -1

MSET score:man_c 5 score:man_u 3
MGET score:man_c score:man_u
>> 1) "5"
>> 2) "3"

Data Types of Redis

Redis では様々なデータタイプを持つことができる。

HyperLogLog

Bloom Filters のようなデータ構造で false positive に対してある程度許容でき、データセットが大きいケースに有効。

Bloom Filters とは m bit の領域を 0 で初期化し、追加する要素を k 個のハッシュ関数に通し得た 0~m-1 の値を bit 領域に対する index とみなし、その bit を立てることで実装される。

つまり値の存在確認、追加ともに O(k)で実行できるデータ構造になっている。

参考

Redis official page

Redis とは?

Complete Intro to Databases

ブルームフィルタ Wikipedia