今天就跟大家聊聊有關(guān)Redis 數(shù)據(jù)庫是什么及如何進(jìn)行參數(shù)調(diào)優(yōu),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
10年積累的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有淇縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。Redis 群集配置實(shí)例:
一、關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫的區(qū)別:
Redis數(shù)據(jù)庫是一個(gè)非關(guān)系型數(shù)據(jù)庫,和oracle、mysql、sql server等關(guān)系型數(shù)據(jù)庫不是同一類型。NoSQL是非關(guān)系型數(shù)據(jù)庫的總稱,主流的NoSQL數(shù)據(jù)庫有redis、MongBD等。NoSQL的存儲(chǔ)方式、存儲(chǔ)結(jié)構(gòu)以及使用的場(chǎng)景都是完全不同的。NoSQL數(shù)據(jù)庫憑借著其非關(guān)系型、分布式、開源和橫向擴(kuò)展等優(yōu)勢(shì),被認(rèn)為是下一代數(shù)據(jù)庫產(chǎn)品。
NoSQL可以解決關(guān)系型數(shù)據(jù)庫產(chǎn)生的三高問題:
對(duì)數(shù)據(jù)庫高并發(fā)讀寫需求。
對(duì)海量數(shù)據(jù)高效存儲(chǔ)與訪問需求。
對(duì)數(shù)據(jù)庫高可擴(kuò)展性與高可用性需求。
關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫都有各自的特點(diǎn)與應(yīng)用場(chǎng)景,兩者精密結(jié)合將會(huì)給Web 2.0的數(shù)據(jù)庫發(fā)展帶來新的思路。讓關(guān)系型數(shù)據(jù)庫關(guān)注在關(guān)系上,非關(guān)系型數(shù)據(jù)庫關(guān)注在存儲(chǔ)上。
.
二、redis數(shù)據(jù)庫介紹:
Redis是一個(gè)開源的、使用C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存也可持久化的日志類型、key-value(鍵值對(duì))數(shù)據(jù)庫,是目前分布式架構(gòu)中不可或缺的一環(huán)。
Redis服務(wù)器是單進(jìn)程模型,也就是在一臺(tái)服務(wù)器上可以同時(shí)啟動(dòng)多個(gè)Redis進(jìn)程,而Redis的實(shí)際處理速度則完全依靠主進(jìn)程的執(zhí)行效率。若在服務(wù)器上只運(yùn)行一個(gè)Redis進(jìn)程,當(dāng)多個(gè)client同時(shí)訪問時(shí),服務(wù)器的處理能力會(huì)有一定程度的下降;若在同一臺(tái)服務(wù)器上開啟多個(gè)Redis進(jìn)程,Redis在提高并發(fā)處理能力的同時(shí)會(huì)給服務(wù)器的CPU造成很大的壓力。也就是說,在實(shí)際生產(chǎn)環(huán)境中,需要根據(jù)實(shí)際的需求來決定開啟多少個(gè)Redis進(jìn)程。若對(duì)高并發(fā)要求更高些,可能會(huì)考慮在同一臺(tái)服務(wù)器上開啟多個(gè)進(jìn)程;若CPU資源比較緊張,采用單進(jìn)程即可。
Redis具有以下幾個(gè)有點(diǎn):
具有極高的讀寫速度,數(shù)據(jù)讀取的速度高可達(dá)到110000次/s,數(shù)據(jù)的寫入速度高可以達(dá)到81000次/s。
支持豐富的數(shù)據(jù)類型,不僅僅支持簡(jiǎn)單的key-value數(shù)據(jù)類型,還支持strings、lists、hashes、sets及ordered sets等數(shù)據(jù)類型操作。
支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
原子性,Redis所有操作都是原子性的。
支持?jǐn)?shù)據(jù)備份,即master-salve模式的數(shù)據(jù)備份。
.
Redis是基于內(nèi)存運(yùn)行的數(shù)據(jù)庫,緩存是它比較常應(yīng)用的場(chǎng)景之一,除此之外,Redis常見應(yīng)用場(chǎng)景還包括獲取最新N個(gè)數(shù)據(jù)的操作、排行榜應(yīng)用、計(jì)數(shù)器應(yīng)用、存儲(chǔ)關(guān)系、實(shí)時(shí)分析系統(tǒng)、日志記錄等。
.
三、Redis的安裝部署:
可以先去Redis官網(wǎng)下載相應(yīng)的源碼包或從這:https://pan.baidu.com/s/1rGl8OwfYuYAB-aEXcZ7wRw (提取碼: zg3w )直接下載。
[root@redis ~]# tar zxf redis-5.0.5.tar.gz -C /usr/src/ #解包 [root@redis ~]# cd /usr/src/redis-5.0.5/ #切換至解壓出來的目錄 [root@redis redis-5.0.5]# make && make install #不需要./configure進(jìn)行環(huán)境檢查與配置,直接make安裝即可。 [root@redis redis-5.0.5]# cd /usr/src/redis-5.0.5/utils/ #設(shè)置相關(guān)配置文件 [root@redis utils]# ./install_server.sh #執(zhí)行該腳本,相關(guān)配置文件就生成了。 #接下來是在指定各種配置文件的存放目錄,一路按回車確認(rèn)即可。 [root@redis utils]# cd /etc/init.d/ #優(yōu)化控制服務(wù)啟停 [root@redis init.d]# mv redis_6379 redis [root@redis init.d]# chkconfig --add redis #添加為系統(tǒng)服務(wù)。 [root@redis init.d]# systemctl restart redis [root@redis init.d]# netstat -anpt | grep redis # redis默認(rèn)監(jiān)聽6379和群集端口16379 tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 7098/redis-server 1 #現(xiàn)在只是安裝了redis,并沒有配置群集,所以16379端口并沒有監(jiān)聽。 [root@redis init.d]# vim /etc/redis/6379.conf #查看redis配置文件 bind 127.0.0.1 192.168.1.1 #監(jiān)聽的主機(jī)地址 appendonly yes #改為“yes”,以便在每次更新操作后進(jìn)行日志記錄,進(jìn)行數(shù)據(jù)同步寫入 port 6379 #監(jiān)聽端口 daemonize yes #啟用守護(hù)進(jìn)程 pidfile /var/run/redis_6379.pid #指定PID文件 loglevel notice #日志級(jí)別 logfile /var/log/redis_6379.log #指定日志文件
上面為部分配置參數(shù),主配置中還有很多更多的配置參數(shù),具體可參考如下:
四、Redis命令工具及常用命令:
Redis軟件提供了很多命令工具,在安裝Redis時(shí),所包含的軟件工具同時(shí)會(huì)被安裝到系統(tǒng)中,在系統(tǒng)中可以直接使用,這些命令工具的作用如下所示:
redis-server:用于啟動(dòng)Redis的工具。
redis-benchmark:用于檢測(cè)Redis在本機(jī)的運(yùn)行效率。
redis-check-aof:修復(fù)AOF持久化文件。
redis-check-rdb:修復(fù)RDB持久化文件。
redis-cli:Redis命令行工具。
.
下面是 redis-cli和redis-benchmark工具的用法:
1、redis-cli命令行工具:
.
redis-cli命令可以連接指定的數(shù)據(jù)庫,可以用“-h”指定遠(yuǎn)程主機(jī);“-p指定服務(wù)的端口號(hào)”,若設(shè)置了密碼,可以用“-a”指定密碼,若沒設(shè)置連接密碼,則可以省略“-a”選項(xiàng)。如下:
[root@redis redis]# redis-cli -h 192.168.1.1 -p 6379 #若端口號(hào)默認(rèn)監(jiān)聽6379,也可省略-p選項(xiàng)。 192.168.1.1:6379> 在數(shù)據(jù)庫操作環(huán)境中,使用help命令可獲取命令類型的幫助。其中,有三種獲取命令幫助的方式。 help @:獲取 中的命令列表。 help :獲取某個(gè)命令的幫助。 help :獲取可能幫助的主題列表。 示例如下: 192.168.1.1:6379> help @list #查看所有與list數(shù)據(jù)類型相關(guān)的命令 BLPOP key [key ...] timeout summary: ck until one is available since: 2.0.0 BRPOP key [key ...] timeout summary: block until one is available since: 2.0.0 ........................... 192.168.1.1:6379> help set #查看set命令的命令幫助。 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] summary: Set the string value of a key since: 1.0.0 group: string
2、redis-benchmark壓力測(cè)試工具:
.
redis-benchmark是官方自帶的Redis性能測(cè)試工具,可以有效地測(cè)試Redis服務(wù)的性能。該工具的常用選項(xiàng)如下:
[root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -c 100 -n 100000 #向指定IP地址及端口的Redis服務(wù)器發(fā)送100個(gè)并發(fā)連接與100000個(gè)請(qǐng)求測(cè)試性能。 ......................... ====== MSET (10 keys) ====== 100000 requests completed in 1.74 seconds 100 parallel clients 3 bytes payload keep alive: 1 23.94% <= 1 milliseconds 98.02% <= 2 milliseconds 99.64% <= 3 milliseconds 99.76% <= 4 milliseconds 99.82% <= 5 milliseconds 99.89% <= 6 milliseconds 99.90% <= 7 milliseconds 99.94% <= 8 milliseconds 99.97% <= 9 milliseconds 100.00% <= 10 milliseconds 100.00% <= 10 milliseconds 57603.69 requests per second #測(cè)試結(jié)果,milliseconds為毫秒,時(shí)間越短,性能越好。 [root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -q -d 100 #測(cè)試向指定Redis服務(wù)器的指定端口6379存取大小為100B的數(shù)據(jù)包的性能。 [root@redis redis]# redis-benchmark -t set,lpush -n 100000 -q #測(cè)試本機(jī)上Redis服務(wù)在進(jìn)行set與lpush操作時(shí)的性能。 SET: 67659.00 requests per second LPUSH: 64516.13 requests per second
Redis數(shù)據(jù)庫常用命令:
.
Redis數(shù)據(jù)庫采用key-value(鍵值對(duì))的數(shù)據(jù)存儲(chǔ)形式,所使用的命令是set和get。
.
set:存放數(shù)據(jù),命令格式為set key value。
get:獲取數(shù)據(jù),命令格式為get key。
[root@localhost ~]# redis-cli #連接本地?cái)?shù)據(jù)庫 127.0.0.1:6379 > set test zhangsan #插入數(shù)據(jù) OK 127.0.0.1:6379> get test #查詢鍵值 "zhangsan" 127.0.0.1:6379> keys t* #查詢以“t”開頭的數(shù)據(jù) 1) "test" 127.0.0.1:6379> keys t? #查詢以“t”開頭后面包含一個(gè)任意一位的數(shù)據(jù) (empty list or set) #沒有查到,代表沒有符合條件的數(shù)據(jù) 127.0.0.1:6379> keys t?? #查詢以“t”開頭后面包含一個(gè)任意兩位的數(shù)據(jù) (empty list or set) 127.0.0.1:6379> exists test #判斷“test”鍵是否存在 (integer) 1 #表示test鍵存在 127.0.0.1:6379> exists yy #判斷“yy”鍵是否存在 (integer) 0 127.0.0.1:6379> keys * #查詢當(dāng)前庫中所有鍵 1) "counter:__rand_int__" 2) "mylist" 3) "key:__rand_int__" 4) "test" 5) "myset:__rand_int__" 127.0.0.1:6379> del test #刪除test鍵 (integer) 1 127.0.0.1:6379> set www 23 OK 127.0.0.1:6379> type www #獲取鍵“www”對(duì)應(yīng)的value值類型 string
rename命令可以對(duì)已有的key進(jìn)行重命名,還有一個(gè)重命名的命令為renamenx。兩者區(qū)別是前者更改的目標(biāo)key值不管存在與否,都將進(jìn)行更改,直接覆蓋目標(biāo)key值的數(shù)據(jù);后者renamenx命令是在更改時(shí),會(huì)檢查目標(biāo)鍵值是否存在,若存在,將放棄更改。
127.0.0.1:6379> get www "23" 127.0.0.1:6379> set qq 123 #插入一條數(shù)據(jù) OK 127.0.0.1:6379> renamenx www qq #將“www”更改為“qq” (integer) 0 #“qq”存在,放棄更改 127.0.0.1:6379> rename www qq #使用rename命令進(jìn)行更改 OK 127.0.0.1:6379> get qq #直接覆蓋目標(biāo)數(shù)據(jù) "23" 127.0.0.1:6379> dbsize #查看當(dāng)前數(shù)據(jù)庫中key的數(shù)目 (integer) 5
多數(shù)據(jù)庫常用的命令:
Redis支持多數(shù)據(jù)庫,Redis在沒有任何改動(dòng)的情況下默認(rèn)包含16個(gè)數(shù)據(jù)庫,數(shù)據(jù)庫名使用數(shù)字0--15來依次命名。每個(gè)庫中的數(shù)據(jù)是獨(dú)立的,也就是說在10庫中查不到0庫中的數(shù)據(jù)。
127.0.0.1:6379> select 10 #切換至編號(hào)10的庫 OK 127.0.0.1:6379[10]> select 15 #切換至編號(hào)15的庫 OK 127.0.0.1:6379[15]> select 0 #切換至編號(hào)0的庫 OK 127.0.0.1:6379> move liuyi 10 #將該庫中的數(shù)據(jù)移動(dòng)到10庫中 (integer) 1 127.0.0.1:6379> select 10 #切換至編號(hào)10的庫 OK 127.0.0.1:6379[10]> get liuyi #查看移動(dòng)過來的庫 "23" #現(xiàn)在0庫中已經(jīng)查不到“l(fā)iuyi”的數(shù)據(jù)了
清除數(shù)據(jù)庫內(nèi)數(shù)據(jù):
Redis數(shù)據(jù)庫的整庫數(shù)據(jù)刪除主要分為兩個(gè)部分:清空當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù),使用flushdb命令實(shí)現(xiàn);清空所有庫中的數(shù)據(jù),使用flushall命令。數(shù)據(jù)庫清空操作比較危險(xiǎn),生產(chǎn)環(huán)境下慎用?。?!
看完上述內(nèi)容,你們對(duì)Redis 數(shù)據(jù)庫是什么及如何進(jìn)行參數(shù)調(diào)優(yōu)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。