在Ubuntu上安装和使用Redis的优点和缺点
1. 下载Redis软件并解压缩。
wget https://github.com/redis/redis/archive/7.0.5.tar.gz
2. Redis的编译和测试
tar xzf redis-7.0.5.tar.gz
cd redis-7.0.5
make
make test
3. 安装redis-py库
sudo apt install redis-tools
pip3 install redis
4.开始
redis-server
or
/usr/local/bin/redis-server
安装后将如下所示。
cd usr/local/bin
usr/local/bin$ ls -ltr
-rwxr-xr-x 1 root root 11642728 12月 7 15:57 redis-server
-rwxr-xr-x 1 root root 5492968 12月 7 15:57 redis-benchmark
-rwxr-xr-x 1 root root 5379584 12月 7 15:57 redis-cli
lrwxrwxrwx 1 root root 12 12月 7 15:57 redis-sentinel -> redis-server
lrwxrwxrwx 1 root root 12 12月 7 15:57 redis-check-rdb -> redis-server
lrwxrwxrwx 1 root root 12 12月 7 15:57 redis-check-aof -> redis-server
6. Redis操作
起動
sudo systemctl start redis
停止
sudo systemctl stop redis
自動起動
sudo systemctl enable redis
再起動
sudo systemctl restart redis
7. Redis的优点和缺点
メリット
1:Redisを利用するメリットの1つめは、複雑な型のデータを操作し保存できること
Redisとは、Key-Valueによってデータを保存するデータベースですが、一般的なKey-Valueのデータベースとは違って、複数のデータ型が用意される。
文字列型やリスト型、ハッシュ型などのさまざまなデータ型が用意されており、複雑な方のデータも操作して保存できる。
2:各種アプリケーションから高速でアクセスできる
Redisとは、メモリ上で動作するデータベースのことで、データへ高速にアクセスできるのが特徴的です。
Redisとは非リレーショナルデータベースでもあるので、リレーショナルデータベースよりも高速にデータにアクセスでき、各種アプリケーションからも高速でアクセスできる。
3:不整合が生じない
Redisを利用するメリットの3つめは、不整合が生じないこと。
Redisとは、トランザクション処理のように複数の操作を一連の流れで実行する際にも、全ての操作が正しく完了しない限り、データが最初の状態に戻る。複数の処理がすべて実行されるか、全く実行されないことが保証されているので、複雑な操作の際にも不整合が検出されない。
非リレーショナルな多様なデータ)をRDBで扱うのはそもそも辛い
4:各言語のクライアントで取得したデータを使用可能
Redisを利用するメリットの4つめは、各言語のクライアントで取得したデータを使用可能なことです。
Redisとは、Key-Valueストアというデータベースサーバーなのですが、一般的なKey-Valueストアと違ってデータ型が用意されている。
データ型を利用することで、JavaやPython、PHPなどの各言語のクライアントで取得したデータを使用できる
LaravelやdjangoやSpringBoot等に組み込むことも可能といえば可能。
※利点がありそうな用途は以下かと思います。
IoTデータの一時保存先として使う時
一時的にしか使わないデータ→キャッシュやセッション情報やワンタイムトークン等
コマンドで削除するか,timeoutを設定しない限りは削除されない。
(古いデータを自動削除されません。)
複雑なデータ型が必要な場合や永続化が必要な場合
pub/subが必要な場合
フェイルオーバーが必要な時。
デメリット
1.揮発性がある
Redisとは、メモリ上で動作するデータベースなので、データに揮発性があります。
データベースが動作するメインメモリは、高速にデータへアクセスできるが、一時的にしか保存できない。
揮発性のあるRedisでは、RDBやAOFなどを利用して、HDDやSSDなどの永続的に保存できるストレージに、
データベースのバックアップを取っておくことが必要となる。
2メモリの消費が大きい
常にメモリを消費してしまい、他の作業に割けるリソースが減ってしまいます。
また、データベースの書き込みや削除を繰り返すことで、
メモリ内のデータが断片化してしまい、コンピューターのパフォーマンスが低下する可能性がある。
3.マルチスレッド処理には向きません。
下記のURLを参考に考察を記載しました。
[DBいろいろ]
(https://prograshi.com/platform/database/concept-when-selecting-db)
近々nosqlであるMongoDBの記事も併せて記載するかもです。