Redisのは、はじめに - はじめに、インストール、設定

A、Redisの紹介

Redisのは完全に無料のオープンソースであり、BSDは、契約を遵守し、それが高性能であるキーと値のデータベース。

- Redisのと他のキーと値のキャッシング製品は、次の3つの特徴があります。
1.Redisサポートデータの永続性を、メモリ内のデータをディスクに保存することができ、負荷へのリブートあなたは再利用することができたとき。
また、ストレージ・リスト、セット、ZSET、ハッシュおよび他のデータ構造を提供しながら、2.Redisだけで、簡単なキーと値のデータ型をサポートしています。
バックアップデータ、すなわちデータバックアップマスタ・スレーブモードの3.Redisサポート。

背景を使用して2つ、Redisの

これは何の問題もないように思われるので、私たちの日常のJava Web開発では、すべての一般的なシステムタスクのために、データの格納にデータベースを使用している一般的に、高い同時実行の場合には存在しないが、それは、大量のデータに来るときそのような場面を購入するなど、いくつかの商品の需要、または家庭訪問モーメントため、ディスクが直面している問題の店舗システムのデータに大きな、シングルユースデータベース、ディスクの読み取り/書き込み速度が比較的遅く、深刻なパフォーマンスの問題点、インスタント要求の数千人が入ってくる、非常に短時間での読み取り/書き込み操作の完全な何千人に必要なシステム、より頻繁にデータベースに耐えることができないよりも、この時点では、データベースシステムは、最終的にサービス一顧をリードし、原因の麻痺に非常に簡単です深刻な生産上の問題マシン。

上記の問題を克服するために、JavaのWebプロジェクトは、多くの場合、紹介のNoSQLメモリベースのデータベースである技術を、そしていくつかの永続化機能を提供します。
RedisのMongoDBのは、現在最も広く使用されているのNoSQLであり、それは技術をRedisの、その性能が優れており、サポートすることができますあたり数十万人の第二読み取り/書き込み操作を、その性能はこれまでデータベースを超え、また、分散したクラスタをサポートしていますスタイルは、マスター・スレーブの同期設定は、より安心で、それはまた、ということです、より多くのデータをメモリに格納されるように、原則的に無制限の拡大することができ、特定の取引の能力をサポート高い同時実行性とデータの下のシーンの安全性を保証し、一貫性。

三、Redisの利点

1.非常に高いパフォーマンス - Redisのが速いよう11万回/ sと読むことができ、書き込み速度は81000回/秒です。
2.豊富なデータ・タイプ - Redisのバイナリケース動作の文字列、リスト、ハッシュ、セットおよび順序集合データ・タイプをサポートします。
3.アトミック - Redisのすべての操作はアトミックであり、原子のRedisはまた、完全な、いくつかの操作の後の実装をサポートしています。
4.豊富な機能を備えた - Redisのも支持体には、パブリッシュ/サブスクライブ、通知、キーの有効期限などの特性上。

四、RedisのNoSQLのストレージおよび他の異なります

1.Redisを有するより複雑なデータ構造それらにアトミック操作を提供する他のデータベースの進化経路とは異なります。一方、Redisのデータ型は、追加の抽象化を必要とせずに、プログラマに対して透過的、基本的なデータ構造に基づいています。
2.Redisはメモリで実行するが、ディスクに保存することができるデータは、ハードウェアメモリの量よりも大きくすることができないので、そうトレードオフ高速メモリ読み出し時、及び異なるデータセットを書き込みます。あなたが内部のRedis非常に複雑な問題の多くを行うことができますので、インメモリ・データベースのもう一つの利点は、同じ複雑なデータ構造に比べて、ディスク上の非常に簡単なメモリで動作します。彼らはランダムアクセスを必要としないので、一方、そのコンパクトディスクフォーマットの面で、追加の方法を生成します。

JavaWebでのRedisのV.応用

JavaのWeb内Redisの二つの主要なシナリオがあります:
1. キャッシュ -保存頻繁に使用されるデータ;
2. 高速の読み取り/書き込み -それは高速な読み取り/書き込み使用。

1.キャッシュ

