Redis介紹及安裝
Redis介紹及環境安裝
前置環境
centos7.9 最小化安裝
redis-6.0.6.tar.gz
環境可以連線外網用於安裝環境依賴
安裝依賴環境並確認gcc版本
yum install centos-release-scl
yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
安裝reidis
- 解壓安裝包
tar -zxvf redis-6.0.6.tar.gz
- 進入安裝目錄
cd redis-6.0.6
- 編譯安裝
make
make install
redis 預設安裝路徑
cd /usr/local/bin/
-
建立目錄 並將redis的配置檔案複製到 程式安裝目錄 /usr/local/bin/kconfig下
mkdir peizhi cp /opt/redis-6.0.6/redis.conf /usr/local/bin/peizhi/
-
redis預設不是後臺啟動 需要修改配檔案 大概在檔案的220行左右
vim /usr/local/bin/peizhi/redis.conf
-
通過指定的配置檔案啟動服務
cd /usr/local/bin redis-server peizhi/redis.conf
-
用redis-cli連線redis,Redis的預設埠6379
redis-cli -p 6379
-
檢視redis程序是否開啟
ps -ef |grep redis
-
關閉 退出redis
-
shutdown
exit
redis-benchmark介紹
redis-benchmark 是redis自帶官方壓力測試官方工具
#測試 100併發連線 100000請求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
後面可以根據自己的要求調節引數測試
啟動服務
redis-server peizhi/redis.conf ps -ef |grep redis
100000 requests completed in 1.71 seconds #10萬次訪問請求
100 parallel clients # 100客戶端併發連線
3 bytes payload#每次3 bytes
keep alive: 1 #單機效能
host configuration "save": 900 1 300 10 60 10000
host configuration "appendonly": no
multi-thread: no
36.99% <= 1 milliseconds
97.37% <= 2 milliseconds
99.88% <= 3 milliseconds
99.90% <= 15 milliseconds
99.90% <= 16 milliseconds
100.00% <= 16 milliseconds #16毫秒完成請求
58548.01 requests per second #每秒處理58548.01次請求
redis基礎知識
reids預設有16個數據庫 預設使用第0個數據庫
vim peizhi/redis.conf
127.0.0.1:6379> select 3 #select 用於切換資料庫
OK
127.0.0.1:6379[3]> dbsize # dbsize檢視資料庫key的個數 現在是0
(integer) 0
127.0.0.1:6379[3]>
不同資料庫之間 資料是不能互通的
127.0.0.1:6379[3]> set name panlin #資料庫3中設定key
OK
127.0.0.1:6379[3]> select 6 #切換到資料庫6
OK
127.0.0.1:6379[6]> get name #查不到key
(nil)
127.0.0.1:6379[6]> select 3 #切換到資料庫3 才能看到剛才寫入的資料
OK
127.0.0.1:6379[3]> get name
"panlin"
127.0.0.1:6379[3]>
127.0.0.1:6379[3]> keys * #檢視所有的key
1) "name"
127.0.0.1:6379[3]> keys * #檢視所有keys
1) "name"
127.0.0.1:6379[3]> flushdb #清空本資料庫
OK
127.0.0.1:6379[3]> keys * #清空完成
(empty array)
127.0.0.1:6379[3]>
127.0.0.1:6379> keys * #0號資料庫的內容 包含壓測寫入的資料
1) "mylist:{tag}"
2) "counter:{tag}:__rand_int__"
3) "key:{tag}:__rand_int__"
127.0.0.1:6379> select 3 #切換到3號資料庫
OK
127.0.0.1:6379[3]> FLUSHALL # 清空所有資料庫
OK
127.0.0.1:6379[3]> SELECT 0 #切換回0號資料庫
OK
127.0.0.1:6379> keys * #同樣也被清空了
(empty array)
127.0.0.1:6379>
關於redis的一些問題
什麼是redis
Redis(Remote Dictionary Server ),即遠端字典服務。
是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
Redis能做什麼用
- 記憶體儲存、持久化,記憶體是斷電即失的,所以需要持久化(RDB、AOF)
- 用於訪問資料庫的緩衝
- 釋出訂閱系統
- 地圖資訊分析
- 計時器、計數器(eg:瀏覽量)
- 。。。
redis特性
-
多樣的資料型別
-
持久化
-
叢集
-
事務
-
...
redis為什麼這麼快
-
redi是單執行緒的
-
redis的瓶頸不是cpu 瓶頸來源於是頻寬和記憶體
-
單執行緒為什麼還快
多執行緒的程式 因為有cpu 上下文切換 和cpu的效能有關
redis 所有的資料都放到記憶體中 單執行緒沒有上下文切換
對於記憶體系統 沒有上下文切換效率個更高 多次讀寫都在一個cpu上進行。
本節命令
命令不區分大小寫
./redis-server #啟動服務
redis-cli -p 6379 #通過客戶端連線redis
redis-benchmark #redis效能測試工具
shutdown #關閉redis
exit #退出redis-clikeys * #檢視所有keys
flushdb #清空本資料庫
select 3 #切換到3號資料庫
set name panlin #資料庫3中設定key
get name #檢視當前資料庫的key