Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

Redisの(フルネームリモートの辞書サーバ)は、キーと値のストレージ・システムのサルヴァトーレサンフィリッポによって書かれています。Redisのは、BSDタイプ、キー値のデータベースをログに記録することができ、メモリの持続性に基づいて、契約および支持ネットワークに準拠ANSI Cで書かれたオープンソースの使用であり、多言語APIを提供します。値(値)は、文字列(String)を、ハッシュ(地図)、リスト(一覧)、(セット)を設定し、順序付きコレクション(ソートセット)や他のタイプのものであってよいので、それは多くの場合、サーバーのデータ構造と呼ばれています。

Redisの2つの最大の特徴を有し、それは非常にIOを処理する能力を向上させ、マルチプレクサIOポートモデルを使用することであり、他方は、複数のタイプをサポートすることができ、上記と言われています。図1に示されているRedisの全体的なアーキテクチャ、イベントがあるときに監視し、特定のビジネス処理部に分配することができるイベントハンドラとを備えます。

Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

 

Redisのは、既に大注目のKVデータベースであり、様々な分野で広く使用されています。学習を容易にするために、Redisの、オンラインの問題のいくつかの知識をコンパイルした数が、私たちは日々の開発、運用・保守までを願っていたり、ヘルプを終了します。

1 Redisのは何ですか?

基本的にキー値Redisのメモリデータベースの種類、memcachedのようなもので、定期的にハードディスクに格納されるデータベースのデータをフラッシュすることにより、それらのすべて、非同期操作をロードするためのメモリ内のデータベース全体が動作します。それは純粋なメモリ操作なので、Redisの性能は非常に良いですが、2回目の読み出しあたり10万回以上を処理し、操作を書くことができ、それがキー値DBの最速のパフォーマンスにはよく知られています。

パフォーマンスのRedisのだけではないの卓越性、Redisの最大の魅力は、単一の値の上限に加えて、保存されたデータ構造の多様性をサポートすることですRedisのは、多くの有用なために使用することができるので、memcachedのデータのみを、1メガバイト保存することができるとは異なり、512MBです機能。

2つのRedisの主な特徴

速いです

Redisのは、標準Cの実装に書き込まれ、すべてのデータがメモリにロードされ、それは非常に高速です。公式データが示すには、通常のLinuxマシン上で、読み取りと書き込み速度はRedisの81000 /秒および110000 /秒に達します。

2)データ構造

Redisのは、と見ることができる「データ構造サーバ。」現在、Redisのは、5つのデータ構造をサポートしています。

3)持久化

すべてのデータがメモリに保持されているので、データへの更新が非同期的にディスクに保存されますので、Redisのは、時間や日付によると、このような回数などのデータを保存するためにいくつかの戦略を提供します。トランザクションことを保証するために、メモリデータ、スワップの使用を超え。

memcacache永続的ではない、メモリ内モンゴ部と、

4)自動運転

異なるデータ型のRedisの操作を設定することができ、安全な操作から要素を追加または削除するには、このように設定またはキーの値を増加、自動化されています。

複数の言語のための5)のサポート

Redisのようなので、上のRuby、Pythonの、ツイストはPython、PHP、Erlangの、Tclの、PerlやLuaの、ジャワ、スカラ座、Clojureのとなど複数の言語をサポートしています。

6)マスタ - スレーブレプリケーション

スレーブレプリケーション - Redisのは、シンプルで早いのマスターをサポートしています。

公式には、アマゾンサイト10Gkeyセットの重複を完了するまでに21秒のデータ、スレーブを提供します。

7)シャーディング

複数のインスタンス間でデータをRedisのは簡単ですが、これは言語サポートかどうかを確認するために主にあります。シャーディング機能は、現在、PHP、Rubyやスカラ座の唯一の言語をサポートしています。

データのいくつかのタイプをサポートしている3つのRedisの?

1)文字列(文字列)

Redisの文字列は、最も基本的なタイプである、あなたはMemcachedの、値に対応するキーと全く同じのタイプとして理解することができます。文字列型は、文字列Redisの任意のデータを含めることができることを、バイナリセーフです。そのようなJPGイメージまたはシリアライズ目的とします。文字列型の最大値は512メガバイトを記憶することができます。

