Redis基礎(二)—— 安裝與配置

這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰redis

Redis 的配置

Redis的安裝

一、環境安裝,安裝gcc:

​ 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安裝

​ 官方下載: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
=== 成功標誌
複製代碼

1597748831577

若是沒有安裝 gcc ,這裏會報錯

image-20210712164124640

命令3:

make PREFIX=/usr/local/redis install
複製代碼

==注意==:PREFIX必須大寫、同時會自動爲咱們建立redis目錄,並將結果安裝此目錄

命令4:

cd /usr/local/redis/bin
複製代碼

1597749294910

Redis 配置

從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做爲優秀的中間緩存件,時常會存儲大量的數據,即便採起了集羣部署來動態擴容,也應該 即便的整理內存,維持系統性能。 在redis中有兩種解決方案,

  • 一是爲數據設置超時時間;

  • 二是採用LRU算法動態將不用的數據刪除。內存管理的一種頁面置換算法,對於在內存中但又不用 的數據塊(內存塊)叫作LRU,操做系統會根據哪些數據屬於LRU而將其移出內存而騰出空間來加載 另外的數據。

    • 1.volatile-lru:設定超時時間的數據中,刪除最不常使用的數據.
    • 2.allkeys-lru:查詢全部的key中最近最不常使用的數據進行刪除,這是應用最普遍的策略.
    • 3.volatile-random:在已經設定了超時的數據中隨機刪除.
    • 4.allkeys-random:查詢全部的key,以後隨機刪除.
    • 5.volatile-ttl:查詢所有設定超時時間的數據,以後排序,將立刻將要過時的數據進行刪除操做.
    • 6.noeviction:若是設置爲該屬性,則不會進行刪除操做,若是內存溢出則報錯返回.volatile-lfu:從全部配置了過 期時間的鍵中驅逐使用頻率最少的鍵allkeys-lfu:從全部鍵中驅逐使用頻率最少的鍵 www.jianshu.com/p/c8aeb3eee…

自定義配置Redis

daemonize no 修改成 daemonize yes;守護進程,後臺運行,除非手動kill進程
bind 127.0.0.1 註釋掉,不然沒法遠程鏈接redis服務
requirepass 設置密碼
複製代碼

Redis啓動

在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
複製代碼

Redis的關閉

第一種關閉方式:(斷電、非正常關閉。容易數據丟失)

# 查詢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
複製代碼
相關文章
相關標籤/搜索