共計(jì) 2812 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
丸趣 TV 小編給大家分享一下 Redis 怎么安裝部署,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、Redis 是什么
Redis:REmote DIctionary Server(遠(yuǎn)程字典服務(wù)器)
Redis 是完全開(kāi)源免費(fèi)的,用 C 語(yǔ)言編寫(xiě)的,遵守 BSD 協(xié)議的一個(gè)高性能的 (key/value) 分布式內(nèi)存數(shù)據(jù)庫(kù),也是基于內(nèi)存運(yùn)行并支持持久化的 NoSQL 數(shù)據(jù)庫(kù),是當(dāng)前最熱門(mén)的 NoSql 數(shù)據(jù)庫(kù)之一,也被人們稱(chēng)為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。同時(shí),Redis 也是一個(gè)簡(jiǎn)單的、高效的、分布式的、基于內(nèi)存的緩存工具。架構(gòu)好服務(wù)器后,通過(guò)網(wǎng)絡(luò)連接(類(lèi)似數(shù)據(jù)庫(kù)),提供 Key-Value 式緩存服務(wù)。
Redis 有以下幾個(gè)優(yōu)勢(shì):
1. 性能極高 Redis 讀的速度是 11 萬(wàn)次 /s,寫(xiě)的速度是 8 萬(wàn)次 / 秒。
2. 豐富的數(shù)據(jù)類(lèi)型 Redis 支持的類(lèi)型有 String、Hash、List、Set 以及 Ordered Set 數(shù)據(jù)庫(kù)類(lèi)型。
3. 原子性 Redis 所有操作都是原子性的,通過(guò) MULTI 和 EXEC 指令包起來(lái)。
4. 豐富的讀寫(xiě) Redis 支持 publish/subscribe、通知、key 過(guò)期等特性。
5. 高速讀寫(xiě) redis 使用自己實(shí)現(xiàn)的分離器,代碼量很短,沒(méi)有使用 lock(MySQL),因此效率非常高。
Redis 也有以下幾個(gè)劣勢(shì):
1. 持久化 Redis 直接將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,如果要將數(shù)據(jù)保存到磁盤(pán)上,第一種方法是使用①定時(shí)快照(snapshot):每隔一段時(shí)間將整個(gè)數(shù)據(jù)庫(kù)寫(xiě)到磁盤(pán)上,每次均是寫(xiě)全部數(shù)據(jù),但是代價(jià)非常高;第二種方法是②基于語(yǔ)句追加(aof):只追蹤變化的數(shù)據(jù),但是追加的 log 可能過(guò)大,同時(shí)所有的操作均重新執(zhí)行一遍,恢復(fù)速度慢。
2. 耗內(nèi)存,占用內(nèi)存過(guò)高。
二、Redis 能干什么
企業(yè)開(kāi)發(fā)中,可以將 Redis 作為數(shù)據(jù)庫(kù)、緩存、熱點(diǎn)數(shù)據(jù)(經(jīng)常被查詢(xún)但是不被修改和刪除的數(shù)據(jù))、消息中間件等大部分功能。
Redis 的常用場(chǎng)景實(shí)例如下:
緩存
如今緩存幾乎是所有中大型網(wǎng)站都在用的必殺技,合理的利用緩存不僅能夠提升網(wǎng)站的訪問(wèn)速度,還能大大降低數(shù)據(jù)庫(kù)的壓力。Redis 提供了鍵過(guò)期的功能,也提供了靈活的鍵淘汰策略。
排行榜
如淘寶的月度銷(xiāo)量榜單、商品按時(shí)間的上新排行榜等。Redis 提供的有序集合數(shù)據(jù)類(lèi)構(gòu)能實(shí)現(xiàn)各種復(fù)雜的排行榜應(yīng)用。
計(jì)數(shù)器
如電商網(wǎng)站商品的瀏覽量、視頻網(wǎng)站視頻的播放數(shù)等。為了保證數(shù)據(jù)實(shí)時(shí)效,每次瀏覽都得給 +1,并發(fā)量高時(shí)如果每次都請(qǐng)求數(shù)據(jù)庫(kù)操作無(wú)疑是種挑戰(zhàn)和壓力。Redis 提供的 incr 命令來(lái)實(shí)現(xiàn)計(jì)數(shù)器功能,內(nèi)存操作,性能非常好,非常適用于這些計(jì)數(shù)場(chǎng)景。
分布式會(huì)話
集群模式下,在應(yīng)用不多的情況下一般使用容器自帶的 session 復(fù)制功能就能滿(mǎn)足,在應(yīng)用增多相對(duì)復(fù)雜的系統(tǒng)中,一般都會(huì)搭建以 Redis 等內(nèi)存數(shù)據(jù)庫(kù)為中心的 session 服務(wù),session 不再由容器管理,而是由 session 服務(wù)及內(nèi)存數(shù)據(jù)庫(kù)管理。
分布式鎖
分布式技術(shù)帶來(lái)的技術(shù)挑戰(zhàn)是對(duì)同一個(gè)資源的并發(fā)訪問(wèn),如全局 ID、減庫(kù)存、秒殺等場(chǎng)景,并發(fā)量不大的場(chǎng)景可以使用數(shù)據(jù)庫(kù)的悲觀鎖、樂(lè)觀鎖來(lái)實(shí)現(xiàn),但在并發(fā)量高的場(chǎng)合中,利用數(shù)據(jù)庫(kù)鎖來(lái)控制資源的并發(fā)訪問(wèn)是不太理想的,大大影響了數(shù)據(jù)庫(kù)的性能。可以利用 Redis 的 setnx 功能來(lái)編寫(xiě)分布式的鎖,如果設(shè)置返回 1 說(shuō)明獲取鎖成功,否則獲取鎖失敗,實(shí)際應(yīng)用中要考慮的細(xì)節(jié)要更多。
社交網(wǎng)絡(luò)
點(diǎn)贊、踩、關(guān)注 / 被關(guān)注、共同好友等是社交網(wǎng)站的基本功能,社交網(wǎng)站的訪問(wèn)量通常來(lái)說(shuō)比較大,而且傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)類(lèi)型不適合存儲(chǔ)這種類(lèi)型的數(shù)據(jù),Redis 提供的哈希、集合等數(shù)據(jù)結(jié)構(gòu)能很方便的的實(shí)現(xiàn)這些功能。
最新列表
Redis 列表結(jié)構(gòu),LPUSH 可以在列表頭部插入一個(gè)內(nèi)容 ID 作為關(guān)鍵字,LTRIM 可用來(lái)限制列表的數(shù)量,這樣列表永遠(yuǎn)為 N 個(gè) ID,無(wú)需查詢(xún)最新的列表,直接根據(jù) ID 去到對(duì)應(yīng)的內(nèi)容頁(yè)即可。
消息系統(tǒng)
消息隊(duì)列是大型網(wǎng)站必用中間件,如 ActiveMQ、RabbitMQ、Kafka 等流行的消息隊(duì)列中間件,主要用于業(yè)務(wù)解耦、流量削峰及異步處理實(shí)時(shí)性低的業(yè)務(wù)。Redis 提供了發(fā)布 / 訂閱及阻塞隊(duì)列功能,能實(shí)現(xiàn)一個(gè)簡(jiǎn)單的消息隊(duì)列系統(tǒng)。但是,這個(gè)不能和專(zhuān)業(yè)的消息中間件相比。
三、Redis 下載與安裝部署
由于企業(yè)里面做 Redis 開(kāi)發(fā),99% 都是 Linux 版的運(yùn)用和安裝,所以本文僅介紹 Linux 下的安裝與運(yùn)行,Windows 下的安裝使用小伙伴們可以自行百度。前往上面的官網(wǎng)點(diǎn)擊 Download 下載.gz 安裝包后,放在 Linux 下的 /opt 目錄 (我這里安裝的是 Redis 的 6.0.5 版本)。
解壓命令為:tar -zxvf redis-6.0.5.tar.gz
上述命令只是解壓了 Redis,如果想要安裝 Redis,需要 Linux 系統(tǒng)有 gcc 環(huán)境,如果沒(méi)有可以使用 yum install gcc-c++ 安裝,然后使用 gcc - v 查看版本。
如果 Linux 環(huán)境已經(jīng)有了 gcc 環(huán)境,直接使用下面的命令進(jìn)行安裝:
安裝命令為:make install
安裝好默認(rèn)是像 Tomcat 那樣不能開(kāi)機(jī)自啟的,可以修改 redis.conf 文件中的 daemonize 屬性為 yes。
開(kāi)啟 redis 服務(wù):redis-server /myredis/redis.conf(此處為修改屬性后的 redis 配置文件)
查看后臺(tái) Redis 服務(wù)是否啟動(dòng):
ps -ef|grep redis
開(kāi)啟 Redis 服務(wù):
redis-cli -p 6379
正常關(guān)閉,數(shù)據(jù)會(huì)進(jìn)行保存
在 redis 命令行中使用 shutdown 命令關(guān)閉。
非正常關(guān)閉,易導(dǎo)致數(shù)據(jù)丟失
斷電、手動(dòng) kill 掉 redis 進(jìn)程等。
幾個(gè)其他的 redis 命令
四、Redis 的幾個(gè)小知識(shí)
Redis 是一個(gè)單進(jìn)程,使用單進(jìn)程模型來(lái)處理客戶(hù)端的請(qǐng)求。對(duì)讀寫(xiě)等事件的響應(yīng)是通過(guò)對(duì) epoll 函數(shù)的包裝來(lái)做到的。Redis 的實(shí)際處理速度完全依靠主進(jìn)程的執(zhí)行效率。
epoll 是 Linux 內(nèi)核為處理大批量文件描述符而作了改進(jìn)的 epoll,是 Linux 下多路復(fù)用 IO 接口 select/poll 的增強(qiáng)版本,它能顯著提高程序在大量并發(fā)連接中只有少量活躍的情況下的系統(tǒng) CPU 利用率。
Redis 默認(rèn)有 16 個(gè)數(shù)據(jù)庫(kù),下標(biāo)從零開(kāi)始,初始默認(rèn)使用零號(hào)庫(kù),可以使用 SELECT dbid 命令連接上指定數(shù)據(jù)庫(kù)。
dbsize 指令可以查看當(dāng)前數(shù)據(jù)庫(kù)的 key 的數(shù)量,keys * 查看所有的 key。
flushdb:清空當(dāng)前庫(kù)(慎用)
Flushall:清空全部庫(kù)(慎用)
統(tǒng)一密碼管理,16 個(gè)庫(kù)都是同樣密碼,要么都 OK 要么一個(gè)也連接不上。
Redis 索引都是從零開(kāi)始
Redis 默認(rèn)端口是 6379
以上是“Redis 怎么安裝部署”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!
向 AI 問(wèn)一下細(xì)節(jié)