前言
Redis是一個開源的高性能鍵值對數(shù)據(jù)庫,。它通過提供多種鍵值數(shù)據(jù)類型來適應(yīng)不同場景下的存儲需求,并借助許多高層級的接口使其可以勝任如緩存,、隊列系統(tǒng)等不同的角色,。
Redis持久化了解
為了讓性能更加優(yōu)異,Redis默認(rèn)是把所有的數(shù)據(jù)都存在內(nèi)存中的,。但是當(dāng)服務(wù)器重啟或程序異常崩潰時,,Redis的數(shù)據(jù)就會全部丟失。因此出現(xiàn)了持久化的概念,。持久化就是將存在內(nèi)存中的數(shù)據(jù)同步到磁盤來保證持久化,。
1、Redis持久化的方式 兩種: RDB 和 AOF
RDB 持久化可以在指定的時間間隔內(nèi)生成數(shù)據(jù)集的時間點快照(point-in-time snapshot),。
AOF 持久化記錄服務(wù)器執(zhí)行的所有寫操作命令,,并在服務(wù)器啟動時,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集,。 AOF 文件中的命令全部以 Redis 協(xié)議的格式來保存,,新命令會被追加到文件的末尾。 Redis 還可以在后臺對 AOF 文件進(jìn)行重寫(rewrite),,使得 AOF 文件的體積不會超出保存數(shù)據(jù)集狀態(tài)所需的實際大小,。
2、持久化的數(shù)據(jù)有什么用,? 用于重啟后的數(shù)據(jù)恢復(fù),。Redis是一個內(nèi)存數(shù)據(jù)庫,無論是RDB還是AOF,,都只是其保證數(shù)據(jù)恢復(fù)的措施,;所以Redis在利用RDB和AOF進(jìn)行恢復(fù)的時候,都會讀取RDB或AOF文件,,重新加載到內(nèi)存中,。
默認(rèn)持久化了解
其中RDB就是point-in-time snapshot快照存儲,也是默認(rèn)的持久化方式,。對于RDB可理解為半持久化模式,,即按照一定的策略周期性的將數(shù)據(jù)保存到磁盤。對應(yīng)產(chǎn)生的數(shù)據(jù)文件為dump.rdb,,通過配置文件中的save參數(shù)來定義快照的周期,。Redis的RDB文件不會壞掉,因為其寫操作是在一個新進(jìn)程中進(jìn)行的。
默認(rèn)的持久化設(shè)置: save 900 1 #當(dāng)有一條Keys數(shù)據(jù)被改變時,,900秒刷新到Disk一次 save 300 10 #當(dāng)有10條Keys數(shù)據(jù)被改變時,,300秒刷新到Disk一次 save 60 10000 #當(dāng)有10000條Keys數(shù)據(jù)被改變時,60秒刷新到Disk一次
利用持久化遷移數(shù)據(jù) ##########查看配置信息及當(dāng)前存儲的key值########### [root@web-yv2 ~]# redis-cli -h 10.160.35.86 -p 6379 redis 10.160.35.86:6379> info redis_version:2.4.10 redis_git_sha1:00000000 redis_git_dirty:0 arch_bits:64 multiplexing_api:epoll gcc_version:4.4.6 process_id:11911 uptime_in_seconds:2154256 uptime_in_days:24 lru_clock:1527581 used_cpu_sys:1145.31 used_cpu_user:1430.18 used_cpu_sys_children:56.20 used_cpu_user_children:207.71 connected_clients:147 connected_slaves:0 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:12 used_memory:6762928 used_memory_human:6.45M used_memory_rss:19816448 used_memory_peak:10441776 used_memory_peak_human:9.96M mem_fragmentation_ratio:2.93 mem_allocator:jemalloc-2.2.5 loading:0 aof_enabled:0 changes_since_last_save:166 bgsave_in_progress:0 last_save_time:1420367541 bgrewriteaof_in_progress:0 total_connections_received:1387982 total_commands_processed:25568539 expired_keys:1838499 evicted_keys:0 keyspace_hits:529489 keyspace_misses:1838207 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:947 vm_enabled:0 role:master db0:keys=18255,expires=17326 #########保存最新的key值################ redis 10.160.35.86:6379> BGSAVE Background saving started ##########查看是否保存成功############## redis 10.160.35.86:6379> LASTSAVE (integer) 1420367903 ##########關(guān)閉redis服務(wù)器############## redis-cli -h 10.160.35.86 -p 6379 SHUTDOWN #########查看Redis的RDB文件########### [root@web-yv2 ~]# grep "dir" /etc/redis.conf #查看RDB文件的存放位置 # The working directory. # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # Also the Append Only File will be created inside this directory. # Note that you must specify a directory here, not a file name. dir /var/lib/redis/ #RDB文件存放于此 # directive below) it is possible to tell the slave to authenticate before # using the following configuration directive. # the swap file under /tmp is not secure. Create a dir with access granted # configuration directives. [root@web-yv2 ~]# find / -name dump.rdb #查找dump文件 /var/lib/redis/dump.rdb ##########壓縮redis文件并拷入另一臺機(jī)器######### [root@web-yv2 ~]# tar zcvf redis.tar.gz /var/lib/redis [root@web-yv2 ~]# scp redis.tar.gz [email protected]:/var/lib/ #########登陸10.160.35.67機(jī)器并做相應(yīng)配置####### [root@web-yv1 ~]# vi /etc/redis.conf dir /var/lib/redis/ #指定RDB文件路徑 #########解壓縮RDB文件########################## [root@web-yv1 ~]# cd /var/lib/ [root@web-yv1 ~]# tar xf redis.tar.gz #########重啟Redis服務(wù)器######################## [root@web-yv1 ~]# service redis restart
附加信息
Redis–BGSAVE 在后臺異步(Asynchronously)保存當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)到磁盤,。 BGSAVE 命令執(zhí)行之后立即返回 OK ,,然后 Redis fork 出一個新子進(jìn)程,原來的 Redis 進(jìn)程(父進(jìn)程)繼續(xù)處理客戶端請求,,而子進(jìn)程則負(fù)責(zé)將數(shù)據(jù)保存到磁盤,,然后退出。 客戶端可以通過 LASTSAVE 命令查看相關(guān)信息,,判斷 BGSAVE 命令是否執(zhí)行成功,。 請移步 持久化文檔 查看更多相關(guān)細(xì)節(jié)。 可用版本:>= 1.0.0時間復(fù)雜度:O(N),, N 為要保存到數(shù)據(jù)庫中的 key 的數(shù)量,。返回值:反饋信息。 redis> BGSAVE Background saving started
Redis–LASTSAVE LASTSAVE 返回最近一次 Redis 成功將數(shù)據(jù)保存到磁盤上的時間,,以 UNIX 時間戳格式表示,。 可用版本:>= 1.0.0時間復(fù)雜度:O(1)返回值:一個 UNIX 時間戳。 redis> LASTSAVE (integer) 1324043588
Ubuntu 14.04下Redis安裝及簡單測試 http://www./Linux/2014-05/101544.htm
Redis集群明細(xì)文檔 http://www./Linux/2013-09/90118.htm
Ubuntu 12.10下安裝Redis(圖文詳解)+ Jedis連接Redis http://www./Linux/2013-06/85816.htm
Redis系列-安裝部署維護(hù)篇 http://www./Linux/2012-12/75627.htm
CentOS 6.3安裝Redis http://www./Linux/2012-12/75314.htm
Redis安裝部署學(xué)習(xí)筆記 http://www./Linux/2014-07/104306.htm
Redis配置文件redis.conf 詳解 http://www./Linux/2013-11/92524.htm
Redis 的詳細(xì)介紹:請點這里 Redis 的下載地址:請點這里
本文永久更新鏈接地址:http://www./Linux/2015-01/111363.htm
|