關注微信公眾號【
Java之言】,更多干貨文章和學習資料,助你放棄編程之路!
文章目錄
- 一、什么是Redis
- 二、為什么要用Redis
- 三、Redis執行緒模型
- 四、Redis安裝
- 4.1 Linux下安裝Redis
- 4.2 Windows下安裝Redis
- 4.2.1 前臺啟動 Redis 服務
- 4.2.2 服務方式安裝啟動
一、什么是Redis
Redis(
Remote Dictionary Server),即遠程字典服務,是一個開源的使用 ANSI C 語言撰寫、支持網路、可基于記憶體亦可持久化的日志型、Key-Value的Nosql資料庫,并提供多種語言的API,
redis是一個高性能的key-value存盤系統,它支持存盤的value型別包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希型別),這些資料型別都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的,在此基礎上,redis支持各種不同方式的排序,
與memcached一樣,為了保證效率,資料都是快取在記憶體中,區別的是redis會周期性的把更新的資料寫入磁盤或者把修改操作寫入追加的記錄檔案,并且在此基礎上實作了master-slave(主從)同步, – 來源百度百科
Redis 官網:https://redis.io/
二、為什么要用Redis
Redis 是基于記憶體的資料庫,不言而喻,那存取速度肯定是比基于硬碟的IO操作比較耗時的資料庫(例如Mysql,Mongo等)快很多,所以一般用于快取資料(比如熱點資料,執行耗時較久但結果不經常變動的SQL的運行結果資料等),達到快速回應,
在高并發場景,如果所有的請求直接訪問Mysql資料庫,資料庫可能會出現連接例外,如果使用redis做緩沖操作,先讓請求訪問到redis,沒有命中再訪問Mysql資料庫,能減少Mysql資料庫的壓力,
當然,除了快取作用,它還有其他作用,例如分布式鎖;利用Redis原子性的自增操作實作計數器,用戶點贊數,pv/uv,限速器等;利用zset實作排行榜;利用集合的交集,并集,差集實作共同好友,共同愛好等;還有一些高級操作Bitmaps,GEO實作地理位置定位等,
三、Redis執行緒模型
網上說 Redis 底層是一個單執行緒模型,其實是不嚴謹的,Redis 單執行緒指的是網路請求模塊使用單執行緒,即一個執行緒處理所有網路請求,但是其他模塊還是使用了多個執行緒,既然是單執行緒模型,那么CPU不是Redis的瓶頸,Redis的瓶頸最有可能是機器記憶體和網路帶寬,
Redis基于Reactor模式開發了自己的網路事件處理器,稱之為檔案事件處理器(File Event Hanlder),檔案事件處理器由Socket、IO多路復用程式、檔案事件分派器(dispather),事件處理器(handler)四部分組成,
IO多路復用程式同時監聽多個socket,當被監聽的socket準備好執行accept、read、write、close等操作時,與這些操作相對應的檔案事件就會產生,IO多路復用程式會把所有產生事件的socket壓入一個佇列中,然后有序地每次僅一個socket的方式傳送給檔案事件分派器,檔案事件分派器接收到socket之后會根據socket產生的事件型別呼叫對應的事件處理器進行處理,
四、Redis安裝
Redis官方只有Linux版本,沒有Windows版本,網上的Windows版本是apache的大牛對Linux版本進行改造和維護的,
Redis底層是采用NIO的多路IO復用機制,能實作高并發,并且執行緒安全,但是NIO在不同作業系統上實作不同,在Windows作業系統,使用select實作輪詢,事件復雜度為O(n),會出現空輪詢的情況,效率低下,并且默認對輪詢的資料有一定的限制,很難支持上萬的TCP連接,但是在Linux作業系統,是采用epoll實作事件驅動回呼,不會出現空輪詢,只對活躍的socket連接實作主動回呼,事件復雜度為O(1),能夠支持上萬的高并發請求,
所以,我們推薦在Linux作業系統下安裝Redis,當然如果只是學習使用,也可以在Windows上安裝,
4.1 Linux下安裝Redis
下載Redis安裝包,并上傳到Linux服務器,通過命令 tar -zxvf redis-5.0.10.tar.gz 解壓,
在 /usr/local 目錄下創建檔案夾 mkdir redis,用于存放編譯后的可執行檔案以及組態檔等,
進入解壓后的目錄下(例如我這里是 /opt/redis-5.0.10 ),然后運行 make install PREFIX=/usr/local/redis 命令進行編譯安裝,
編譯安裝完成后,就會在 /usr/local/redis 目錄下生成一個 bin 目錄,此目錄下有以下可執行檔案,

