中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis 數據庫是什么及如何進行參數調優

發布時間:2021-11-02 17:23:21 來源:億速云 閱讀:114 作者:柒染 欄目:系統運維

今天就跟大家聊聊有關Redis 數據庫是什么及如何進行參數調優,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Redis 群集配置實例:
一、關系型數據庫與非關系型數據庫的區別:

Redis數據庫是一個非關系型數據庫,和oracle、mysql、sql server等關系型數據庫不是同一類型。NoSQL是非關系型數據庫的總稱,主流的NoSQL數據庫有redis、MongBD等。NoSQL的存儲方式、存儲結構以及使用的場景都是完全不同的。NoSQL數據庫憑借著其非關系型、分布式、開源和橫向擴展等優勢,被認為是下一代數據庫產品。

NoSQL可以解決關系型數據庫產生的三高問題:

  1. 對數據庫高并發讀寫需求。

  2. 對海量數據高效存儲與訪問需求。

  3. 對數據庫高可擴展性與高可用性需求。

關系型數據庫和非關系型數據庫都有各自的特點與應用場景,兩者精密結合將會給Web 2.0的數據庫發展帶來新的思路。讓關系型數據庫關注在關系上,非關系型數據庫關注在存儲上。
.
二、redis數據庫介紹:

Redis是一個開源的、使用C語言編寫、支持網絡、可基于內存也可持久化的日志類型、key-value(鍵值對)數據庫,是目前分布式架構中不可或缺的一環。

Redis服務器是單進程模型,也就是在一臺服務器上可以同時啟動多個Redis進程,而Redis的實際處理速度則完全依靠主進程的執行效率。若在服務器上只運行一個Redis進程,當多個client同時訪問時,服務器的處理能力會有一定程度的下降;若在同一臺服務器上開啟多個Redis進程,Redis在提高并發處理能力的同時會給服務器的CPU造成很大的壓力。也就是說,在實際生產環境中,需要根據實際的需求來決定開啟多少個Redis進程。若對高并發要求更高些,可能會考慮在同一臺服務器上開啟多個進程;若CPU資源比較緊張,采用單進程即可。

Redis具有以下幾個有點:

  1. 具有極高的讀寫速度,數據讀取的速度最高可達到110000次/s,數據的寫入速度最高可以達到81000次/s。

  2. 支持豐富的數據類型,不僅僅支持簡單的key-value數據類型,還支持strings、lists、hashes、sets及ordered sets等數據類型操作。

  3. 支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。

  4. 原子性,Redis所有操作都是原子性的。

  5. 支持數據備份,即master-salve模式的數據備份。

.
Redis是基于內存運行的數據庫,緩存是它比較常應用的場景之一,除此之外,Redis常見應用場景還包括獲取最新N個數據的操作、排行榜應用、計數器應用、存儲關系、實時分析系統、日志記錄等。
.
三、Redis的安裝部署:

可以先去Redis官網下載相應的源碼包或從這: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進行環境檢查與配置,直接make安裝即可。
[root@redis redis-5.0.5]# cd /usr/src/redis-5.0.5/utils/    #設置相關配置文件
[root@redis utils]# ./install_server.sh       #執行該腳本,相關配置文件就生成了。
#接下來是在指定各種配置文件的存放目錄,一路按回車確認即可。
[root@redis utils]# cd /etc/init.d/             #優化控制服務啟停
[root@redis init.d]# mv redis_6379 redis
[root@redis init.d]# chkconfig --add redis         #添加為系統服務。
[root@redis init.d]# systemctl restart redis
[root@redis init.d]# netstat -anpt | grep redis   # redis默認監聽6379和群集端口16379
tcp        0      0 127.0.0.1:6379     0.0.0.0:*    LISTEN      7098/redis-server 1 
#現在只是安裝了redis,并沒有配置群集,所以16379端口并沒有監聽。
[root@redis init.d]# vim /etc/redis/6379.conf             #查看redis配置文件
bind 127.0.0.1 192.168.1.1             #監聽的主機地址
appendonly yes  #改為“yes”,以便在每次更新操作后進行日志記錄,進行數據同步寫入
port 6379                                        #監聽端口
daemonize yes                               #啟用守護進程
pidfile /var/run/redis_6379.pid        #指定PID文件
loglevel notice                                #日志級別
logfile /var/log/redis_6379.log        #指定日志文件

上面為部分配置參數,主配置中還有很多更多的配置參數,具體可參考如下:
Redis 數據庫是什么及如何進行參數調優
四、Redis命令工具及常用命令:

Redis軟件提供了很多命令工具,在安裝Redis時,所包含的軟件工具同時會被安裝到系統中,在系統中可以直接使用,這些命令工具的作用如下所示:

  1. redis-server:用于啟動Redis的工具。

  2. redis-benchmark:用于檢測Redis在本機的運行效率。

  3. redis-check-aof:修復AOF持久化文件。

  4. redis-check-rdb:修復RDB持久化文件。

  5. redis-cli:Redis命令行工具。

.
下面是 redis-cli和redis-benchmark工具的用法:

