redis詳情-----介紹、優化。。。。

一、SQL和NoSQL

1、SQL

1、一個結構化的數據庫,創建在關係模型基礎上,一般面向於記錄;
2、包括 Oracle 、Mysql 、 SQL Server 、Microsoft Access 、DB2 等。
優點:
1、易於維護:都是使用表結構,格式一致;
2、使用方便:SQL語言通用,可用於複雜查詢;
3、複雜操作:支持SQL,可用於一個表以及多個表之間非常複雜的查詢。
缺點:
1、讀寫性能比較差,尤其是海量數據的高效率讀寫;
2、固定的表結構,靈活度稍欠;
3、對於高併發讀寫需求,傳統關係型數據庫來說,硬盤I/O是一個很大的瓶頸。

2、NoSQL

1、除了主流的關係型數據庫以外的數據庫,都認爲是非關係型的;
2、包括 Redis 、 MongBD 、 Hbase 、 CouhDB 、Memcache 等;
3、非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等。
優點:
1、格式靈活:存儲數據的格式可以是 key-value(鍵-值)形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關係型數據庫則只支持基礎類型;
2、速度快:nosql可以使用硬盤或者隨機存儲器作爲載體,而關係型數據庫只能使用硬盤;
3、高擴展性;
4、成本低:nosql數據庫部署簡單,基本都是開源軟件。
缺點:
1、不提供sql支持,學習和使用成本較高;
2、不支持事務,容錯率低;
3、數據結構相對複雜,複雜查詢方面稍欠。

3、NoSQL產生的背景介紹

(1)High performance :對數據庫高併發讀寫需求;
(2)Huge Storage:對海量數據高效存儲與訪問需求;
(3)High Scalability && High Availability:對數據庫高可擴展性與高可用性需求。

二、redis

(1)Redis 基於內存運行並支持持久化;
(2)採用 key-value (鍵值對) 的存儲形式;
(3)優點:

具有極高的數據讀寫速度;
支持豐富的數據類型;
支持數據的持久化;
原子性;
支持數據備份

(4)Redis 和 Memcache 的比較:
1、存儲方式:
Memecache把數據全部存在內存之中,斷電後會掛掉,數據不能超過內存大小;
Redis有部份存在硬盤上,這樣能保證數據的持久性。
2、數據支持類型:
Memcache對數據類型支持相對簡單;
Redis有複雜的數據類型。
3、使用底層模型不同:
它們之間底層實現方式以及與客戶端之間通信的應用協議不一樣;
Redis直接自己構建了VM 機制 ,因爲一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。
4、value大小:
redis最大可以達到1GB,而memcache只有1MB。
(5)使用redis有哪些好處?
1、速度快,因爲數據存在內存中,類似於HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1)
2、支持豐富數據類型,支持string,list,set,sorted set,hash
3、支持事務,操作都是原子性,所謂的原子性就是對數據的更改要麼全部執行,要麼全部不執行。
4、豐富的特性:可用於緩存,消息,按key設置過期時間,過期後將會自動刪除。
redis 相比 memcached 的優勢:

memcached所有的值均是簡單的字符串,redis作爲其替代者,支持更爲豐富的數據類型;
redis的速度比memcached快很多;
redis可以持久化其數據;
Memcache 支持結構化,但是 Redis支持結構化和非結構化。

三、安裝部署redis

1、安裝redis環境
最新安裝包:redis-5.0.7.tar.gz
系統:Linux
2、操作步驟
redis詳情-----介紹、優化。。。。
第一步:通過遠程掛載的辦法將 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

第五步:創建軟連接