進入 bin 目錄,執行 ./redis-server 即可前臺啟動redis,(后續我們講解如何修改組態檔后臺啟動)

再啟動一個Linux連接客戶端,進入bin目錄,執行 ./redis-cli ,即可連接上redis,進行操作,

設定Redis后臺啟動,設定密碼,設定允許外界訪問,
首先將解壓后的的 redis.conf 文件復制一份到安裝目錄下的 bin目錄下,
cp /opt/redis-5.0.10/redis.conf /usr/local/redis/bin/
使用命令 vi redis.conf 打開復制后的檔案,修改以下配置變數的值,
# yes代表后臺啟動
daemonisze yes
# 去除#號,修改密碼,例如123456
requirepass 123456
# 注釋掉bind 127.0.0.1,并且將protected-mode的值改為no,即可允許外界訪問redis服務,
#bind 127.0.0.1
protected-mode no
當然,如果還允許外界訪問Redis服務,還需要將Redis服務埠開放添加到防火墻中,
# 查詢6379埠是否開放
[root@192 bin]# firewall-cmd --query-port=6379/tcp
no
# 開放6379埠 (可以是一個埠范圍,如1500-2000/tcp)
[root@192 bin]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
# 重啟防火墻
[root@192 bin]# firewall-cmd --reload
success
# 再次查詢6379埠是否開放,已開放
[root@192 bin]# firewall-cmd --query-port=6379/tcp
yes
使用命令 ./redis-server ./redis.conf 后臺方式啟動Redis服務,

再通過 ./redis-cli 命令連接redis后,如果沒有進行密碼驗證,將無法進行操作,使用 AUTH 密碼 進行密碼驗證之后才能操作,

4.2 Windows下安裝Redis
百度云下載:鏈接:https://pan.baidu.com/s/1IUz-RPXw9NmSysMDqJNPcQ 提取碼:sshi
下載后解壓到你想安裝的目錄下

4.2.1 前臺啟動 Redis 服務
在安裝目錄下啟動
cmd命令列視窗,然后輸入redis-server.exe redis.windows.conf命令,回車,如果出現一個方形圖示,即服務啟動成功,
不過此種啟動方式,是前臺啟動方式,只創建 Redis 臨時服務,不會在window Service串列出現 Redis 服務名稱和狀態,此視窗關閉,Redis 服務會自動關閉,

通過客戶端連接測驗,在安裝目錄下再啟動一個
cmd命令列視窗,然后輸入redis-cli.exe命令,回車,如下則連接成功,

修改埠和密碼
在Redis的安裝目錄下找到
redis.windows-service.conf檔案,用文本編輯器打開,找到port所在行,把默認的埠更改,例如改為6380,找到 requirepass 所在行,回車另起一行,例如輸入requirepass 123456,這樣Redis密碼就為123456,設定好保存后檔案,重啟redis服務,


客戶端連接測驗,輸入
redis-cli.exe -p 6380連接,此時我們隨便輸入命令例如列出所有鍵命令keys *,會報錯,因為我們還未輸入密碼驗證,再輸入auth 123456,123456是我們剛設定的Redis密碼,就可以執行命令了,

4.2.2 服務方式安裝啟動
前臺方式啟動redis服務,則需要保持打開命令列視窗啟動著,視窗一關則服務停止,以下演示將 Redis 設定為 Windows下的服務,并在后臺啟動,
首先將 Redis 注冊為服務,在 Redis 安裝目錄下啟動一個cmd命令列視窗,然后輸入redis-server.exe --service-install redis.windows.conf --loglevel verbose命令,回車,注意!!!一定要把臨時服務關閉,否則安裝不上,

再輸入
redis-server.exe --service-start命令,啟動服務,

- 啟動服務:redis-server.exe --service-start
- 暫停服務:redis-server.exe --service-stop
- 卸載服務:redis-server.exe --service-uninstall
關注微信公眾號【
Java之言】,更多干貨文章和學習資料,助你放棄編程之路!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259687.html
標籤:其他
上一篇:1. 配置Ubuntu環境——學習spark前置準備
下一篇:redis常用的16個命令


