NoSQL之Redis非关系数据库(redis概述,持久化,RDB持久化,AOF持久,内存碎片)
關系型數據庫與非關系型數據庫
- 關系型數據庫與菲關系型數據庫
- 關系型數據庫
- 非關系型數據庫
- 非關系型數據庫產生背景
- Redis簡介
- Redis配置文件
- Redis的安裝
- 安裝環境
- Redis數據庫常用命令
- Redis持久化
- Redis概述
- 持久化分類
- RDB持久化
- AOF持久化
- 內存碎片率
關系型數據庫與菲關系型數據庫
關系型數據庫
- 一個結構化的數據庫,創建在關系模型基礎上
- 一般面向于記錄
- 包括:Oracle、MySQL、Microsoft Access、DB2等
非關系型數據庫
- 除了主流的關系型數據庫外的數據庫,都認為是非關系型
- 包括:Redis、MongDB、Hbase、CouhDB等
非關系型數據庫產生背景
- High performance——對數據庫高并發讀寫需求
- Huge Storage——對海量數據高效存儲與訪問需求
- High Scalability && High Availability——對數據庫高可擴展與高可用性需求
Redis簡介
- Redis基于內存運行并支持持久化
- 采用key-value(鍵值對)的存儲形式
- 優點
Redis配置文件
- 配置參數(/etc/redis/6379.conf)
Redis的安裝
安裝步驟
安裝環境
Centos7.6、redis-5.0.7
安裝依賴環境
[root@localhost ~]# yum -y install gcc gcc-c++解壓
[root@localhost ~]#tar zxvf redis-5.0.7.tar.gz -C /opt/編譯
[root@localhost ~]#tar zxvf redis-5.0.7.tar.gz -C /opt/ [root@localhost ~]# cd /opt/redis-5.0.7/ [root@localhost redis-5.0.7]# make [root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis install將redis建立軟連接讓系統所能識別
[root@localhost redis-5.0.7]# ln -s /usr/local/redis/bin/* /usr/local/bin/配置數據位置
[root@localhost ]# cd /opt/redis-5.0.7/utils/ [root@localhost utils]# ./install_server.sh 一直回車ps:
Selected config: Port : 6379 Config file : /etc/redis/6379.conf //配置文件路徑 Log file : /var/log/redis_6379.log //日志文件路徑 Data dir : /var/lib/redis/6379 //數據文件路徑 Executable : /usr/local/bin/redis-server //可執行文件路徑 Cli Executable : /usr/local/bin/redis-cli //客戶端命令工具
查看服務是否開啟
[root@localhost utils]# netstat -lutp | grep redis tcp 0 0 localhost:6379 0.0.0.0:* LISTEN 15570/redis-server命令對redis服務進行管理
/etc/init.d/redis_6379 stop //停止 /etc/init.d/redis_6379 start //啟動 /etc/init.d/redis_6379 reboot //重啟 /etc/init.d/redis_6379 status //狀態Redis數據庫常用命令
redis-cli命令
連接本地數據庫
[root@localhost utils]# redis-cli 127.0.0.1:6379>連接遠程數據庫
配置文件添加ip
[root@localhost utils]# vim /etc/redis/6379.conf 70 bind 127.0.0.1 192.168.136.30 [root@localhost utils]# redis-cli -h 192.168.136.30 -p 6379 192.168.136.30:6379>獲取命令幫助
方法二
127.0.0.1:6379> help setSET key value [expiration EX seconds|PX milliseconds] [NX|XX]summary: Set the string value of a keysince: 1.0.0group: string- set:存放數據
- get:獲取數據
- key相關命令
- redis-benchmark測試工具
- 向IP地址為192.168.10.161,端口為6379的Redis服務器發送100個并發連接與100000個請求測試性能
- 測試存取大小為100字節的數據包的性能
- Redis多數據庫操作
dis支持多數據庫,默認支持16個數據庫,0-15個命名
2、多數據庫相互獨立,互不干擾
3、多數據庫常用命令
多數據庫間切換
多數據庫間移動數據
清除數據庫內數據
- 設置hash結構
Redis持久化
Redis概述
- Redis是運行在內存中,內存中的數據斷點丟失
- 為了能夠重用Redis數據,或者防止系統故障,需要將Redis中的數據寫入到磁盤空間中,即持久化
持久化分類
- RDB方式:創建快照的方式獲取某一時刻Redis中所有數據的副本
- AOF方式:將執行的命令寫到文件的末尾,以日志的方式來記錄數據的變化
RDB持久化
- Redis的默認持久化方式為RDB
- 默認文件名dump.rdb
- 觸發條件:
- 優缺點
通過RDB文件回復數據
將dump。rdb文件拷貝到redis的安裝目錄的lib目錄下,重啟redis服務即可
- 配置文件選項
AOF持久化
- Redis默認不開啟
- 彌補RDB的不足(數據的不一致性)
- 采用日志的形式來記錄每個寫操作,并追加到文件中
- Redis重啟會根據日志文件的內容將寫指令從前到后執行一次以完成數據恢復的恢復工作
- 根據AOF文件恢復數據
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 12345678910- 查看Redis內存使用
內存碎片率
- 操作系統分配的內存值used_memory_rss除以Redis使用的內存值used_memory計算得出
- 內存碎片是由操作系統低效的分配/回收物理內存導致的
- 跟蹤內存碎片率對理解Redis實例的資源性能是非常重要的
- 內存使用率
- 回收key
①默認情況下回收策略是禁止刪除
②redis.com配置文件中修改maxmemory-policy屬性值
③volatile-lry:使用LRU算法從已設置過期時間的數據集合中淘汰數據
④volatile-ttl:從已設置過期時間的數據集合中挑選即將過期的數據淘汰
⑤volatite-random:從已設置過期時間的數據集合中隨機挑選數據淘汰
⑥allkeys-lru:使用LRU算法從所有數據集合中淘汰數據
⑦allkeys-random:從數據集合中任意選擇數據淘汰
與swap空間交換
\2. 避免內存交換
\3. 針對緩存數據大小選擇
\4. 盡可能的使用Hash數據結構
\5. 設置key的過期時間
- 回收key
①默認情況下回收策略是禁止刪除
②redis.com配置文件中修改maxmemory-policy屬性值
③volatile-lry:使用LRU算法從已設置過期時間的數據集合中淘汰數據
④volatile-ttl:從已設置過期時間的數據集合中挑選即將過期的數據淘汰
⑤volatite-random:從已設置過期時間的數據集合中隨機挑選數據淘汰
⑥allkeys-lru:使用LRU算法從所有數據集合中淘汰數據
⑦allkeys-random:從數據集合中任意選擇數據淘汰
dom:從數據集合中任意選擇數據淘汰
與swap空間交換
\2. 避免內存交換
\3. 針對緩存數據大小選擇
\4. 盡可能的使用Hash數據結構
\5. 設置key的過期時間
- 回收key
①默認情況下回收策略是禁止刪除
②redis.com配置文件中修改maxmemory-policy屬性值
③volatile-lry:使用LRU算法從已設置過期時間的數據集合中淘汰數據
④volatile-ttl:從已設置過期時間的數據集合中挑選即將過期的數據淘汰
⑤volatite-random:從已設置過期時間的數據集合中隨機挑選數據淘汰
⑥allkeys-lru:使用LRU算法從所有數據集合中淘汰數據
⑦allkeys-random:從數據集合中任意選擇數據淘汰
⑧no-enviction:禁止淘汰數據
總結
以上是生活随笔為你收集整理的NoSQL之Redis非关系数据库(redis概述,持久化,RDB持久化,AOF持久,内存碎片)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存条双通道配置:三条内存行不行?揭秘最
- 下一篇: centos7.6查询不到网卡信息