データベースへの毎日のアクセスでは、書き込み操作への読み取り操作の数はるかに約1の割合より:9-3:可能性がありそうであるように、図7は、かなりの書き込みに比べ読み取られます。私たちは、データベースに読み書きするためにSQL文を使用すると、データベースが比較的遅いプロセスである、インデックスに対応するデータを取り戻すためにディスクに移動します。

我々はRedisの中にデータを入れた場合、それはかなり速いスピードを読み書きしますので、メモリに直接置かれていることを、すぐによりメモリリードので、メモリ内のデータを読み取るために直接サーバーを聞かせて、ディスクの書き込み速度圧力の多くは、と大幅にデータベースを軽減しますが、限られたコストで、一般的に私たちは、このようなユーザーのログイン情報として、いくつかの一般的なおよび主要なRedisのデータストアを使用しているため、データストレージ用メモリの使用はオーバーヘッド比較的大きいです。

Redisのストレージを使用する際に一般的に、我々は、次のような特徴を考慮する必要があります
。1.ビジネスデータは、それを使用して?どのようにヒット?ヒット率が非常に低い場合、書き込みキャッシュする必要はありません。
2.マルチオペレーションの業務データを読み取りまたは書き込み操作とより多くのですか?書き込み操作とデータベースへの書き込みに、より頻繁に必要がある場合は、キャッシュを使用する必要はありません。
3.どのようにビジネスデータのサイズはいますか?あなたはファイルのメガバイトの店舗数百にしたい場合は、キャッシュは多くの圧力をもたらすので、必要はありません。
これらの問題を検討した後、あなたはキャッシュを使用する必要性を感じた場合、それを使用します!

下に示すように、Redisの読み取り論理レジスタとして使用:
ここに画像を挿入説明
グラフから、我々は次の2点を知ることができます。

第1読取データ、Redisのに失敗した読み出しデータが、プログラムがデータベースがトリガされる読み取るとき、データが読み出され、Redisの中に書き込まれ、
第二及びその後の必要性が読み場合データは、それが直接、Redisのを読み取り速度が大幅に改善されるように、プロセスの終了後にデータを読み出します。
上記の分析からも、データベースへの依存を低減しつつ、頻繁に速度増加を読み取るためにRedisのニーズを使用してルーチンを処理するデータは非常にデータベースことは、明らかであろう、読み出し動作の可能性よりもはるかに大きいが書き込み動作であり、知ることができます圧力が大幅に低減されます。

のは、プロセスへの書き込みを見てみましょう、読み込む論理の分析:
ここに画像を挿入説明
としては、プロセス、更新または書き込み操作から見ることができ、操作が複数のRedisを必要とし、実際のアプリケーションシナリオ場合、業務データは、読み取り、書き込みの数よりもはるかに大きいです回数はRedisのを使用する必要はありません。

2.高速読み取り/書き込みアプリケーション

今日のインターネットでは、状況はなど、李コンサートのチケットをつかむために、ダブル11 Lynxなど、パワーシステム事業のシーンスパイク財への最も一般的な方法、より多くの高い同時実行の存在である、これらの機会があります処理のためのデータベースの単なる使用は、サービス一顧、崩壊データベースに麻痺している間、ユーザーの貧弱なユーザーエクスペリエンスの損失が発生に至るまで、非常に遅くなりますされていない場合ならば、何千インスタント要求であるが、サーバに到着しますマシンが、そのような機会が許可されていません!

我々は機会のような高い同時実行性の要件に対処するためのRedisを使用する必要があるので、我々はにフローチャートリクエストを見てみましょう:
ここに画像を挿入説明
私たちは、さらに、このプロセスを示しています。

要求がサーバに到着すると、唯一のサービスデータ(在庫商品スパイク)はそれほど大きく高速応答のニーズを満たすために、読み書きの速度を向上させることができ、任意の操作なしRedisのリーダー、データベース上に担持されました。
しかし、キャッシュされたデータはまだ、データベースに格納された持続性を必要とされる読み取り操作が後で完全Redisの要求/書き込みであるので、それは、高速読み取り/書き込み動作が終了するかどうかを判断するために行くだろう、裁判官は、通常のスパイクます株価は確立されていない場合は赤い封筒夜12時設立の量は、それがデータベースを操作しません、ゼロであり、真の場合は、トリガイベントは、このように永続的な作業を完了し、1回のバッチの形でデータベースにRedisのデータをキャッシュします。

