Redis是一種基於鍵值對的Nosql數據庫;
支持類型包括String、hash、list、set、zset、bitmaps、hyperloglog、GEO等多種數據結構和算法組合。
Redis會將全部數據保存到內存中,因此它的讀寫速度很是快。
Redis還能夠將內存的數據利用快照和日誌的形式保存在硬盤上。
Redis提供鍵過時、發佈訂閱、事務、流水線、Lua腳本等附加功能
Redis速度快
- Redis全部數據保存在內存中,這是Redis快的主要緣由;
- Redis使用C語言實現,C語言裏操做系統更近,執行速度相對會更快;
- Redis使用單線程,預防了多線程可能的產生的競爭問題;
- Redis做者對Redis源碼的集性能和優雅於一身的開源代碼;
Redis豐富的功能
- 提供了鍵過時:能夠用於實現緩存
- 發佈訂閱功能,能夠實現消息系統
- 支持Lua腳本功能,能夠利用Lua創造新的Redis命令
- 提供簡單的事務支持,能在必定程度保證事務特性
- 流水線功能,這樣客戶端能將一批命令一次性傳遞到Redis,減小網絡的開銷
Redis持久化
- RDB內存快照的方式將內存中的數據保存到硬盤中。
- AOF追加日誌的方式將內存中的數據保存到硬盤中。
Redis客戶端支持語言多
Redis主從複製
Redis高可用和分佈式
- Redis sentinel哨兵機制保證Redis節點的故障發現和故障自動轉移;
- Redis cluster實現了Redis真正的分佈式實現,提供了高可用、讀寫和容量的擴展性;
Redis應用場景
- 緩存:緩存數據到內存加快訪問,設置鍵值對過時時間;
- 排行榜系統:Redis提供列表和有序集合數據結構
- 計數器應用:incre自增命令
- 社交網絡:針對社交中「贊」「粉絲」「推送」「喜愛」等數據存儲到Redis中
- 消息隊列系統:Redis提供的發佈訂閱和阻塞隊列功能;
Redis不適用作什麼
- 不適合存儲大量數據
- 不適合存儲冷數據,即不多有人訪問的數據
Redis經常使用命令
- 默認啓動方式:redis-server
- 運行啓動:redis-server --configKey1 configValue1 --configKey2 configValue2
- 配置文件啓動:redis-server /opt/redis/redis.conf
- redis-cli:客戶端鏈接redis
- redis-banchmark:redis基準測試工具
- redis-check-aof:redis aof持久化文件檢測和修復工具
- redis-check-dump:redis rdb持久化文件檢測和修復工具
- redis-sentinel:啓動redis哨兵
Redis中止服務
分爲兩步:斷開和客戶端的鏈接、持久化文件生成
不會作持久化,而且會形成緩衝區等資源不能被優雅的關閉,極端狀況下回形成aof和複製丟失數據的狀況。