redis內存數據庫(緩存服務器)適合高併發的讀寫應用場景,超越磁盤IO讀寫的瓶頸。
*****************redis適用場合****************
1.取最新N個數據的操作2.排行榜應用,取TOP N 操作
3.需要精確設定過期時間的應用
4.計數器應用
5.Uniq操作,獲取某段時間所有數據排重值
6.實時系統,反垃圾系統
7.Pub/Sub構建實時消息系統
8.構建隊列系統
9.緩存
*****************安裝配置****************
安裝redis之前先要安裝tcl
- .make test報錯:
- You need tcl 8.5 or newer in order to run the Redis test
- make: *** [test] Error 1
- 安裝 Tcl
- tar zxvf tcl8.6.0-src.tar.gz
- cd tcl8.6.0/unix
- ./configure
- make
- make install
- chmod -v 755 /usr/lib/libtcl8.6.so
1下載安裝
- 目前最新穩定版本爲:redis-2.8.17.tar.gz
- http://download.redis.io/releases/redis-2.8.17.tar.gz
- (查看Liunx版本方式:getconf LONG_BIT)
- 如果是32位:make CFLAGS="-march=i686"
- 如果是64位:make
- 要是編譯失敗(make clean)
- cd /opt/portal/redis/redis-2.8.8/src
- make test
- make install
2配置文件目錄結構
- Redis 由四個可執行文件:redis-benchmark、<span style="color:#ff0000;">redis-cli、redis-server 、redis-sentinel</span>這4個文件,加上一個redis.conf就構成了整個redis的最終可用包。它們的作用如下:
- redis-server:Redis服務器的daemon啓動程序
- redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
- redis-benchmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
- redis-sentinel:redis的監控,配置後檢測到master down 會將slave升級爲master
- 現在就可以啓動redis了,redis只有一個啓動參數,就是他的配置文件路徑。
- 移動配置文件位置(爲了便於管理)
- mkdir -p /opt/portal/redis/bin
- mkdir -p /opt/portal/redis/conf
- mkdir -p /opt/portal/redis/logs
- cd /opt/portal/redis/redis-2.8.8
- cp redis.conf sentinel.conf /opt/portal/redis/conf
- cd /opt/portal/redis/redis-2.8.8/src
- cp redis-server redis-cli redis-sentinel redis-benchmark mkreleasehdr.sh redis-check-aof redis-check-dump /opt/portal/redis/bin
- <span style="color:#ff0000;">設置別名</span>
- vi /etc/profile
- alias redis-server='/opt/portal/redis/bin/redis-server /opt/portal/redis/conf/redis.conf'
- alias redis-cli='/opt/portal/redis/bin/redis-cli'
- 使配置文件生效
- . /etc/profile
- <h2>3.修改配置文件 </h2>
- vi /opt/portal/redis/conf/redis.conf
- 一、將daemonize no 中no改爲yes [以守護進程方式啓動進程]
- 二、如果是slave 需要配置說明他的master是誰:<span style="color:#ff0000;">slaveof 192.168.14.191 6379</span>
- 4.啓動/隨機啓動:
- cd /opt/portal/redis/bin
- ./redis-server /opt/portal/redis/conf/redis.conf #啓動redis並指定配置文件。
- #vi /etc/rc.local #設置隨機啓動。
- /opt/portal/redis/bin/redis-server /opt/portal/redis/conf/redis.conf
- 5.查看是否啓動成功
- ps -ef | grep redis
- netstat -tunpl | grep 6379#查看端口是否佔用。
- 6.進入客戶端/退出
- cd /opt/portal/redis/bin
- ./redis-cli #進入
- quit #退出 ctrl+c
- 7.關閉redis
- pkill redis-server #關閉
- ./redis-cli shutdown #關閉
- ./redis-cli -p 6397 shutdown //關閉6397端口的redis
- 說明:關閉以後緩存數據會自動dump到硬盤上,硬盤地址見redis.conf中的dbfilename dump.rdb
- daemonize 如果需要在後臺運行,把該項改爲yes
- pidfile 配置多個pid的地址 默認在/var/run/redis.pid
- bind 綁定ip,設置後只接受來自該ip的請求
- port 監聽端口,默認爲6379
- timeout 設置客戶端連接時的超時時間,單位爲秒
- loglevel 分爲4級,debug、verbose、notice、warning
- logfile 配置log文件地址
- databases 設置數據庫的個數,默認使用的數據庫爲0
- save * * 保存快照的頻率,第一個*表示多長時間,第二個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。
- rdbcompression 在進行鏡像備份時,是否進行壓縮
- Dbfilename 鏡像備份文件的文件名
- Dir 數據庫鏡像備份的文件放置路徑
- Slaveof 設置數據庫爲其他數據庫的從數據庫
- Masterauth 主數據庫連接需要的密碼驗證
- Requirepass 設置登錄時需要使用的密碼
- Maxclients 限制同時連接的客戶數量
- Maxmemory 設置redis能夠使用的最大內存
- Appendonly 是否開啓appendonlylog,開啓的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。
- Appendfsync 設置對appendonly.aof文件同步的頻率
- 以下了解即可:
- vm-enabled 是否開啓虛擬內存支持
- vm-swap-file 設置虛擬內存的交換文件路徑
- vm-max-memory 設置redis使用的最大物理內存大小
- vm-page-size 設置虛擬內存的頁大小
- vm-pages 設置交換文件的總的page數量
- vm-max-threads 設置VM IO同時使用的線程數量
- Glueoutputbuf 把小的輸出緩存存放在一起
- hash-max-zipmap-entries 設置hash的臨界值
- Activerehashing 重新hash
4常用命令
- select num#選擇庫,默認在0庫,共16個庫
- auth liweijie#授權用戶所需密碼(密碼就是redis.conf中配置的密碼)
- quit/exit/crtl+C#退出客戶端
- dbsize#返回庫裏的鍵的個數。
- info#顯示redis服務器的相關信息。
- config get */loglevel #返回所有/指定的配置信息。
- flushdb#刪除當前庫中的所有鍵/表。
- flushall#刪除所有數據庫中的所有鍵/表
- keys * #查詢所有
- keys user*#查詢指定的
- exists user:001#判斷是否存在。
- del name#刪除指定的鍵。
- expire addr 10#設置過期時間
- ttl addr#查詢過期時間time to live
- move age 1#將age移到1數據庫。
- get age #獲取
- persist age#移除age的過期時間。
- randomkey#隨機返回一個key
- rename name1 name2#重命名鍵
- type myset#返回鍵的類型。
- ping #測試redis連接是否存活。
- echo lamp#輸出一個lamp
5、Redis持久化機制: *****************************************************
- 1.兩種方式:一、備份數據到磁盤(快照)[ snapshotting(快照)也是默認方式],主從複製也是通過rdb方式
- 二、記錄操作命令[ Append-only file(縮寫aof)的方式]
- 一、備份數據到磁盤(快照)[ snapshotting(快照)也是默認方式]
- save 900 1 #900秒內如果超過1個key被修改,則發起快照保存
- save 300 10 #300秒內容如超過10個key被修改,則發起快照保存
- save 60 10000
- 一定時間間隔內對Redis做一次快照,如果Redis意外Down,而還沒有執行快照,那麼最後一次快照的數據將會丟失。
- 二、記錄操作命令[ Append-only file(縮寫aof)的方式](較安全持久化)
- appendonly yes #啓用aof 持久化方式
- # appendfsync always //收到寫命令就立即寫入磁盤,最慢,但是保證完全的持久化
- appendfsync everysec //每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
- # appendfsync no //完全依賴os,性能最好,持久化沒保證
6.消息訂閱***************************************************************
- public tv1 message1 發佈消息
- subscribe tv1 訂閱tv1
7狀態&性能監控
- 安全監控-Sentinel
- Sentinel是 Redis 自帶的工具,它可以對 Redis 主從複製進行監控,並實現主掛掉之後的自動故障轉移。
- 在轉移的過程中,它還可以被配置去執行一個用戶自定義的腳本,在腳本中我們就能夠實現報警通知等功能。
- 性能監控-Redis Live
- Redis Live是一個更通用的 Redis 監控方案,它的原理是定時在 Redis 上執行MONITOR命令,
- 來獲取當前 Redis 當前正在執行的命令,並通過統計分析,生成web頁面的可視化分析報表。
- 數據分佈
- -Redis-sampler
- Redis-sampler是 Redis 作者開發的工具,它通過採用的方法,能夠讓你瞭解到當前 Redis 中的數據的大致類型,數據及分佈狀況。
- -Redis-audit
- Redis-audit是一個腳本,通過它,我們可以知道每一類 key 對內存的使用量。它可以提供的數據有:某一類 key 值的訪問頻率如何,
- 有多少值設置了過期時間,某一類 key 值使用內存的大小,這很方便讓我們能排查哪些 key 不常用或者壓根不用。
- -Redis-rdb-tools
- Redis-rdb-tools跟 Redis-audit 功能類似,不同的是它是通過對 rdb 文件進行分析來取得統計數據的。
- 1、redis-benchmark
- redis基準信息,redis服務器性能檢測
- redis-benchmark -h localhost -p 6379 -c 100 -n 100000
- 100個併發連接,100000個請求,檢測host爲localhost 端口爲6379的redis服務器性能
- 2、redis-cli
- redis-cli -h localhost -p 6379 monitor
- Dump all the received requests in real time;
- 監控host爲localhost,端口爲6379,redis的連接及讀寫操作
- redis-cli -h localhost -p 6379 info
- Provide information and statistics about the server ;
- 提供host爲localhost,端口爲6379,redis服務的統計信息