Redis介紹與安裝部署教程


一、Redis是什麼

Redis:REmote DIctionary Server(遠程字典服務器)

Redis是完全開源免費的,用C語言編寫的,遵守BSD協議的一個高性能的(key/value)分佈式內存數據庫,也是基於內存運行並支持持久化的NoSQL數據庫,是當前最熱門的NoSql數據庫之一,也被人們稱爲數據結構服務器。同時,Redis也是一個簡單的、高效的、分佈式的、基於內存的緩存工具。架構好服務器後,通過網絡連接(類似數據庫),提供Key-Value式緩存服務。

Redis有以下幾個優勢:

  • 1.性能極高 Redis讀的速度是11萬次/s,寫的速度是8萬次/秒。
  • 2.豐富的數據類型 Redis支持的類型有String、Hash、List、Set以及Ordered Set數據庫類型。
  • 3.原子性 Redis所有操作都是原子性的,通過MULTI和EXEC指令包起來。
  • 4.豐富的讀寫 Redis支持publish/subscribe、通知、key過期等特性。
  • 5.高速讀寫 redis使用自己實現的分離器,代碼量很短,沒有使用lock(MySQL),因此效率非常高。

Redis也有以下幾個劣勢:

  • 1.持久化 Redis直接將數據存儲在內存中,如果要將數據保存到磁盤上,第一種方法是使用①定時快照(snapshot):每隔一段時間將整個數據庫寫到磁盤上,每次均是寫全部數據,但是代價非常高;第二種方法是②基於語句追加(aof):只追蹤變化的數據,但是追加的log可能過大,同時所有的操作均重新執行一遍,恢復速度慢。
  • 2.耗內存,佔用內存過高。

二、Redis能幹什麼

企業開發中,可以將Redis作爲數據庫、緩存、熱點數據(經常被查詢但是不被修改和刪除的數據)、消息中間件等大部分功能。

Redis的常用場景實例如下:

  • 緩存
    如今緩存幾乎是所有中大型網站都在用的必殺技,合理的利用緩存不僅能夠提升網站的訪問速度,還能大大降低數據庫的壓力。Redis提供了鍵過期的功能,也提供了靈活的鍵淘汰策略。

  • 排行榜
    如淘寶的月度銷量榜單、商品按時間的上新排行榜等。Redis提供的有序集合數據類構能實現各種複雜的排行榜應用。

  • 計數器
    如電商網站商品的瀏覽量、視頻網站視頻的播放數等。爲了保證數據實時效,每次瀏覽都得給+1,併發量高時如果每次都請求數據庫操作無疑是種挑戰和壓力。Redis提供的incr命令來實現計數器功能,內存操作,性能非常好,非常適用於這些計數場景。

  • 分佈式會話
    集羣模式下,在應用不多的情況下一般使用容器自帶的session複製功能就能滿足,在應用增多相對複雜的系統中,一般都會搭建以Redis等內存數據庫爲中心的session服務,session不再由容器管理,而是由session服務及內存數據庫管理。

  • 分佈式鎖
    分佈式技術帶來的技術挑戰是對同一個資源的併發訪問,如全局ID、減庫存、秒殺等場景,併發量不大的場景可以使用數據庫的悲觀鎖、樂觀鎖來實現,但在併發量高的場合中,利用數據庫鎖來控制資源的併發訪問是不太理想的,大大影響了數據庫的性能。可以利用Redis的setnx功能來編寫分佈式的鎖,如果設置返回1說明獲取鎖成功,否則獲取鎖失敗,實際應用中要考慮的細節要更多。

  • 社交網絡
    點贊、踩、關注/被關注、共同好友等是社交網站的基本功能,社交網站的訪問量通常來說比較大,而且傳統的關係數據庫類型不適合存儲這種類型的數據,Redis提供的哈希、集合等數據結構能很方便的的實現這些功能。

  • 最新列表
    Redis列表結構,LPUSH可以在列表頭部插入一個內容ID作爲關鍵字,LTRIM可用來限制列表的數量,這樣列表永遠爲N個ID,無需查詢最新的列表,直接根據ID去到對應的內容頁即可。

  • 消息系統
    消息隊列是大型網站必用中間件,如ActiveMQ、RabbitMQ、Kafka等流行的消息隊列中間件,主要用於業務解耦、流量削峯及異步處理實時性低的業務。Redis提供了發佈/訂閱及阻塞隊列功能,能實現一個簡單的消息隊列系統。但是,這個不能和專業的消息中間件相比。

三、Redis下載與安裝部署

Redis英文官網。
Redis中文網站。

由於企業裏面做Redis開發,99%都是Linux版的運用和安裝,所以本文僅介紹Linux下的安裝與運行,Windows下的安裝使用小夥伴們可以自行百度。前往上面的官網點擊Download下載.gz安裝包後,放在Linux下的/opt目錄 (我這裏安裝的是Redis的6.0.5版本)。

  • 解壓命令爲:tar -zxvf redis-6.0.5.tar.gz

上述命令只是解壓了Redis,如果想要安裝Redis,需要Linux系統有gcc環境,如果沒有可以使用yum install gcc-c++安裝,然後使用gcc -v查看版本。

如果Linux環境已經有了gcc環境,直接使用下面的命令進行安裝:

  • 安裝命令爲:make install

安裝好默認是像Tomcat那樣不能開機自啓的,可以修改 redis.conf 文件中的 daemonize 屬性爲yes。

  • 開啓redis服務:redis-server /myredis/redis.conf(此處爲修改屬性後的redis配置文件)

查看後臺Redis服務是否啓動:

  • ps -ef|grep redis

開啓Redis服務:

  • redis-cli -p 6379
    在這裏插入圖片描述

正常關閉,數據會進行保存
在redis命令行中使用shutdown命令關閉。

非正常關閉,易導致數據丟失
斷電、手動kill掉redis進程等。

幾個其他的redis命令
在這裏插入圖片描述

四、Redis的幾個小知識

Redis是一個單進程,使用單進程模型來處理客戶端的請求。對讀寫等事件的響應是通過對epoll函數的包裝來做到的。Redis的實際處理速度完全依靠主進程的執行效率。

epoll是Linux內核爲處理大批量文件描述符而作了改進的epoll,是Linux下多路複用IO接口select/poll的增強版本,它能顯著提高程序在大量併發連接中只有少量活躍的情況下的系統CPU利用率。

  • Redis默認有16個數據庫,下標從零開始,初始默認使用零號庫,可以使用SELECT <dbid>命令連接上指定數據庫。
    在這裏插入圖片描述

  • dbsize指令可以查看當前數據庫的key的數量,keys *查看所有的key。
    在這裏插入圖片描述

  • flushdb:清空當前庫(慎用)

  • Flushall:清空全部庫(慎用)

  • 統一密碼管理,16個庫都是同樣密碼,要麼都OK要麼一個也連接不上。

  • Redis索引都是從零開始

  • Redis默認端口是6379

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章