2)ハッシュ(ハッシュ)

Redisのハッシュキー(キー=>値)のペアです。Redisのハッシュフィールドは、文字列型とマッピングテーブルの値であり、ハッシュは、オブジェクトを格納するのに特に適しています。

3)リスト(一覧)

Redisのリストには、文字列の単純なリスト、ソート挿入順です。あなたは(右)(左)リストの先頭または尾に要素を追加することができます。

4)セット(コレクション)

Redisのは、順序付けられていないコレクションの種類を設定した文字列です。コレクションは、ハッシュテーブルを実現するので、削除、追加、検索の複雑さはO(1)です。

5)ZSET(ソートセット:順序付きコレクション)

RedisのはZSETと文字列型要素のコレクションとして設定され、重複したメンバーを許可していません。違いは、ダブルスコアは要素の各タイプに関連付けされることです。これは、メンバーの合格点のコレクションの大量注文に小さなからRedisのことです。

4つのRedisのは利点が比較される何memcachedの?

memcachedのすべての値1)は、単純な文字列、その代替としてRedisのある豊かなデータ型をサポート

2)のRedisのmemcachedよりもはるかに高速

3)Redisのは、そのデータを永続化することができます

5つのRedisのが適切な場面は何ですか?

1)セッションキャッシュ(セッション・キャッシュ)

最も一般的なシナリオは、Redisのセッションキャッシュ(セッションキャッシュ)を使用しています。Redisの永続性を提供します(例えばMemcachedのような)以外の記憶とRedisのキャッシングセッションの利点を有します。ユーザーのショッピングカートの情報が失われた場合には厳密に、キャッシュ・コヒーレンシを維持するために必要でない場合は、ほとんどの人が不幸になり、そして今、彼らはそうだろうか?

幸いなことに、Redisのこれらの年の改善と、それがどのようにRedisのキャッシングセッションを使用する権利文書を見つけるのは簡単です。でも、よく知られたビジネスプラットフォームMagentoのも、Redisのプラグインを提供しています。

2)フルページキャッシュ(FPC)

基本的なセッショントークンに加えて、Redisのも、FPCのために非常に便利なプラットフォームを提供します。戻る一貫性、でも、Redisのインスタンスを再起動するので、永続ディスクの、ユーザーがPHPローカルFPCに似た大きな改善を、ある減少ページの読み込み速度を、表示されません。

Magentoのは、再び一例として、Magentoのは、フルページキャッシュバックエンドとしてのRedisを使用するためのプラグインを提供しています。

また、WordPressのユーザーは、パンテオンは素晴らしいプラグインWP-Redisのを持って、このプラグインは、あなたが訪問したページの読み込みの最速のスピードであなたを助けることができます。

3)キュー

フィールドメモリストレージエンジンでの大きな利点は、Redisのは、メッセージキューを使用するための良いプラットフォームとして機能することができますリストや設定操作を提供することにあるレイズ。Redisのリスト/ポップ操作のネイティブ言語(例えば、パイソン)プッシュ同様の動作キューとして用います。

Googleで「Redisのキュー」のための迅速な検索を行う場合は、オープンソース・プロジェクトの大規模な数を見つけることができるでしょう、これらのプロジェクトの目的は、様々なキューのニーズを満たすために非常に優れたバックエンドのツールを作成のRedisを使用することです。例えば、セロリは背景がブローカーとしてのRedisを使用することであり、あなたはここから見に行くことができます。

4)ランキング/カウンタ

Redisのデジタル上または下のメモリ操作では非常によく実装されています。コレクション(セット)と順序集合(ソートセット)も、私たちに、これらの操作は、Redisのは、ただ単にこれら2つのデータ構造を提供し、非常にシンプルになって実行するための時間を確保できます。そこで、我々は最高の10人のユーザにランク取得するには、コレクションをソートする必要がある - 私たちは「user_scores」と呼んで、私たちは次のようなものを実行する必要があります。

もちろん、これはあなたの並べ替えに基づいて増加し、ユーザーのスコアをしている前提としています。ユーザーとユーザーのスコアを戻したい場合は、実行する必要があります。

ZRANGEのuser_scores 0 10 WITHSCORES

アゴラゲームは、その順位は、データを保存するためのRedisを使用することです、あなたがここで見ることができ、Rubyで実装され、良い例です。