六、Redisのインストール

インストールの下1.Window

ダウンロード:https://github.com/MSOpenTech/redis/releases

Redisのは、32ビットおよび64ビットをサポートしています。Cドライブにこのシステムのプラットフォームの選択の実際の状況に応じて、ここでRedis-x64-xxx.zipダウンロード・アーカイブ、解凍フォルダはRedisのと改名
ここに画像を挿入説明
フォルダを開き、次のように:
ここに画像を挿入説明
開くCMDウィンドウCにディレクトリを変更するcdコマンドを使用して:\実行のRedis:

redis-server.exe redis.windows.conf

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
ここに画像を挿入説明
上图的提示信息告诉了我们:① Redis 当前的版本为 3.0.100/位数为64 位;② Redis 运行在 6379 端口;③ Redis 进程的 PID 为 15292;

至此,Redis服务端就启动完成了。接下来进行Redis客户端的启动。

Redis目录下有一个redis-cli.exe 文件,这是 Redis 自带的一个客户端工具,它可以用来连接到我们当前的 Redis 服务器。
启动客户端需要另启一个 cmd 窗口,原来的服务端窗口不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:

redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对:

set myKey abc

取出键值对:

get myKey

ここに画像を挿入説明
至此,我们便在 Windows 的环境下安装好了 Redis。

2.Linux环境下安装

下载地址: http://redis.io/download,下载最新稳定版本。

本教程使用的最新文档版本为 2.8.17,下载并安装:

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务.

$ cd src
$ ./redis-server

注意这种方式启动redis 使用的是默认配置。 也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src
$ ./redis-server ../redis.conf

redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

七、Redis 配置

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。

你可以通过 CONFIG 命令查看或设置配置项。
语法

Redis CONFIG 命令格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
实例
redis 127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"

使用 * 号获取所有配置项:

实例
redis 127.0.0.1:6379> CONFIG GET *

"dbfilename"
"dump.rdb"
"requirepass"
""
"masterauth"
""
"unixsocket"
""
"logfile"
""
"pidfile"
"/var/run/redis.pid"
"maxmemory"
"0"
"maxmemory-samples"
"3"
"timeout"
"0"
"tcp-keepalive"
"0"
"auto-aof-rewrite-percentage"
"100"
"auto-aof-rewrite-min-size"
"67108864"
"hash-max-ziplist-entries"
"512"
"hash-max-ziplist-value"
"64"
"list-max-ziplist-entries"
"512"
"list-max-ziplist-value"
"64"
"set-max-intset-entries"
"512"
"zset-max-ziplist-entries"
"128"
"zset-max-ziplist-value"
"64"
"hll-sparse-max-bytes"
"3000"
"lua-time-limit"
"5000"
"slowlog-log-slower-than"
"10000"
"latency-monitor-threshold"
"0"
"slowlog-max-len"
"128"
"port"
"6379"
"tcp-backlog"
"511"
"databases"
"16"
"repl-ping-slave-period"
"10"
"repl-timeout"
"60"
"repl-backlog-size"
"1048576"
"repl-backlog-ttl"
"3600"
"maxclients"
"4064"
"watchdog-period"
"0"
"slave-priority"
"100"
"min-slaves-to-write"
"0"
"min-slaves-max-lag"
"10"
"hz"
"10"
"no-appendfsync-on-rewrite"
"no"
"slave-serve-stale-data"
"yes"
"slave-read-only"
"yes"
"stop-writes-on-bgsave-error"
"yes"
"daemonize"
"no"
"rdbcompression"
"yes"
"rdbchecksum"
"yes"
"activerehashing"
"yes"
"repl-disable-tcp-nodelay"
"no"
"aof-rewrite-incremental-fsync"
"yes"
"appendonly"
"no"
"dir"
"/home/deepak/Downloads/redis-2.8.13/src"
"maxmemory-policy"
"volatile-lru"
"appendfsync"
"everysec"
"save"
"3600 1 300 100 60 10000"
"loglevel"
"notice"
"client-output-buffer-limit"
"normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
"unixsocketperm"
"0"
"slaveof"
""
"notify-keyspace-events"
""
"bind"
""
编辑配置

