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