5)パブリッシュ/サブスクライブ

最後に(確かではない以上)のRedisの機能をパブリッシュ/サブスクライブです。使用シナリオは非常に確かにあるパブリッシュ/サブスクライブ。私は人々がソーシャルネットワーキング接続を使用し見てきましたが、また、スクリプトトリガをパブリッシュ/サブスクライブ・ベースのチャットシステムを構築し、さらに機能をサブスクライブ/ Redisのを公開します!(いいえ、それは本当だ、あなたは確認するために行くことができます)。

そこのうちの方針6つのRedisのデータのどのような?

noeviction:メモリの上限に達するとエラーを返し、クライアントがコマンドを実行しようとするより多くのメモリを使用できるようにする(書き込みコマンドのほとんどが、DELおよび少数の例外を除いて)

allkeys-LRU:使用されるキー回復試行(LRU)少なくとも、そのように新たに追加されたデータ・ストレージ・スペース。

揮発性-LRU:キー回復試行(LRU)少なくとも使用されるが、唯一の有効期限が切れたキーセットで、新たに追加されたデータ・ストレージ・スペースようにします。

allkeysランダム:ランダムなキー回復されたデータを新たにストレージ容量を追加されるように。

揮発性ランダム:ランダムなキー新たに追加されたデータ・ストレージ・スペースの回復が、唯一のキーの有効期限のセットの中のように。

揮発性-TTL:期限切れの鍵セットで回収し、生存時間(TTL)短い回復キーの優先度、新たに追加されたデータ・ストレージ・スペースようにします。

Windowsのバージョンを提供しないのはなぜ7 Redisの公式?

現在、ほとんどのLinuxオペレーティングシステム上のデータセンターのサーバーを動作させるソフトウェア、Windowsアプリケーションのシナリオずっと、他のLinuxバージョンでは、ユーザーのかなり安定し、小さな窓の環境ではなく開発することが必要でしたが、互換性の問題をもたらします。

8文字列型の値は、最大容量はどのくらいです保存することができますか?

値は、サポートされる最大サイズの512Mで、追加のキー(鍵)の最大長さも512MBです。

9 Redisのは、メモリにすべてのデータを置く必要があるのはなぜ?

私たちは、メモリ内のデータが、ディスクI / O速度が真剣にRedisの性能に影響を与えると場合ピラミッドのパフォーマンスに基づいて、機械的なディスクの百万倍のメモリ性能であることを知っています。メモリ今日安くなって、Redisのは、ますます人気になるだろう。

あなたが使用する最大メモリを設定した場合、データが記録されている数に達したメモリ制限の後に新しい値を挿入し続けることができません。

Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

 

10 Redisのクラスタプログラムが行う方法をすべきですか?解決策は何ですか?

1.twemproxy、概念について、その下位の後に複数のインスタンスのRedisのを設定する、任意の種類の区別なし方法と一般のRedisを使用して、プロキシ・アプローチに類似していることで、この接続に必要なRedisの場所で使用したり、twemproxyに移動するとき同一のエージェントであろうことは要求を受信し、一貫性のあるハッシュアルゴリズムを使用して、要求が結果が戻っtwemproxy、特定のRedisに転送されます。(比較的Redisの単純な接続ポートを変更)使いやすく、好みの古いプロジェクトの拡張。問題:twemproxy圧力自体単一ポートインスタンス、ハッシュ一貫使用後、変化のRedisノードの数は、データは自動的に新しいノードに移動することができないときに算出値が変化します。

2.codis、基本的で一貫性のあるtwemproxy効果の現在最大のクラスタリングソリューションが、それは新しいハッシュノードに古いを復元するために、ノードの数、ノードデータの変更をサポートしています。

Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

 

3.redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍。

4.在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key 进行hash计算,然后去对应的redis实例操作数据。 这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。

11 Redis集群方案什么情况下会导致整个集群不可用?

有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用。

12 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。

13 Redis支持的Java客户端都有哪些?官方推荐用哪个?

Redisson、Jedis、lettuce等等,官方推荐使用Redisson。

14 Redis和Redisson有什么关系?

Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。

15 Jedis与Redisson对比有什么优缺点?

Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

16 Redis如何设置密码及验证密码?

