一、redis是一個高性能的Nosql數據庫,遵照BSD協議,使用c語言編寫、支持網絡、可基於內存亦可持久化,是一種日誌型、Key-Value數據庫,也可看作是一個分佈式的、基於內存的緩存工具。redis
二、NoSQL數據庫的產生是爲了解決超大規模和高併發的純動態網站帶來的挑戰,尤爲是大數據應用難題。sql
三、NoSQL數據庫的四大分類:chrome
(1)鍵值(Key-Value)存儲數據庫:這一類數據庫主要會使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。好比redis,Oracle BDB。docker
(2)列存儲數據庫:一般用來應對分佈式存儲的海量數據。鍵仍然存在,可是它們的特色是指向了多個列。好比HBase。數據庫
(3)文檔型數據庫:該類型的數據庫是版本化的文檔,以特定的格式存儲,好比JSON。文檔型數據庫能夠看做是鍵值數據庫的升級版本,容許嵌套鍵值。並且文檔型數據庫比鍵值數據庫的查詢效率更高。好比MongoDB。緩存
(4)圖形數據庫,好比Neo4J。網絡
四、NoSQL數據庫適用的場景:數據結構
(1)數據模型比較簡單,沒有太多的字段併發
(2)須要靈活性更強的IT系統,查詢速度須要更快app
(3)對數據庫性能要求較高,好比鍵值對數據庫直接由鍵獲得值
(4)不須要高度的數據一致性
(5)對於給定的key,能夠映射到複雜值的環境
五、redis與其餘鍵值數據庫相比,有三大特色:
(1)redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓時能夠再次加載從新使用。
(2)redis不單單支持簡單的Key-Value類型的數據,並且還提供list、set、zset、hash等數據結構的存儲。
(3)redis支持數據的備份、集羣等高可用功能,即master-slave模式的數據備份。
六、redis的特色:
(1)性能極高:redis讀的速度是110000次/秒,寫的速度是81000次/秒
(2)豐富的數據類型:redis支持的數據類型有string、list、hash、set和order set數據類型的操做。
(3)原子性:redis的全部操做都是原子性的,要麼成功執行要麼失敗徹底不執行。單個操做是原子性的,多個操做也支持原子性,即事務。
(4)佔用內存太高,這是缺點。
七、redis能幹啥:
(1)內存存儲和持久化:redis支持異步將內存中的數據寫到硬盤上,同時不影響繼續服務。
(2)取最新N個數據的操做:能夠將最新的10條評論的ID放在redis的list集合裏面。
(3)模擬相似於HttpSession這種須要設定過時時間的功能。
(4)發佈、訂閱消息系統。
(5)定時器和計數器。
八、以docker方式安裝並啓動redis服務
(1)拉取redis鏡像到本地:
docker pull redis
(2)新建redis容器,之後臺模式運行。若是簡單點,那就寫:docker run -p 6379:6379 -d redis redis-server --appendonly yes。
docker run -p 6379:6379 -v /dyy/myredis/data:/data -v /dyy/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
(3)docker上的redis已經之後臺模式運行,接下來執行如下命令進行交互。
docker exec -it 容器ID redis-cli