Redis入門

Redis是什麼

Redis是一款開源的內存數據結構存儲,(可在內存中存儲結構化的數據),用做數據庫,緩存和消息中間件,支持多種數據結構,如:strings,hashes,lists,sets,帶有範圍查詢的sorted sets ,bitmaps,hyperloglogs,帶有半徑查詢的geospatial Indexes,和stream;html

Redis內置了的主從複製,事務,以及不一樣級別的持久化功能,並經過Sentinel和自動分區的Cluster提供了高可用性;前端

在redis中能夠對這些類型進行原子操做(線程安全);mysql

爲了得到優秀的性能,redis把數據存儲在內存中,根據實際狀況你能夠每隔一段時間將數據轉存至磁盤或者追加每個操做指令到log中,來實現持久化;若是隻須要用於內存緩存,你能夠禁用持久化;git

redis還支持異步主從複製和很是快的非阻塞的首次同步,自動重連和部分數據從新同步在遇到網絡分裂(異常)時;web

Redis使用c編寫,能夠運行於絕大多數POSIX系統上,例如 Linux,OS X,BSD,並且不須要任何的外部依賴,Linux和OS X是Redis開發和測試最多的兩個操做系統,建議使用LInux系統部署,Windows版本沒有官方支持。redis

官網:https://redis.iosql

爲何須要Redis

能夠看出redis和mysql有很是大的區別,主要體如今數據結構和存儲方式上,mysql是關係型數據庫,存儲數據前必須明肯定義表結構和數據類型,數據之間能夠存在關聯關係,而redis中並不須要提早定義數據模型,隨時能夠添加新的結構到數據庫中,redis也不能維護數據間的關係;shell

NoSQL

這裏不得不提到的一個名稱就是NoSQL,NoSQL有兩種含義數據庫

No Relations和Not Only SQL,一般咱們談及NoSQL都是泛指非關係型數據庫,即數據之間沒有關係;vim

NoSQL伴隨着web2.0開始崛起,web2.0時代(要處理大規模的數據,且常常存在非結構化的數據)傳統數據庫表現的力不從心,並且出現一系列難以攻克的問題;

關係型與非關係型的對比:

對比項 關係型 非關係型
事務支持 完整的事務支持,很是適合存儲系統關鍵數據 大多沒有完整的ACID事務支持,數據的一致性較差,不支持回滾
存儲方式 完整數據存儲在磁盤上,大多數操做都須要讀寫磁盤 數據存儲在內存中,僅在持久化時讀寫磁盤,且讀寫磁盤操做一般是很是少的
存儲結構 數據必須是結構化的,數據表須要預先定義好,可靠性,穩定性高,和維護性高,但當須要修改已有結構時很是的麻煩 存儲非結構化數據,不須要定義數據結構,任什麼時候候任何地方均可以插入任何類型的數據,很是靈活,很容易適應數據類型和結構的變化
高性能 一方面磁盤讀寫致使速度慢另外一方面因爲須要保證強一致性,一般會對須要併發操做的數據加鎖 直接對讀寫內存中的數據速度是很是快的,另外因爲不須要保證強一致性,操做不須要加鎖,效率很是高
擴展性 總體效率依賴於IO速度,因爲數據須要保證數據之間的一致性,且數據具有固定的結構,橫向擴展困難,分庫分表實施困難,且沒法通用 沒有了固定存儲結構,沒有了強一致性要求,系統能夠輕鬆的進行橫向擴展,容易實現分佈式,向資源池添加新的計算資源便可實現擴展
查詢 經過結構化查詢語言(SQL)來完成,根據表中定義的key,來優化查詢速度,可實現複雜的連表查詢語句 各個不一樣的NoSQL沒有統一的標準,數據一般經過key來進行精準查詢,沒法實現太複雜的查詢邏輯

經過對比能夠發現NoSQL和關係型數據庫各自有各自的優缺點,那麼在實際運用中該如何選擇呢?

必定要強調的是,二者不是非此即彼的關係,而是優點互補,一般咱們把項目的關鍵數據(必須須要保證ACID)放在關係型數據庫中,而對於一些臨時的,非關鍵性的,訪問頻率很是高的數據放在NoSQL中;另外Redis也常常用於消息中間件;

NoSQL的分類:鏈接

redis的典型應用場景

  • 緩存(數據查詢、短鏈接、新聞內容、商品內容等等)。

  • 分佈式集羣架構中的session分離。

  • 聊天室的在線好友列表。

  • 任務隊列。(秒殺、搶購、12306等等)

  • 應用排行榜。

  • 網站訪問統計。

  • 數據過時處理(能夠精確到毫秒)

安裝

安裝過程:連接

bin目錄說明:

image-20200525205116470

啓動

  1. 直接運行redis-server可在前臺啓動服務端,但該方式將致使當前shell被佔用沒法執行其餘操做,除非終止redis的運行....

  2. 後臺進程模式啓動,該方式可將redis運行與後臺,須要先修改配置文件

    1. 從源碼目錄複製配置文件redis.conf至bin目錄下

      cp ~/redis-6.0.3/redis.conf /usr/local/redis/bin/
    2. 修改daemonize 爲yes (vim 打開文件後 輸入//daemonize可定位到改行)

      image-20200525214625394

3.指定使用redis.conf配置文件啓動(先進入bin目錄下)

./redis-server redis.conf
#利用客戶端鏈接測試
./redis-cli
#看見以下內容表示已經服務端已經正常運行
image-20200525215426980

中止

  1. 若是是前端方式啓動的服務只須要ctrl+c便可關閉服務器端
  2. 後臺進程模式,須要經過redis-cli客戶端來關閉
#關閉運行在localhost上的redis服務
./redis-cli shutdown
#關閉運行在指定地址上的redis服務
./redis-cli -h 127.0.0.1 shutdown

3.強制中止,經過kill命令直接強行結束redis服務端進程,該方式存在不穩定性,生產環境勿用

#查詢進程id
ps aux|grep redis
#根據進程id結束服務
kill 進程id

redis-cli鏈接服務器

語法: redis-cli -h 主機地址 -p 端口

其中主機地址和端口號都可省略 默認主機爲localhost,默認端口爲:6379

相關文章
相關標籤/搜索