设置密码:config set requirepass 123456

授权密码:auth 123456

17 说说Redis哈希槽的概念?

Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

18 Redis集群的主从复制模型是怎样的?

为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品.

19 Redis集群会有写操作丢失吗?为什么?

Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。

20 Redis集群节点之间是如何复制的?

节点之间是采用的异步复制(asynchronous replication),因此Redis集群是无法保证数据的强一致性的。

Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

 

21 Redis集群最大节点个数是多少?

16384个。

22 Redis集群如何选择数据库?

Redis集群目前无法做数据库选择,默认在0数据库。

23 怎么测试Redis的连通性?

ping

24 Redis中的管道有什么用?

一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。

这就是管道(pipelining),是一种几十年来广泛使用的技术。例如许多POP3协议已经实现支持这个功能,大大加快了从服务器下载新邮件的过程。

25 怎么理解Redis事务?

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

26 Redis事务相关的命令有哪几个?

MULTI、EXEC、DISCARD、WATCH

27 Redis key的过期时间和永久有效分别怎么设置?

EXPIRE和PERSIST命令。

28 Redis如何做内存优化?

尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.

29 Redis回收进程如何工作的?

一个客户端运行了新的命令,添加了新的数据。

Redi检查内存使用情况,如果大于maxmemory的限制, 则根据设定好的策略进行回收。

一个新的命令被执行,等等。

所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断地回收回到边界以下。

如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。

30 Redis如何做大量数据插入?

Redis2.6开始redis-cli支持一种新的被称之为pipe mode的新模式用于执行大量数据插入工作。

31 为什么要做Redis分区?

分区可以让Redis管理更大的内存,Redis将可以使用所有机器的内存。如果没有分区,你最多只能使用一台机器的内存。分区使Redis的计算能力通过简单地增加计算机得到成倍提升,Redis的网络带宽也会随着计算机和网卡的增加而成倍增长。

32 你知道有哪些Redis分区实现方案?

客户端分区就是在客户端就已经决定数据会被存储到哪个redis节点或者从哪个redis节点读取。大多数客户端已经实现了客户端分区。

代理分区 意味着客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。代理根据分区规则决定请求哪些Redis实例,然后根据Redis的响应结果返回给客户端。redis和memcached的一种代理实现就是Twemproxy

查询路由(Query routing) 的意思是客户端随机地请求任意一个redis实例,然后由Redis将请求转发给正确的Redis节点。Redis Cluster实现了一种混合形式的查询路由,但并不是直接将请求从一个redis节点转发到另一个redis节点,而是在客户端的帮助下直接redirected到正确的redis节点。

33 Redis分区有什么缺点?

涉及多个key的操作通常不会被支持。例如你不能对两个集合求交集,因为他们可能被存储到不同的Redis实例(实际上这种情况也有办法,但是不能直接使用交集指令)。

同时操作多个key,则不能使用Redis事务.

分区使用的粒度是key,不能使用一个非常长的排序key存储一个数据集(The

partitioning granularity is the key, so it is not possible to shard a

dataset with a single huge key like a very big sorted set).

当使用分区的时候,数据处理会非常复杂,例如为了备份你必须从不同的Redis实例和主机同时收集RDB / AOF文件。

分区时动态扩容或缩容可能非常复杂。Redis集群在运行时增加或者删除Redis节点,能做到最大程度对用户透明地数据再平衡,但其他一些客户端分区或者代理分区方法则不支持这种特性。然而,有一种预分片的技术也可以较好的解决这个问题。

34 Redis持久化数据和缓存怎么做扩容?

如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。

如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。

35 分布式Redis是前期做还是后期规模上来了再做好?为什么?

既然Redis是如此的轻量(单实例只使用1M内存),为防止以后的扩容,最好的办法就是一开始就启动较多实例。即便你只有一台服务器,你也可以一开始就让Redis以分布式的方式运行,使用分区,在同一台服务器上启动多个实例。

一开始就多设置几个Redis实例,例如32或者64个实例,对大多数用户来说这操作起来可能比较麻烦,但是从长久来看做这点牺牲是值得的。

