這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰redis
Redis是C語言開發,安裝Redis須要先將官網下載的源碼進行編譯,編譯依賴gcc環境,若是沒有gcc環境,須要安裝gcc算法
==首先要確保==root登陸,其次就是Linux要能連網絡shell
並進入到 ~
目錄下數據庫
[root@xxx ~]#
複製代碼
輸入安裝命令緩存
yum -y install gcc automake autoconf libtool make
==== 查看gcc版本
gcc -v
複製代碼
ps: 運行yum時出現/var/run/yum.pid已被鎖定,PID爲xxxx的另外一個程序正在運行的問題解決bash
rm-f/var/run/yum.pid
複製代碼
官方下載:redis.io/download服務器
一、安裝markdown
這裏我安裝的是 reids5.0+ 版本的,以前安裝6.0出錯了,因此仍是用了5.0,實在不敢折騰了~網絡
wget https://download.redis.io/releases/redis-5.0.7.tar.gz
複製代碼
二、把Redis放到路徑/usr/local,解壓 tar -zxvf redis-5.0.7.tar.gz併發
三、執行命令
命令1:
cd redis-5.0.7
複製代碼
命令2:
=== 編譯
make
=== 成功標誌
複製代碼
若是沒有安裝 gcc
,這裏會報錯
命令3:
make PREFIX=/usr/local/redis install
複製代碼
==注意==:PREFIX必須大寫、同時會自動爲咱們建立redis目錄,並將結果安裝此目錄
命令4:
cd /usr/local/redis/bin
複製代碼
從Redis安裝包中,複製redis.conf文件到Redis的安裝目錄下(通常爲 /usr/local/redis,與bin目錄同級)
[root@xiaojian redis-5.0.7]# cp redis.conf /usr/local/redis
複製代碼
1. Redis默認不是以守護進程的方式運行,能夠經過該配置項修改,使用yes啓用守護進程
daemonize no
3. 指定Redis監聽端口,默認端口爲6379,爲何選用6379做爲默認端口,由於6379在手機按鍵上MERZ對
應的號碼,而MERZ取自意大利歌女Alessia Merz的名字
port 6379
4. 綁定的主機地址,(通常註釋掉,不然沒法使用遠程鏈接redis服務)
bind 127.0.0.1
8. 設置數據庫的數量,默認數據庫爲0,可使用SELECT <dbid>命令在鏈接上指定數據庫id
databases 16
9. 指定在多長時間內,有多少次更新操做,就將數據同步到數據文件,能夠多個條件配合
save <seconds> <changes>
Redis默認配置文件中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更
改。
11. 指定本地數據庫文件名,默認值爲dump.rdb
dbfilename dump.rdb
15. 設置Redis鏈接密碼,若是配置了鏈接密碼,客戶端在鏈接Redis時須要經過AUTH <password>命令提
供密碼,默認關閉
requirepass foobared
16. 設置同一時間最大客戶端鏈接數,默認無限制,Redis能夠同時打開的客戶端鏈接數爲Redis進程能夠
打開的最大文件描述符數,若是設置 maxclients 0,表示不做限制。當客戶端鏈接數到達限制時,Redis
會關閉新的鏈接並向客戶端返回max number of clients reached錯誤信息
maxclients 128
17. 指定Redis最大內存限制,Redis在啓動時會把數據加載到內存中,達到最大內存後,Redis會先嚐試清
除已到期或即將到期的Key,當此方法處理 後,仍然到達最大內存設置,將沒法再進行寫入操做,但仍然
能夠進行讀取操做。Redis新的vm機制,會把Key存放內存,Value會存放在swap區
maxmemory <bytes> // 建議:內存爲1G時,範圍 256-512
18. 指定是否在每次更新操做後進行日誌記錄,Redis在默認狀況下是異步的把數據寫入磁盤,若是不開
啓,可能會在斷電時致使一段時間內的數據丟失。由於 redis自己同步數據文件是按上面save條件來同步
的,因此有的數據會在一段時間內只存在於內存中。默認爲no
appendonly no
19. 指定更新日誌文件名,默認爲appendonly.aof
appendfilename appendonly.aof
複製代碼
redis做爲優秀的中間緩存件,時常會存儲大量的數據,即便採起了集羣部署來動態擴容,也應該 即便的整理內存,維持系統性能。 在redis中有兩種解決方案,
一是爲數據設置超時時間;
二是採用LRU算法動態將不用的數據刪除。內存管理的一種頁面置換算法,對於在內存中但又不用 的數據塊(內存塊)叫作LRU,操做系統會根據哪些數據屬於LRU而將其移出內存而騰出空間來加載 另外的數據。
daemonize no 修改成 daemonize yes;守護進程,後臺運行,除非手動kill進程
bind 127.0.0.1 註釋掉,不然沒法遠程鏈接redis服務
requirepass 設置密碼
複製代碼
在redis安裝目錄下
# 服務端啓動
./bin/redis-server ./redis.conf
# 客戶端啓動
# 本地客戶端啓動
./bin/redis-cli -a password
# 遠程客戶端啓動
redis-cli -h host -p port -a password
- host: redis啓動的服務器地址
- port: redis啓動的端口
- password: 配置文件中,requirepass設置的密碼
# 測試鏈接成功
127.0.0.1:6379> ping
PONG
複製代碼
第一種關閉方式:(斷電、非正常關閉。容易數據丟失)
# 查詢PID:
ps -ef | grep -i redis
# 強行關閉進程
kill -9 PID
複製代碼
第二種關閉方式(正常關閉、數據保存)
# 關閉redis服務,經過客戶端進行shutdown
./bin/redis-cli shutdown
# 有密碼時,先登陸,再shutdown
./bin/redis-cli -a password
127.0.0.1:6379> shutdown
複製代碼
redis-sentinel 是一個壓力測試工具 !
官方自帶的性能測試工具,
序號 | 選項 | 描述 | 默認值 |
---|---|---|---|
1 | -h | 指定服務器主機名 | 127.0.0.1 |
2 | -p | 指定服務器端口 | 6379 |
3 | -s | 指定服務器 socket | |
4 | -c | 指定併發鏈接數 | 50 |
5 | -n | 指定請求數 | 10000 |
6 | -d | 以字節的形式指定 SET/GET 值的數據大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用隨機 key, SADD 使用隨機值 | |
9 | -P | 經過管道傳輸 請求 | 1 |
10 | -q | 強制退出 redis。僅顯示 query/sec 值 | |
11 | --csv | 以 CSV 格式輸出 | |
12 | -l | 生成循環,永久執行測試 | |
13 | -t | 僅運行以逗號分隔的測試命令列表。 | |
14 | -I | Idle 模式。僅打開 N 個 idle 鏈接並等待。 |
測試一下:
# 測試:50個併發鏈接,10000個請求
[root@xiaojian bin]# ./redis-benchmark -h localhost -p 6379 -c 50 -n 10000
複製代碼