Redisの設定とNoSQLの基本コマンド

Redisの設定とNoSQLの基本コマンド

1.リレーショナルデータベースと非リレーショナルデータベース

リレーショナル データベース

  • リレーショナル モデルに基づいて構築された構造化データベース

  • 一般的にレコード指向

  • 含む

    Oracle、MySQL、SQLServer、Microsoft Access、DB2 等

非リレーショナル データベース

  • 主流のリレーショナル データベース以外のデータベースは、非リレーショナルと見なされます

  • 含む

    Redis、MongBD、Hbase、CohDB など

違い

1. さまざまなデータ保存方法

リレーショナル データベースと非リレーショナル データベースの主な違いは、データの格納方法です。リレーショナル データは本質的に表形式であるため、データ テーブルの行と列に格納されます。データテーブルは相互に関連付けて共同で保存でき、データの抽出も簡単です。
対照的に、非リレーショナル データはテーブルの行と列に収まらず、大きなチャンクにグループ化されます。非リレーショナル データは通常、ドキュメント、キーと値のペア、グラフ構造などのデータセットに格納されます。データとその特性は、データの保存方法と抽出方法の選択に影響を与える最大の要因です。

2. さまざまな展開方法

SQL データベースと NoSQL データベースの最大の違いは拡張方法にあるかもしれませんが、増大する需要に対応するには、当然拡張が必要です。
より多くの並行性をサポートするために、SQL データベースはスケールアップされます。つまり、処理能力を高め、より高速なコンピューターを使用して、同じデータ セットをより高速に処理できるようにします。データはリレーショナル テーブルに格納されるため、多くのテーブルが関係する可能性がある操作のパフォーマンス ボトルネックは、コンピューターのパフォーマンスを向上させることによって克服する必要があります。SQL データベースには拡張の余地がたくさんありますが、最終的には垂直拡張の上限に達します。
一方、NoSQL データベースは水平方向にスケーリングします。非リレーショナル データ ストレージは本質的に分散されているため、リソース プールに共通のデータベース サーバー (ノード) を追加して負荷を共有することにより、NoSQL データベースを拡張できます。

3. トランザクションのさまざまなサポート

データ操作に高いトランザクション性が必要な場合、または複雑なデータ クエリで実行計画を制御する必要がある場合は、パフォーマンスと安定性の点で従来の SQL データベースが最適です。SQL データベースは、トランザクションの原子性に対するきめ細かい制御をサポートしており、トランザクションを簡単にロールバックできます。
NoSQLデータベースもトランザクション操作は可能ですが、安定性はリレーショナルデータベースとは比べ物にならないので、操作のスケーラビリティと大量のデータ処理が真価を発揮します。

まとめ

  • 非リレーショナル データベース

    1.データはキャッシュに保存され、速度/クエリデータの読み取りに役立ちます

    2. アーキテクチャ内の柔軟な配置

    3.分散型で拡張性が高い

  • リレーショナル データベース

    1. 高セキュリティ(持続性)

    2.強力なトランザクション処理能力

    3. 強力なタスク制御能力

    4. ログのバックアップ、リカバリ、およびディザスタ リカバリを実行する機能が強化されました

2.Redisの紹介

Redis (Remote Dictionary Server) は、C で記述されたオープン ソースの NoSQL データベースです。

Redis はメモリベースで実行され、永続性をサポートし、現在の分散アーキテクチャに不可欠な要素であるキーと値 (キーと値のペア) のストレージ形式を採用しています。

Redis サーバー プログラムは単一プロセス モデルです。つまり、複数の Redis プロセスを 1 つのサーバーで同時に開始できます。Redis の実際の処理速度は、メイン プロセスの実行効率に完全に依存します。サーバー上で Redis プロセスが 1 つしか実行されていない場合、複数のクライアントが同時にアクセスすると、サーバーの処理能力がある程度低下します。複数の Redis プロセスが同じサーバーで開始された場合、Redis はサーバーの CPU に多くの圧力をかけ、同時に処理能力を向上させます。つまり、実際の運用環境では、実際のニーズに応じて、いくつの Redis プロセスを開くかを決定する必要があります。高い同時実行性に対するより高い要件がある場合は、同じサーバーで複数のプロセスを開くことを検討してください。CPU リソースが比較的逼迫している場合は、1 つのプロセスを使用できます。

  • Redis の利点
    1. データの読み取りと書き込みの速度が非常に高速です。データの読み取り速度は最大 110,000 回/秒に達し、データの書き込み速度は最大 81,000 回/秒に達します。

    2. 豊富なデータ タイプのサポート: キー値、文字列、リスト、ハッシュ、セット、ソート セットなどのデータ タイプ操作をサポートします。

    追伸:

    文字列 (整数型、浮動小数点型、文字型のいずれかで、まとめて要素と呼ばれます)

    リスト リスト (実装キュー、要素は一意ではなく、先入れ先出しの原則)

    Hash ハッシュ セット (ハッシュのキーは一意である必要があります)

    セット コレクション (個別の要素)

    ソートされたセットの順序付きコレクション

    3. データ永続化のサポート: メモリ内のデータをディスクに保存し、再起動時に再度ロードして使用できます。

    4. アトミック性: すべての Redis 操作はアトミックです。

    5.データバックアップをサポートします。つまり、マスタースレーブモードでのデータバックアップです。

