內(nèi)容要點(diǎn):
嵊州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),嵊州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為嵊州1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的嵊州做網(wǎng)站的公司定做!
一、redis 簡介:
二、安裝部署 Redis:
三、Redis 配置文件:
四、Redis 數(shù)據(jù)庫常用命令:
五、Redis 持久化:
六、Redis 性能管理:
補(bǔ)充:
一、關(guān)系數(shù)據(jù)庫(SQL)和非關(guān)系數(shù)據(jù)庫(NOSQL)簡要分析:
二、Redis 和 Memcache 的比較
一、Redis 簡介:
Redis 基于內(nèi)存運(yùn)行并支持持久化;
采用 key-value (鍵值對) 的存儲形式;
優(yōu)點(diǎn):
具有極高的數(shù)據(jù)讀寫速度;
支持豐富的數(shù)據(jù)類型;
支持?jǐn)?shù)據(jù)的持久化;
原子性;
支持?jǐn)?shù)據(jù)備份
二、安裝部署 Redis:
(1)安裝 redis:
安裝包:redis-5.0.7.tar.gz
系統(tǒng):Linux
操作步驟總覽:
第一步:通過遠(yuǎn)程掛載的辦法將 windows上的安裝包下載到 Linux本地。
第二步:安裝編譯工具
?yum?install?gcc?gcc-c++?make?-y
第三步:解壓
tar?zxvf?redis-5.0.7.tar.gz?-C?/opt/
第四步:安裝
cd?redis-5.0.7/ make make?PREFIX=/usr/local/redis?install
第五步:創(chuàng)建軟連接
ln?-s?/usr/local/redis/bin/*?/usr/local/bin/
第五步:啟動(dòng)安裝腳本,查看端口狀態(tài)
cd??/redis-5.0.7/utils/ ./install_server.sh??//啟動(dòng)腳本,注意:這步一路回車到底就行了 netstat?-natp?|?grep?6379
除此之外,還可以用 redis_6379 控制其開啟關(guān)閉:
/etc/init.d/redis_6379?stop???????//關(guān)閉 /etc/init.d/redis_6379?start??????//開啟 /etc/init.d/redis_6379?restart????//重啟
(2)redis-cli 遠(yuǎn)程連接:
1、先修改配置文件,添加主機(jī)的IP地址
vim?/etc/redis/6379.conf bind?127.0.0.1?192.168.220.131 //添加主機(jī)的IP地址
2、重啟服務(wù)
3、遠(yuǎn)程連接
redis-cli?-h?192.168.220.131?-p?6379 //-h:指定主機(jī)IP地址,-p:指定端口
三、Redis 配置文件:
配置參數(shù) vim?/etc/redis/6379.conf bind:監(jiān)聽的主機(jī)地址 port:端口 daemonize?yes:啟用守護(hù)進(jìn)程 pidfile:指定PID文件 loglevel?notice:日志級別 logfile:指定日志文件
四、Redis 數(shù)據(jù)庫常用命令:
(一)常用命令:
(1)redis-cli 命令行工具:
1、連接本地?cái)?shù)據(jù)庫:
/usr/local/redis/bin/redis-cli
2、連接遠(yuǎn)程數(shù)據(jù)庫:
redis-cli?-h?192.168.220.131?-p?6379
3、存放數(shù)據(jù)(set):
4、獲取數(shù)據(jù)(get):
(2)key 相關(guān)命令:
1、keys :獲取符合規(guī)則的鍵值列表
>keys?*????????//查看當(dāng)前數(shù)據(jù)庫中所有的鍵 >keys?v*???????//查看當(dāng)前數(shù)據(jù)庫中以v開頭的鍵 >keys?v????????//查看當(dāng)前數(shù)據(jù)庫中以v開頭后面包含任意一個(gè)字符的鍵 >keys?v????????//查看當(dāng)前數(shù)據(jù)庫中以v開頭后面包含任意二個(gè)字符的鍵
2、exists:判斷鍵值是否存在
3、del :刪除當(dāng)前數(shù)據(jù)庫的指定 key
4、type :獲取 key 對應(yīng)的 value 值類型
5、rename(覆蓋)/ renamenx(不覆蓋):對已有的 key 進(jìn)行重命名:
6、dbsize :查看當(dāng)前數(shù)據(jù)庫中 key 的數(shù)目
(3)redis-benchmark 測試工具:
-h:指定服務(wù)器主機(jī)名 -p:指定服務(wù)器端口 -c:指定并發(fā)連接數(shù) -n:?指定請求數(shù) -d:以字節(jié)的形式指定SET/GET值的數(shù)據(jù)大小 -q:強(qiáng)制推出redis。僅顯示query/sec值
redis-benchmark?-h?192.168.220.131?-p?6379?-c?100?-n?100000 //向IP地址為192.168.220.131、端口為6379的redis服務(wù)器發(fā)送?100個(gè)并發(fā)連接與?100000個(gè)請求測試性能
redis-benchmark?-h?192.168.220.131?-p?6379?-q?-d?100 //測試存取大小為100字節(jié)的數(shù)據(jù)包的性能
(二)Redis 多數(shù)據(jù)操作:
(1)Redis 支持多數(shù)據(jù)庫,默認(rèn)支持16個(gè)數(shù)據(jù)庫,0-15 命名;
(2)多數(shù)據(jù)相互獨(dú)立,互不干擾;
(3)多數(shù)據(jù)常用命令;
1、select:多數(shù)據(jù)庫間的切換(默認(rèn)是在數(shù)據(jù)庫0中)
2、move:多數(shù)據(jù)庫間移動(dòng)數(shù)據(jù)
3、flushdb:清除數(shù)據(jù)庫內(nèi)數(shù)據(jù)
五、Redis 持久化:
(1)持久化概述:
Redis 是運(yùn)行在內(nèi)存中,內(nèi)存中的數(shù)據(jù)斷電就會丟失;
為了能重用 Redis 數(shù)據(jù),或者防止系統(tǒng)故障,需要將 Redis 中的數(shù)據(jù)寫入到磁盤空間中,即持久化。
(2)持久化分類:
1、RDB 方式:創(chuàng)建快照的方式獲取某一時(shí)刻 Redis 中所有數(shù)據(jù)的副本。
2、AOF 方式:將執(zhí)行的寫命令寫到文件的末尾,以日志的方式來記錄數(shù)據(jù)的變化。
(3)RDB持久化:
1、它是 Redis的默認(rèn)持久化方式,默認(rèn)文件名為 dump.rdb
2、觸發(fā)條件:
在指定的時(shí)間間隔內(nèi),執(zhí)行指定次數(shù)的寫操作(配置文件控制);
執(zhí)行 save 或者是 bgsave (異步)命令;
執(zhí)行 flushall 命令,清除數(shù)據(jù)庫所有數(shù)據(jù);
執(zhí)行 shutdown 命令,保證服務(wù)器正常關(guān)閉且不丟失任何數(shù)據(jù)。
3、優(yōu)缺點(diǎn):
適合大規(guī)模的數(shù)據(jù)恢復(fù);
如果業(yè)務(wù)對數(shù)據(jù)完整性和一致性要求不高,RDB 是很好的選擇;
數(shù)據(jù)的完整性和一致性不高;
備份時(shí)占用內(nèi)存。
4、通過 RDB 文件恢復(fù)數(shù)據(jù):
將 dump.rdb 文件拷貝到 redis 的安裝目錄的 bin 目錄下,重啟 redis 服務(wù)即可。
5、配置文件選項(xiàng):
vim /etc/redis/6379.conf
save?900?1?????????????? save?300?10 save?60?10000 //900秒之內(nèi)至少一次寫操作、300秒之內(nèi)至少發(fā)生10次寫操作、60秒之內(nèi)發(fā)生至少10000次寫操作,只要滿足其一都會觸發(fā)快照操作,注釋所有的save項(xiàng)表示關(guān)閉?RDB dbfilename?dump.rdb?????????//?RDB文件名稱 dir?/var/lib/redis/6379?????//?RDB文件路徑 rdbcompression?yes??????????//?是否進(jìn)行壓縮
(4)AOF 持久化:
Redis 默認(rèn)是不開啟的;
彌補(bǔ) RDB 的不足(數(shù)據(jù)的不一致性);
采用日志的形式來記錄每個(gè)寫操作,并追加到文件中;
Redis 重啟會根據(jù)日志文件的內(nèi)容將寫指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作。
1、根據(jù) AOF 文件恢復(fù)數(shù)據(jù):
將 appendonly.aof 文件拷貝到 redis 的安裝目錄的 bin 目錄下,重啟 redis 訪問即可。
2、配置文件選項(xiàng):
vim?/etc/redis/6379.conf appendonly?yes?????????????????????//開啟AOF持久化 appendfilename?"appendonly.aof"????//AOF文件名稱 appendfsync?always???? appendfsync?everysec appendfsync?no //解釋:always:同步持久化,每次發(fā)生數(shù)據(jù)變化會立刻寫入磁盤; ???????everysec:默認(rèn)推薦,每秒異步記錄一次(默認(rèn)值); ???????no:不同步,交給操作系統(tǒng)決定如何同步。 ???????aof-load-truncated?yes?????????//忽略最后一條可能存在問題的指令
3、AOF 的重寫機(jī)制:
AOF 的工作原理是將寫操作追加到文件中,文件的冗余會越來越多;
當(dāng) AOF 文件的大小超過所設(shè)定的閾值時(shí),Redis 就會對 AOF 文件的內(nèi)容壓縮;
4、AOF 的重寫原理:
Redis 會 fork 出一條新進(jìn)程,讀取內(nèi)存中的數(shù)據(jù)(并沒有讀取舊文件),并重新到一個(gè)臨時(shí)文件中,最后替換舊的 aof 文件。
5、AOF 的重寫配置:
vim?/etc/redis/6379.conf 在日志進(jìn)行?BGREWRITEAOF?時(shí),如果設(shè)置為?yes?表示新寫操作不進(jìn)行同步?fsync,只是暫存在緩沖區(qū)里,避免造成磁盤?IO?操作沖突,等重寫完成后在寫入。redis?中默認(rèn)為?no no-appendfsync-on-rewrite?no //當(dāng)前?AOF文件大小是上次日志重寫時(shí)?AOF?文件大小兩倍時(shí),發(fā)生?BGREWRITEAOF操作 auto-aof-rewrite-percentage?100 //當(dāng)前?AOF文件執(zhí)行?BGREWRITEAOF命令的最小值,避免剛開始啟動(dòng)?redis?時(shí)由于文件尺寸較小導(dǎo)致頻繁的?BGREWRITEAOF auto-aof-rewrite-min-szie?64mb
六、Redis 性能管理:
(1)內(nèi)存碎片率:
1、操作系統(tǒng)分配的內(nèi)存值 used_memory_rss 除以 redis 使用的內(nèi)存值 used_memory 計(jì)算得出的;
2、內(nèi)存碎片是由操作系統(tǒng)低效的分配/回收物理內(nèi)存導(dǎo)致的;
不連續(xù)的物理內(nèi)存分配
3、跟蹤內(nèi)存碎片率對理解 redis 實(shí)例的資源性能是非常重要的;
內(nèi)存碎片率稍大于 1 是合理的,這個(gè)值表示內(nèi)存碎片率比較低;
內(nèi)存碎片率超過 1.5 ,說明 redis 消耗了實(shí)際需要物理內(nèi)存的 150% ,其中 50% 是內(nèi)存碎片率;
內(nèi)存碎片率低于 1 的,說明 Redis 內(nèi)存分配超出了物理內(nèi)存,操作系統(tǒng)正在進(jìn)行內(nèi)存交換。
(2)內(nèi)存使用率:
1、 redis 實(shí)例的內(nèi)存使用率超過可用最大內(nèi)存,操作系統(tǒng)開始進(jìn)行內(nèi)存與 swqp 空間交換;
2、避免內(nèi)存交換:
針對緩存數(shù)據(jù)大小選擇;
盡可能的使用 Hash 數(shù)據(jù)結(jié)構(gòu);
設(shè)置 key 的過期時(shí)間
(3)回收 Key:
1、保證合理分配 redis 有限的內(nèi)存資源;
2、當(dāng)內(nèi)存使用達(dá)到設(shè)置的最大閾值時(shí),需要選擇一種 key 的回收策略:
默認(rèn)情況下回收策略是禁止刪除的;
redis.conf 配置文件中修改 maxmemory-policy 屬性值
--volatile-lru:使用L?.RU算法從已設(shè)置過期時(shí)間的數(shù)據(jù)集合中淘汰數(shù)據(jù) --voltil-tt:從已設(shè)置過期時(shí)間的數(shù)據(jù)集合中挑選即將過期的數(shù)據(jù)淘汰 --volatile-random:從已設(shè)置過期時(shí)間的數(shù)據(jù)集合中隨機(jī)挑選數(shù)據(jù)淘汰 --allkeys-lru:使用LRU算法從所有數(shù)據(jù)集合中淘汰數(shù)據(jù) --allkeys-random:從數(shù)據(jù)集合中任意選擇數(shù)據(jù)淘汰 --no-enviction:禁止淘汰數(shù)據(jù)
補(bǔ)充:
一、關(guān)系數(shù)據(jù)庫(SQL)和非關(guān)系數(shù)據(jù)庫(NoSQL)簡要介紹:
(1)關(guān)系型數(shù)據(jù)庫(SQL):
1、一個(gè)結(jié)構(gòu)化的數(shù)據(jù)庫,創(chuàng)建在關(guān)系模型基礎(chǔ)上,一般面向于記錄;
2、包括 Oracle 、MySQL 、 SQL Server 、Microsoft Access 、DB2 等。
優(yōu)點(diǎn):
1、易于維護(hù):都是使用表結(jié)構(gòu),格式一致;
2、使用方便:SQL語言通用,可用于復(fù)雜查詢;
3、復(fù)雜操作:支持SQL,可用于一個(gè)表以及多個(gè)表之間非常復(fù)雜的查詢。
缺點(diǎn):
1、讀寫性能比較差,尤其是海量數(shù)據(jù)的高效率讀寫;
2、固定的表結(jié)構(gòu),靈活度稍欠;
3、對于高并發(fā)讀寫需求,傳統(tǒng)關(guān)系型數(shù)據(jù)庫來說,硬盤I/O是一個(gè)很大的瓶頸。
(2)非關(guān)系型數(shù)據(jù)庫(NoSQL):
1、除了主流的關(guān)系型數(shù)據(jù)庫以外的數(shù)據(jù)庫,都認(rèn)為是非關(guān)系型的;
2、包括 Redis 、 MongBD 、 Hbase 、 CouhDB 、Memcache 等;
3、非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合,可以是文檔或者鍵值對等。
優(yōu)點(diǎn):
1、格式靈活:存儲數(shù)據(jù)的格式可以是 key-value(鍵-值)形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應(yīng)用場景廣泛,而關(guān)系型數(shù)據(jù)庫則只支持基礎(chǔ)類型;
2、速度快:nosql可以使用硬盤或者隨機(jī)存儲器作為載體,而關(guān)系型數(shù)據(jù)庫只能使用硬盤;
3、高擴(kuò)展性;
4、成本低:NoSql數(shù)據(jù)庫部署簡單,基本都是開源軟件。
缺點(diǎn):
1、不提供sql支持,學(xué)習(xí)和使用成本較高;
2、不支持事務(wù),容錯(cuò)率低;
3、數(shù)據(jù)結(jié)構(gòu)相對復(fù)雜,復(fù)雜查詢方面稍欠。
(3)非關(guān)系型數(shù)據(jù)庫產(chǎn)生的背景:
High performance :對數(shù)據(jù)庫高并發(fā)讀寫需求;
Huge Storage:對海量數(shù)據(jù)高效存儲與訪問需求;
High Scalability && High Availability:對數(shù)據(jù)庫高可擴(kuò)展性與高可用性需求。
如本文主角redis便為非關(guān)系型數(shù)據(jù)庫。
二、Redis 和 Memcache 的比較:
1、存儲方式:
Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會掛掉,數(shù)據(jù)不能超過內(nèi)存大小;
Redis有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。
2、數(shù)據(jù)支持類型:
Memcache對數(shù)據(jù)類型支持相對簡單;
Redis有復(fù)雜的數(shù)據(jù)類型。
3、使用底層模型不同:
它們之間底層實(shí)現(xiàn)方式以及與客戶端之間通信的應(yīng)用協(xié)議不一樣;
Redis直接自己構(gòu)建了VM 機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會浪費(fèi)一定的時(shí)間去移動(dòng)和請求。
4、value大?。?/strong>
redis最大可以達(dá)到1GB,而memcache只有1MB。
5、使用redis有哪些好處?
1、速度快,因?yàn)閿?shù)據(jù)存在內(nèi)存中,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時(shí)間復(fù)雜度都是O(1)
2、支持豐富數(shù)據(jù)類型,支持string,list,set,sorted set,hash
3、支持事務(wù),操作都是原子性,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行。
4、豐富的特性:可用于緩存,消息,按key設(shè)置過期時(shí)間,過期后將會自動(dòng)刪除。
redis 相比 memcached 的優(yōu)勢:
memcached所有的值均是簡單的字符串,redis作為其替代者,支持更為豐富的數(shù)據(jù)類型;
redis的速度比memcached快很多;
redis可以持久化其數(shù)據(jù);
Memcache 支持結(jié)構(gòu)化,但是 Redis支持結(jié)構(gòu)化和非結(jié)構(gòu)化。
當(dāng)前名稱:五分鐘了解Redis
分享路徑:http://muchs.cn/article24/jcpcje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信小程序、自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站、、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)