redis 工作原理—大數(shù)據(jù)面試題匯總redis部分

答:redis 是一個 key-value 存儲系統(tǒng).和 Memcached 類似,它支持存儲的 value 類型相
對更多,包括 string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和 hashs
(哈希類型)
這些數(shù)據(jù)類型都支持 push/pop、add/remove 及取交集并集和差集及更豐富的操作,而且
這些操作都是原子性的.
在此基礎上,redis 支持各種不同方式的排序.與 memcached 一樣,為了保證效率,數(shù)據(jù)
都是緩存在內存中.
區(qū)別的是 redis 會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并
且在此基礎上實現(xiàn)了 master-slave(主從)同步.
Redis 提供了兩種持續(xù)化機制,RDB 和 AOF。
RDB 持久化原理:通過 bgsave 命令觸發(fā),然后父進程執(zhí)行 fork 操作創(chuàng)建子進程,子進程
創(chuàng)建 RDB 文件,根據(jù)父進程內存生成臨時快照文件,完成后對原有文件進行原子替換(定
時一次性將所有數(shù)據(jù)進行快照生成一份副本存儲在硬盤中)
優(yōu)點:是一個緊湊壓縮的二進制文件,Redis 加載 RDB 恢復數(shù)據(jù)遠遠快于 AOF 的方式。
缺點:由于每次生成 RDB 開銷較大,非實時持久化,
AOF 持久化原理:開啟后,Redis 每執(zhí)行一個修改數(shù)據(jù)的命令,都會把這個命令添加到 AOF
文件中。
優(yōu)點:實時持久化。
缺點:所以 AOF 文件體積逐漸變大,需要定期執(zhí)行重寫操作來降低文件體積,加載慢