1、redis-cli命令行工具:
.
redis-cli命令可以連接指定的數據庫,可以用“-h”指定遠程主機;“-p指定服務的端口號”,若設置了密碼,可以用“-a”指定密碼,若沒設置連接密碼,則可以省略“-a”選項。如下:

[root@redis redis]# redis-cli -h 192.168.1.1 -p 6379      
#若端口號默認監聽6379,也可省略-p選項。
192.168.1.1:6379>
在數據庫操作環境中,使用help命令可獲取命令類型的幫助。其中,有三種獲取命令幫助的方式。

help @<group>:獲取<group>中的命令列表。
help <command>:獲取某個命令的幫助。
help <tab> :獲取可能幫助的主題列表。
示例如下:

192.168.1.1:6379> help @list         #查看所有與list數據類型相關的命令

  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壓力測試工具:
.
redis-benchmark是官方自帶的Redis性能測試工具,可以有效地測試Redis服務的性能。該工具的常用選項如下:
Redis 數據庫是什么及如何進行參數調優

[root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -c 100 -n 100000
#向指定IP地址及端口的Redis服務器發送100個并發連接與100000個請求測試性能。

           .........................
====== 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

#測試結果,milliseconds為毫秒,時間越短,性能越好。
[root@redis redis]# redis-benchmark -h 192.168.1.1 -p 6379 -q -d 100
#測試向指定Redis服務器的指定端口6379存取大小為100B的數據包的性能。
[root@redis redis]# redis-benchmark -t set,lpush -n 100000 -q
#測試本機上Redis服務在進行set與lpush操作時的性能。
SET: 67659.00 requests per second
LPUSH: 64516.13 requests per second

Redis數據庫常用命令:
.
Redis數據庫采用key-value(鍵值對)的數據存儲形式,所使用的命令是set和get。
.

  • set:存放數據,命令格式為set key value。

  • get:獲取數據,命令格式為get key。

[root@localhost ~]# redis-cli          #連接本地數據庫
127.0.0.1:6379 > set test zhangsan             #插入數據
OK
127.0.0.1:6379> get test         #查詢鍵值
"zhangsan"
127.0.0.1:6379> keys t*               #查詢以“t”開頭的數據
1) "test"
127.0.0.1:6379> keys t?         #查詢以“t”開頭后面包含一個任意一位的數據
(empty list or set)                 #沒有查到,代表沒有符合條件的數據
127.0.0.1:6379> keys t??         #查詢以“t”開頭后面包含一個任意兩位的數據
(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 *        #查詢當前庫中所有鍵
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”對應的value值類型
string

rename命令可以對已有的key進行重命名,還有一個重命名的命令為renamenx。兩者區別是前者更改的目標key值不管存在與否,都將進行更改,直接覆蓋目標key值的數據;后者renamenx命令是在更改時,會檢查目標鍵值是否存在,若存在,將放棄更改。

127.0.0.1:6379> get www
"23"
127.0.0.1:6379> set qq 123            #插入一條數據
OK
127.0.0.1:6379> renamenx www qq                #將“www”更改為“qq”
(integer) 0                                                         #“qq”存在,放棄更改
127.0.0.1:6379> rename www qq             #使用rename命令進行更改
OK
127.0.0.1:6379> get qq               #直接覆蓋目標數據
"23"
127.0.0.1:6379> dbsize                  #查看當前數據庫中key的數目
(integer) 5

多數據庫常用的命令:

Redis支持多數據庫,Redis在沒有任何改動的情況下默認包含16個數據庫,數據庫名使用數字0--15來依次命名。每個庫中的數據是獨立的,也就是說在10庫中查不到0庫中的數據。

127.0.0.1:6379> select 10        #切換至編號10的庫
OK
127.0.0.1:6379[10]> select 15          #切換至編號15的庫
OK
127.0.0.1:6379[15]> select 0              #切換至編號0的庫
OK
127.0.0.1:6379> move liuyi 10    #將該庫中的數據移動到10庫中
(integer) 1
127.0.0.1:6379> select 10            #切換至編號10的庫
OK
127.0.0.1:6379[10]> get liuyi                 #查看移動過來的庫
"23"
#現在0庫中已經查不到“liuyi”的數據了

清除數據庫內數據:

Redis數據庫的整庫數據刪除主要分為兩個部分:清空當前數據庫中的數據,使用flushdb命令實現;清空所有庫中的數據,使用flushall命令。數據庫清空操作比較危險,生產環境下慎用!!!

看完上述內容,你們對Redis 數據庫是什么及如何進行參數調優有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

晴隆县| 岑溪市| 新巴尔虎右旗| 油尖旺区| 康乐县| 永善县| 二连浩特市| 凉山| 四川省| 武冈市| 连云港市| 竹北市| 鄄城县| 安多县| 香河县| 邹城市| 弥勒县| 洛隆县| 特克斯县| 兴和县| 乌拉特后旗| 永安市| 启东市| 松滋市| 赤壁市| 新昌县| 钦州市| 五常市| 古交市| 镇远县| 栾川县| 喀喇| 岳阳县| 洪泽县| 嘉峪关市| 云梦县| 灵石县| 荔波县| 房山区| 福州市| 改则县|