(一)速度快服務器
1:存取速度快網絡
2:執行速度快數據結構
3:Redis使用了單線程架構,預防了多線程產生的競爭問題多線程
(二)基於鍵值對的數據結構服務器架構
(三)豐富的功能分佈式
1:提供鍵過時功能性能
2:提供了發佈訂閱功能線程
3:支持Lua腳本進程
4:提供了簡單的事務功能,能在必定程度保證事務特性事件
5:提供了流水線(Pipeline)功能,這樣客戶端能將一批命令一次性傳到Redis,減小網絡的開銷
(四)簡單穩定
(五)客戶端語言多,例如Java,PHP,Python,C,C++等
(六)持久化,Redis提供了兩種持久化方式:RDB和AOF
(七)主從複製,Redis提供了複製功能,實現了多個相同數據的Redis副本,複製功能是分佈式Redis的基礎
(八)高可用和分佈式,Redis從2.8版本正式提供了高可用實現Redis Sentinel,他可以保證Redis節點的故障發現和故障自動轉移.Redis從3.0版本正式提供了分佈式實現Redis Cluster,他是Redis真正的分佈式實現,提供了高可用,讀寫和容量的擴展性
(一)API
1.查看全部鍵:keys *
2.鍵總數:dbsize
3.檢查鍵是否存在:exists key
4.刪除鍵:del key [key . . .]
5.鍵過時:expire key seconds
6.鍵的數據結構類型:type key
(二)單線程架構
1.爲何單線程還能那麼快?
第一,純內存訪問,Redis將全部數據放在內存中,內存道德響應時長大約爲100納秒,這是Redis打到美妙萬級別訪問的重要基礎
第二,非阻塞I/O,Redis使用epoll做爲I/O多路複用技術的實現,再加上Redis自身的事件處理模型將epoll中的連接,讀寫,關閉都轉換爲事件,不在網絡I/O上浪費過多的時間
第三,單線程避免了線程切換和競態產生的消耗
2.單線程的弊端:對於每一個命令的執行時間是有要求的。若是某個命令執行過長,會形成其餘命令的堵塞,對於Redis這種高性能的服務來講是致命的。
第一:客戶端與服務端之間的通訊協議是在TCP協議之上構建的
第二:Redis制定了RESP(REdis Serialization Protocol,Redis序列化協議)實現客戶端與服務端的正常交互
說明:Redis支持RDB和AOF兩種持久化機制,持久化功能有效的避免因進程退出形成的數據丟失問題,當下次重啓時利用以前持久化的文件便可實現數據恢復。
2)Redis加在RDB恢復數據遠遠快於AOF的方式
3.RDB的缺點:1)RDB方式數據沒辦法作到實時持久化。 由於bgsave每次運行都要執行fork操做建立子進程,屬於重量級操做,頻繁執行成本太高。
2)RDB文件使用特定二進制格式保存,Redis版本演進過程當中有多個格式的RDB版本,存在老闆把呢Redis服務沒法兼容新版RDB格式問題