Redis 2.Redis入門介紹
阿新 • • 發佈:2018-12-14
Redis
@Author:hanguixian
@Email:[email protected]
二 Redis入門介紹
1 入門概述
1.1 是什麼
- Redis:REmote DIctionary Server(遠端字典伺服器)
- 是完全開源免費的,用C語言編寫的,遵守BSD協議,是一個高效能的(key/value)分散式記憶體資料庫,基於記憶體執行並支援持久化的NoSQL資料庫,是當前最熱門的NoSql資料庫之一,也被人們稱為資料結構伺服器
- Redis 與其他 key - value 快取產品有以下三個特點
- Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用
- Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存
- Redis支援資料的備份,即master-slave模式的資料備份
1.2 能幹嘛
- 記憶體儲存和持久化:redis支援非同步將記憶體中的資料寫到硬碟上,同時不影響繼續服務
- 取最新N個數據的操作,如:可以將最新的10條評論的ID放在Redis的List集合裡面
- 模擬類似於HttpSession這種需要設定過期時間的功能
- 釋出、訂閱訊息系統
- 定時器、計數器
1.3 官網
1.4 內容
- 資料型別、基本操作和配置
- 持久化和複製,RDB/AOF
- 事務的控制
- 複製
- …
2 Redis的安裝
2.1 windows版安裝
- 下載地址:https://github.com/dmajkic/redis/downloads
- 下載到的Redis支援32bit和64bit。根據自己實際情況選擇,將64bit的內容cp到自定義碟符安裝目錄取名redis。 如 C:\reids
- 開啟一個cmd視窗 使用cd命令切換目錄到 C:\redis 執行 redis-server.exe redis.conf 。
- 如果想方便的話,可以把redis的路徑加到系統的環境變數裡,這樣就省得再輸路徑了,後面的那個redis.conf可以省略,如果省略,會啟用預設的。輸入之後,會顯示如下介面:
- 這時候另啟一個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。
- 切換到redis目錄下執行 redis-cli.exe -h 127.0.0.1 -p 6379 。
- 測試
- 設定鍵值對 set myKey abc
- 取出鍵值對 get myKey
2.2 Linux版安裝
由於企業裡面做Redis開發,99%都是Linux版的運用和安裝,幾乎不會涉及到Windows版
2.2.1 安裝
- 下載獲得redis-x.x.x.tar.gz後將它放入我們的Linux目錄/opt
- /opt目錄下,解壓命令:tar -zxvf redis-x.x.x.tar.gz
- 解壓完成後出現資料夾:redis-x.x.x
- 進入目錄:cd redis-x.x.x
- 在redis-x.x.x目錄下執行make命令(需要gcc:yum install gcc-c++)
- 如果make完成後繼續執行make install
#安裝
# https://redis.io/download
#下載,解壓縮和編譯Redis:
wget http://download.redis.io/releases/redis-5.0.2.tar.gz
tar xzf redis-5.0.2.tar.gz
cd redis-5.0.2
make
make install(可選)
#現在編譯的二進位制檔案在src 目錄中可用 。執行Redis:
src/redis-server
#您可以使用內建客戶端與Redis進行互動:
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
2.2.2 檢視預設安裝目錄:usr/local/bin
[[email protected] ~]# cd /usr/local/bin/
[[email protected] bin]# ll
total 32636
-rwxr-xr-x 1 root root 4365264 Nov 26 21:52 redis-benchmark
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-check-aof
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-check-rdb
-rwxr-xr-x 1 root root 4782296 Nov 26 21:52 redis-cli
lrwxrwxrwx 1 root root 12 Nov 26 21:52 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 8086264 Nov 26 21:52 redis-server
- redis-benchmark:效能測試工具,可以在自己本子執行,看看自己本子效能如何
- redis-check-aof:修復有問題的AOF檔案,rdb和aof後面講
- redis-check-dump(redis-check-rdb)(有點小問題):修復有問題的dump.rdb檔案
- redis-cli:客戶端,操作入口
- redis-sentinel:redis叢集使用
- redis-server:Redis伺服器啟動命令
2.2.3 啟動
- 修改redis.conf檔案將裡面的daemonize no 改成 yes,讓服務在後臺啟動
- 將預設的redis.conf拷貝到自己定義好的一個路徑下,比如/myconf
- /usr/local/bin目錄下執行redis-server,執行拷貝出存放了自定義conf檔案目錄下的redis.conf檔案
redis-server /hanguixian/myredis/redis.conf
- 單例項關閉:redis-cli shutdown
- 多例項關閉,指定埠關閉:redis-cli -p 6379 shutdown
[[email protected] bin]# redis-server /hanguixian/myredis/redis.conf
14788:C 27 Nov 2018 15:59:21.466 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14788:C 27 Nov 2018 15:59:21.466 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=14788, just started
14788:C 27 Nov 2018 15:59:21.466 # Configuration loaded
[[email protected] bin]# redis-cli -p 6379
127.0.0.1:6379>
[[email protected] bin]# ps -ef|grep redis
root 12151 1 0 Nov25 ? 00:02:37 ./redis-server 127.0.0.1:6379
root 14797 14738 0 16:00 pts/0 00:00:00 grep --color=auto redis
[[email protected] bin]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected> exit
[[email protected] bin]# redis-cli -p 6379
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[[email protected] bin]# ps -ef|grep redis
root 14819 14738 0 16:02 pts/0 00:00:00 grep --color=auto redis
[[email protected] bin]# redis-server /hanguixian/myredis/redis.conf
14820:C 27 Nov 2018 16:02:44.066 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14820:C 27 Nov 2018 16:02:44.066 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=14820, just started
14820:C 27 Nov 2018 16:02:44.066 # Configuration loaded
[[email protected] bin]# ps -ef|grep redis
root 14821 1 0 16:02 ? 00:00:00 redis-server 127.0.0.1:6379
root 14826 14738 0 16:02 pts/0 00:00:00 grep --color=auto redis
[[email protected] bin]# redis-cli shutdown
[[email protected] bin]# ps -ef|grep redis
root 14829 14738 0 16:03 pts/0 00:00:00 grep --color=auto redis
2.3 Redis啟動後雜項基礎知識
2.3.1 單程序
- 單程序模型來處理客戶端的請求。對讀寫等事件的響應是通過對epoll函式的包裝來做到的。Redis的實際處理速度完全依靠主程序的執行效率
- epoll是Linux核心為處理大批量檔案描述符而作了改進的epoll,是Linux下多路複用IO介面select/poll的增強版本,
它能顯著提高程式在大量併發連線中只有少量活躍的情況下的系統CPU利用率。
2.3.2 基本瞭解
- 預設16個數據庫,類似陣列下表從零開始,初始預設使用零號庫
- select命令切換資料庫
- dbsize檢視當前資料庫的key的數量
- flushdb:清空當前庫
- Flushall;通殺全部庫
- 統一密碼管理,16個庫都是同樣密碼,要麼都OK要麼一個也連線不上
- 設定資料庫的數量,預設資料庫為0,可以使用SELECT
<dbid>
命令在連線上指定資料庫iddatabases 16
- 設定資料庫的數量,預設資料庫為0,可以使用SELECT
- Redis索引都是從零開始
- 為什麼預設埠是6379
- 6379在是手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字。MERZ長期以來被antirez及其朋友當作愚蠢的代名詞。