Redis はメモリベースのデータベースであり、キャッシュは最も一般的に使用されるシナリオの 1 つです。さらに、Redis の一般的なアプリケーション シナリオには、最新の n データ、リーダーボード アプリケーション、カウンター アプリケーション、ストレージ関係、リアルタイム分析システム、およびログ レコードを取得する操作も含まれます。

  • リードのスピードが速い理由

    1. Redis は純粋なメモリ構造であり、ディスク I/O などの時間のかかる操作を回避します

    2. Redis コマンド処理のコア モジュールはシングル スレッドであるため、ロックの競合、スレッドの頻繁な作成と破棄のコストが削減され、スレッド コンテキストの切り替えの消費が削減されます。

    3. I/O 多重化メカニズムが採用され、同時実行効率が大幅に向上します。

    PS: Redis 6.0 で新しく追加されたマルチスレッドは、ネットワーク リクエストの処理にのみマルチスレッドを使用しますが、データの読み取りおよび書き込みコマンドは引き続きシングル スレッドで処理されます。

3. Redis のインストールとデプロイ

[root@lwb ~]# systemctl stop firewalld
[root@lwb ~]# setenforce 0
[root@lwb ~]# yum install -y gcc-c++ make

[root@lwb ~]# cd /opt
[root@lwb opt]# tar xf redis-5.0.7.tar.gz
[root@lwb opt]# cd redis-5.0.7/
[root@lwb redis-5.0.7]# make prefix=/usr/local/redis install

[root@lwb redis-5.0.7]# cd utils
[root@lwb utils]# ./install_server.sh

[root@lwb utils]# ln -s /usr/local/redis/bin/* /usr/local/bin

写真の説明を追加してください

写真の説明を追加してください

[root@lwb utils]# vim /etc/redis/6379.conf

写真の説明を追加してください

[root@lwb utils]# /etc/init.d/redis_6379 restart

#可以在全局使用redis
[root@lwb utils]# ln -s /etc/init.d/redis_6379 /usr/local/bin/redis

#进入redis
[root@lwb utils]# redis-cli -h 192.168.36.40 -p 6379

写真の説明を追加してください

4.Redisコマンドツール

redis-server    :用于启动Redis的工具
redis-benchmark :用于检测Redis在本机的运行效率
redis-check-aof :修复AOF持久化文件
redis-check-rdb :修复RDB持久化文件
redis-cli       :Redis命令行工具
redis-cli -h host -p port -a passwd
-h:指定远程主机
-p:指定Redis服务的端口号
-a:指定密码,未设置数据库密码可以省略-a选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的Redis数据库

redis-cli -h 192.168.36.40 -p 6379

5. Redis ベンチマーク テスト ツール

redis-benchmark は、Redis サービスのパフォーマンスを効果的にテストできる公式の Redis パフォーマンス テスト ツールです。

文法形式:

redis-benchmark [选项] [选项值]

オプション:

-h    :指定服务器主机名
-p    :指定服务器端口
-s    :指定服务器socket
-c    :指定并发连接数
-n    :指定请求数
-d    :以字节的形式指定SET/GET值的数据大小
-k    :l=keep alive 0=reconnect 
-r    :SET/GET/INCR 使用随机key,SADD使用随机值
-P    :通过管道传输<numreq>请求
-q    :强制退出redis。仅显示query/sec值
--csv :以csv格式输出
-l    :生成循环,永久执行测试
-t    :仅运行以逗号分隔的测试命令列表
-I    :Idle模式。仅打开N个idle连接并等待
#向IP地址为192.168.36.40、端口为6379的Redis服务器发送100个并发连接与100000个请求测试性能
redis-benchmark -h 192.168.36.40 -p 6379 -c 100 -n 100000

#测试存取大小为100字节的数据包的性能
redis-benchmark -h 192.168.36.40 -p 6379 -q -d 100

#测试本机上redis服务在运行set与lpush操作时的性能
redis-benchmark -t set,lpush -n 1000000 -q

6. Redis データベース共通コマンド

set      :存放数据,命令格式为 set key value
get      :获取数据,命令格式为 get key
keys *   :查看当前数据库中所有键
keys v*  :查看当前数据库中以v开头的数据
keys v?  :查看当前数据库中以v开头后面包含任意一位的数据
keys v?? :查看当前数据库中以v开头后面包含任意两位的数据
exists   :判断key是否存在,命令格式 exists key
del      :删除key,命令格式 del key
type     :查看key的类型,命令格式 type key
rename   :重命名,命令格式 rename key1 key2,若key2已存在则覆盖
renamenx :将key1修改为key2之前判断key2是否存在,不存在则重命名,若存在则无效
dbsize   :查看当前数据库中key的数目

config set requirepass 密码 :设置密码
auth 密码 :使用密码
config get requirepass :查询密码
config set requirepass '' :取消密码

7. Redis マルチデータベース共通コマンド

Redis は複数のデータベースをサポートしています. Redis にはデフォルトで 16 のデータベースが含まれており、データベース名には 0 から 15 までの番号が付けられています。複数のデータベースは互いに独立しており、互いに干渉しません

#多数据库间切换
select 序号

#多数据库间移动数据
move key 序号

#清空当前数据库数据
flushdb

#清空所有数据库的数据,慎用!
flushall

おすすめ

転載: blog.csdn.net/liwenbin19920922/article/details/126467072