你可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。

语法

CONFIG SET 命令基本语法:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

实例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel

"loglevel"
"notice"
Redis配置具体参数说明:https://www.cnblogs.com/jianmingyuan/p/11089406.html

Redis持久化配置

redis有两种持久化方式:RDBAOF
具体差别跟优缺点可参考redis数据的两种持久化方式对比

RDB配置方式

默认情况下,是快照RDB的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb

redis.conf默认配置:

save 900 1
save 300 10
save 60 10000

配置含义:

900秒内,如果超过1个key被修改,则发起快照保存

300秒内,如果超过10个key被修改,则发起快照保存

60秒内,如果1万个key被修改,则发起快照保存

默认配置不方便看效果,可将快照频率设大一点,在redis.conf中增加一行:

save 10 1

保存后,启动redis服务端和客户端。在客户端输入命令:
ここに画像を挿入説明
输入完,发现dump.rdb文件的修改日期变了,并且redis服务端增加了保存日志:
ここに画像を挿入説明
接下来,重启redis服务端和客户端,看数据是否真的持久化了:
ここに画像を挿入説明
取到对应key的value值与之前设置的相同,说明使用RDB快照持久化成功了。

AOF 配置方式

redis.conf默认配置:

appendonly no

配置文件中的appendonly修改为yes,开启AOF持久化。 开启后,启动redis服务端,发现多了一个appendonly.aof文件
ここに画像を挿入説明
使用AOF做持久化,每一个命令以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写,使得 AOF文件的体积不会超出保存数据集状态所需的实际大小。实际上,AOF持久化并不会立即将命令写入到硬盘文件中,而是写入到硬盘缓存,在接下来的策略中,配置多久来从硬盘缓存写入到硬盘文件。所以在一定程度一定条件下,还是会有数据丢失,不过你可以大大减少数据损失。

appendfsync always
appendfsync everysec
appendfsync no

配置含义:

always: 每次操作都会立即写入aof文件中

everysec: 每秒持久化一次(默认配置)

no: 不主动进行同步操作,默认30s一次

当然always一定是效率最低的,个人认为everysec就够用了,数据安全性能又高。Redis也允许我们同时使用两种方式,再重启redis后会从AOF中恢复数据,因为AOF比RDB数据损失小。

設定が完了すると、コマンドを入力し、Redisのクライアントを起動します。
ここに画像を挿入説明
最終的なflushallは、すべてのキーをオフにしています。Appendonly.aofファイルを開く、あなたが見ることができます
ここに画像を挿入説明
(コマンドはまた、Redisの契約に従って増加させることができる)最後尾flushallを削除し、データを永続本当にあるかどうかを確認するために、クライアントとサーバーを再起動します。
ここに画像を挿入説明
値が予め設定された値を取得します同様に、永続AOF命令が成功しています。

要約:永続モードの二種類が、RDBモデルは永続性、満足したときに、データがディスクに格納されているの周波数を指定し、AOFをディスクキャッシュに格納されている各動作モードを指令、構成項目appendfsyncディスクキャッシュの同期のコレクションは、ディスク・ストレージへのコマンドの頻度を指定します。相対的に言って、ボリュームはRDB AOFファイルよりも大きいことが、失われたデータ復旧少なくなります。

AOFは、すべての書き込み操作は、あなたがFLUSHALLコマンドを慎重に実装されていない場合、フォーマットのRedisプロトコルを保存するために、データベース上の書き込みを行ったが、長いAOFファイルは長い間、サーバーが停止しているように、上書きされていない限り整然とでファイルを保存しているのでファイルの削除FLUSHALLコマンドAOFの終わり、とのRedisを再起動して、あなたはFLUSHALLの実行前の状態にデータセットを復元することができます。

参考リンク:

Redisのチュートリアル-チュートリアルルーキー
これにRedisの[エントリ]!

リリース5元の記事 ウォンの賞賛2 ビュー592

おすすめ

転載: blog.csdn.net/qq_42230770/article/details/104101633