redis是一個開源的使用ansi c語言編寫、支持網絡、可基于內存亦可持久化的日志型、key-value數據庫,并提供多種語言的api。
redis是一個非常快速的開源非關系、Key-Value數據庫,通常稱為數據結構服務器;它存儲了五種不同類型值的鍵映射。用作數據庫,緩存和消息代理。
Redis和其他鍵值數據庫之間的主要區別之一是Redis存儲和操作高級數據類型的能力。這些數據類型是大多數開發人員熟悉的基本數據結構(列表,映射,集合和排序集)。Redis的卓越性能,簡單性和數據結構的原子操作有助于解決使用傳統關系數據庫實現時難以實現或執行不佳的問題。
Redis存儲
redis使用了兩種文件格式:全量數據和增量請求。
全量數據格式是把內存中的數據寫入磁盤,便于下次讀取文件進行加載;
增量請求文件則是把內存中的數據序列化為操作請求,用于讀取文件進行replay得到數據,序列化的操作包括SET、RPUSH、SADD、ZADD。
redis的存儲分為內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。
save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。
appendonly yes/no ,appendonly配置,指出是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面的save條件來同步的,所以有的數據會在一段時間內只存在于內存中。
appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統進行數據緩存同步到磁盤,always表示每次更新操作后手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次。