問題引入
問題現象
- 訪問用戶過多
- 高併發
罪魁禍首
- 性能瓶頸:磁盤IO性能低下
- 擴展瓶頸:數據關係複雜,擴展性差,不便於大規模集羣
解決思路
- 降低磁盤IO次數,越低越好 —— 內存存儲
- 去除數據間的關係,越簡單越好 —— 不存儲關係,僅存儲數據
Nosql
即Not-OnlySQL(泛指非關係型的數據庫),作爲關係型數據庫的補充,並不特指一個數據庫。
作用:
應用對於海量用戶和海量數據前提嚇得數據處理問題。
特徵
- 可擴容,可伸縮
- 大數據量下得高性能
- 靈活得數據模型
- 高可用
你知道哪些常見Nosql數據庫:
- Redis
- memcache
- HBase
- MongoDB
應用場景
Redis簡介
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。
特徵:
- 數據間沒有必然的關聯關係。
- 內部採用單線程機制進行工作,單線程指的是網絡請求模塊使用了一個線程(所以不需考慮併發安全性),即一個線程處理所有網絡請求,其他模塊仍用了多個線程。。
- 高性能。官方提供測試數據,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s。
- 多數據類型支持:
- string(字符串類型)
- list(列表類型)
- hash(散列類型)
- set(集合類型)
- sorted_set(有序集合類型)
- 持久化支持。可以進行數據災難恢復。
應用
- 爲熱點數據加速查詢(主要場景)、如熱點商品、熱點新聞、熱點資訊、推廣類等提高訪問量信息等。
- 任務隊列、如秒殺、搶購、購票等
- 即時信息查詢,如各位排行榜、各類網站訪問統計、公交到站信息、在線人數信息(聊天室、網站)、設備信號等
- 時效性信息控制,如驗證碼控制,投票控制等 分佈式數據共享,如分佈式集羣構架中的session分離
- 消息隊列
- 分佈式鎖
Redis的簡單應用
參考鏈接:Redis入門
幾個基礎的命令
信息添加
功能:設置key,value數據
使用規則:
set key value
案例:
set str li
信息查詢
功能:根據key查詢對應的value,如果不存在,返回空(null)
使用規則:
get key
範例:
get str
清除屏幕信息
功能:清除屏幕中的信息
使用:
clear
幫助命令
功能:獲取命令幫助文檔,獲取組中所有命令信息名稱
命令
help 命令名稱
help @組名
退出客戶端命令
功能:退出客戶端
三種方式:
- quit
- exit
- 按鍵:< ESC>(慎用)