ln -s /usr/local/redis/bin/* /usr/local/bin/

第五步:啓動安裝腳本,查看端口狀態

cd  /redis-5.0.7/utils/

./install_server.sh        ###啓動腳本,注意:這步一路回車到底就行了
將最後一個文件路徑改爲: /usr/local/redis/bin/redis-server

netstat -natp | grep 6379

除此之外,還可以用 redis_6379 控制其開啓關閉:

/etc/init.d/redis_6379 stop       //關閉

/etc/init.d/redis_6379 start      //開啓

/etc/init.d/redis_6379 restart    //重啓

redis-cli遠程連接操作:

1、先修改配置文件,添加主機的IP地址

vim /etc/redis/6379.conf

bind 127.0.0.1 192.168.220.131
###添加主機的IP地址,不添加監聽地址則無法連接

如圖所示:
redis詳情-----介紹、優化。。。。
2、重啓服務
3、遠程連接:

redis-cli -h 192.168.220.131 -p 6379
//-h:指定主機IP地址,-p:指定端口

redis詳情-----介紹、優化。。。。

四、redis配置文件

配置參數 ( /etc/redis/6379.conf ):
redis詳情-----介紹、優化。。。。

五、redis數據庫常用命令

1、常用命令
(1)來連接本地數據庫

/usr/local/redis/bin/redis-cli

(2)連接遠程數據庫

redis-cli  -h  192.168.220.131  -p  6379

(3)存放數據:set
(4)獲取數據:get
redis詳情-----介紹、優化。。。。
2、key命令
(1)keys :獲取符合規則的鍵值列表

>keys *        //查看當前數據庫中所有的鍵

>keys v*       //查看當前數據庫中以v開頭的鍵

>keys v?       //查看當前數據庫中以v開頭後面包含任意一個字符的鍵

>keys v??      //查看當前數據庫中以v開頭後面包含任意二個字符的鍵

(2)exists:判斷鍵值是否存在
redis詳情-----介紹、優化。。。。
(3)del :刪除當前數據庫的指定 key
redis詳情-----介紹、優化。。。。
(4)type :獲取 key 對應的 value 值類型
redis詳情-----介紹、優化。。。。
(5)rename(覆蓋)/ renamenx(不覆蓋):對已有的 key 進行重命名:
redis詳情-----介紹、優化。。。。
(6)dbsize :查看當前數據庫中 key 的數目
redis詳情-----介紹、優化。。。。
(7)redis-benchmark 測試工具:
redis詳情-----介紹、優化。。。。

redis-benchmark -h 192.168.220.131 -p  6379  -c 100 -n 100000
//向IP地址爲192.168.220.131、端口爲6379的redis服務器發送 100個併發連接與 100000個請求測試性能
redis-benchmark -h 192.168.220.131 -p 6379 -q -d 100
//測試存取大小爲100字節的數據包的性能

3、Redis 多數據操作
(1)Redis 支持多數據庫,默認支持16個數據庫,0-15 命名;
(2)多數據相互獨立,互不干擾;
(3)多數據常用命令;
1、select:多數據庫間的切換(默認是在數據庫0中)
redis詳情-----介紹、優化。。。。
2、move:多數據庫間移動數據
redis詳情-----介紹、優化。。。。
3、flushdb:清除數據庫內數據
redis詳情-----介紹、優化。。。。

六、Redis 持久化:

(1)持久化概述:

Redis 是運行在內存中,內存中的數據斷電就會丟失;
爲了能重用 Redis 數據,或者防止系統故障,需要將 Redis 中的數據寫入到磁盤空間中,即持久化。

(2)持久化分類:
1、RDB 方式:創建快照的方式獲取某一時刻 Redis 中所有數據的副本。
2、AOF 方式:將執行的寫命令寫到文件的末尾,以日誌的方式來記錄數據的變化。
(3)RDB持久化:
1、它是 Redis的默認持久化方式,默認文件名爲 dump.rdb
2、觸發條件:
—在指定的時間間隔內,執行指定次數的寫操作(配置文件控制);
—執行 save 或者是 bgsave (異步)命令;
—執行 flushall 命令,清除數據庫所有數據;
—執行 shutdown 命令,保證服務器正常關閉且不丟失任何數據。

3、優缺點:

適合大規模的數據恢復;
如果業務對數據完整性和一致性要求不高,RDB 是很好的選擇;
數據的完整性和一致性不高;
備份時佔用內存。

4、通過 RDB 文件恢復數據:

將 dump.rdb 文件拷貝到 redis 的安裝目錄的 bin 目錄下,重啓 redis 服務即可。
5、配置文件選項

vim /etc/redis/6379.conf

save 900 1              
save 300 10
save 60 10000
//900秒之內至少一次寫操作、300秒之內至少發生10次寫操作、60秒之內發生至少10000次寫操作,只要滿足其一都會觸發快照操作,註釋所有的save項表示關閉 RDB

dbfilename dump.rdb         // RDB文件名稱
dir /var/lib/redis/6379     // RDB文件路徑
rdbcompression yes          // 是否進行壓縮

(4)AOF 持久化:

Redis 默認是不開啓的;
彌補 RDB 的不足(數據的不一致性);
採用日誌的形式來記錄每個寫操作,並追加到文件中;
Redis 重啓會根據日誌文件的內容將寫指令從前到後執行一次以完成數據的恢復工作。

1、根據 AOF 文件恢復數據:

將 appendonly.aof 文件拷貝到 redis 的安裝目錄的 bin 目錄下,重啓 redis 訪問即可。
2、配置文件選項

vim /etc/redis/6379.conf

appendonly yes                     //開啓AOF持久化
appendfilename "appendonly.aof"    //AOF文件名稱

# appendfsync always    
appendfsync everysec
#appendfsync no
//解釋:always:同步持久化,每次發生數據變化會立刻寫入磁盤;
       everysec:默認推薦,每秒異步記錄一次(默認值);
       no:不同步,交給操作系統決定如何同步。

aof-load-truncated yes         //忽略最後一條可能存在問題的指令

redis詳情-----介紹、優化。。。。
3、AOF 的重寫機制:

AOF 的工作原理是將寫操作追加到文件中,文件的冗餘會越來越多;
當 AOF 文件的大小超過所設定的閾值時,Redis 就會對 AOF 文件的內容壓縮;

4、AOF 的重寫原理:

Redis 會 fork 出一條新進程,讀取內存中的數據(並沒有讀取舊文件),並重新到一個臨時文件中,最後替換舊的 aof 文件
5、AOF 的重寫配置:

vim /etc/redis/6379.conf

在日誌進行 BGREWRITEAOF 時,如果設置爲 yes 表示新寫操作不進行同步 fsync,只是暫存在緩衝區裏,避免造成磁盤 IO 操作衝突,等重寫完成後在寫入。redis 中默認爲 no

no-appendfsync-on-rewrite no
//當前 AOF文件大小是上次日誌重寫時 AOF 文件大小兩倍時,發生 BGREWRITEAOF操作

auto-aof-rewrite-percentage 100
//當前 AOF文件執行 BGREWRITEAOF命令的最小值,避免剛開始啓動 redis 時由於文件尺寸較小導致頻繁的 BGREWRITEAOF

auto-aof-rewrite-min-size 64mb
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章