这样的话,当你的数据不断增长,需要更多的Redis服务器时,你需要做的就是仅仅将Redis实例从一台服务迁移到另外一台服务器而已(而不用考虑重新分区的问题)。一旦你添加了另一台服务器,你需要将你一半的Redis实例从第一台机器迁移到第二台机器。

36 Twemproxy是什么?

Twemproxy是Twitter维护的(缓存)代理系统,代理Memcached的ASCII协议和Redis协议。它是单线程程序,使用c语言编写,运行起来非常快。它是采用Apache 2.0 license的开源软件。

Twemproxy支持自动分区,如果其代理的其中一个Redis节点不可用时,会自动将该节点排除(这将改变原来的keys-instances的映射关系,所以你应该仅在把Redis当缓存时使用Twemproxy)。

Twemproxy本身不存在单点问题,因为你可以启动多个Twemproxy实例,然后让你的客户端去连接任意一个Twemproxy实例。

Twemproxy是Redis客户端和服务器端的一个中间层,由它来处理分区功能应该不算复杂,并且应该算比较可靠的。

37 支持一致性哈希的客户端有哪些?

Redis-rb、Predis等。

38 Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,

相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。

同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

39 Redis的内存占用情况怎么样?

给你举个例子: 100万个键值对(键是0到999999值是字符串“hello world”)在我的32位的Mac笔记本上 用了100MB。同样的数据放到一个key里只需要16MB, 这是因为键值有一个很大的开销。 在Memcached上执行也是类似的结果,但是相对Redis的开销要小一点点,因为Redis会记录类型信息引用计数等等。

当然,大键值对时两者的比例要好很多。

64位的系统比32位的需要更多的内存开销,尤其是键值对都较小时,这是因为64位的系统里指针占用了8个字节。 但是,当然,64位系统支持更大的内存,所以为了运行大型的Redis服务器或多或少的需要使用64位的系统。

40 都有哪些办法可以降低Redis的内存使用情况呢?

如果你使用的是32位的Redis实例,可以好好利用Hash,list,sorted set,set等集合类型数据,因为通常情况下很多小的Key-Value可以用更紧凑的方式存放到一起。

41 查看Redis使用情况及状态信息用什么命令?

info

42 Redis的内存用完了会发生什么?

如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回。)或者你可以将Redis当缓存来使用配置淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。

43 Redis是单线程的,如何提高多核CPU的利用率?

可以在同一个服务器部署多个Redis的实例,并把他们当作不同的服务器来使用,在某些时候,无论如何一个服务器是不够的,

所以,如果你想使用多个CPU,你可以考虑一下分片(shard)。

44 Redis常见性能问题和解决方案?

1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件

2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次

3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内

4) 尽量避免在压力很大的主库上增加从库

5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...

这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

45 Redis提供了哪几种持久化方式?

RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.

AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.

如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.

你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.

最重要的事情是了解RDB和AOF持久化方式的不同,让我们以RDB持久化方式开始。

Redisのは、現在最も包括的な知識のポイントと顔の質問の概要です

 

46 如何选择合适的持久化方式?

一般来说, 如果想达到足以媲美PostgreSQL的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失,那么你可以只使用RDB持久化。

有很多用户都只使用AOF持久化,但并不推荐这种方式:因为定时生成RDB快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比AOF恢复的速度要快,除此之外, 使用RDB还可以避免之前提到的AOF程序的bug

47 触发RDB快照

1)在指定的时间间隔内,执行指定次数的写操作

2)执行save(阻塞, 只管保存快照,其他的等待) 或者是bgsave (异步)命令

3) 执行flushall 命令,清空数据库所有数据,意义不大。

4) 执行shutdown 命令,保证服务器正常关闭且不丢失任何数据,意义...也不大。

48 通过RDB文件恢复数据

将dump.rdb 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可。在实际开发中,一般会考虑到物理机硬盘损坏情况,选择备份dump.rdb 。可以从下面的操作演示中可以体会到。

49 RDB 的优缺点

优点:

1 适合大规模的数据恢复。

2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。

缺点:

1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。

2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。

所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。

50 修改配置不重启Redis会实时生效吗?

インスタンスを実行するために、多くの構成オプションは、実行再開のいずれかの形式なしに、CONFIG SETコマンドで変更することができますがあります。

おすすめ

転載: blog.csdn.net/shuningzhang/article/details/90667395
おすすめ