1. 程式人生 > >redis學習筆記之redis簡介

redis學習筆記之redis簡介

優先 消息隊列 使用 優先級 開頭 角色 redis 結構 redis命令

redis簡介

Redis是一個開源的,高性能的,基於鍵值對的緩存與存儲系統,通過設置各種鍵值數據類型來適應不同場景下的緩存與存儲需求。同事redis的諸多高層級功能使其可以勝任消息隊列,任務隊列等不同角色。

存儲結構

Redis是REmote Dictionary Server(遠程字典服務器)的縮寫,它以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容,目前為止redis支持的鍵值數據類型如下:字符串類型,散列類型,列表類型,集合類型,和有序集合類型。

內存存儲與持久化

Redis數據庫中的所有數據都存儲在內存中。在一臺普通的筆記本電腦上,Redis可以在一秒內讀寫超過10萬個鍵值。
數據存儲在內存也有問題比如斷電。redis還提供了持久化的存儲,既可以將內存的數據異步寫入應哦按,同時不影響繼續
提供服務。

功能豐富

Redis可以為每個鍵設置生存時間,生存時間到後期會自動刪除,這一功能可以利用redis作為緩存系統來調用。
除此之外,redis的列表類型鍵可以用來實現隊列,並且支持阻塞式讀取,可以容易地實現一個高性能的優先級隊列,同時在更高層上,redis還支持"發布/訂閱"的消息模式,可以基於此構建聊天室。

redis的安裝

參考 -----

redis命令行客戶端

通過redis-cli向redis發送命令,

通過-h和-p自定義地址和端口號
$redis-cli -h 127.0.0.1 -p 6379

通過ping命令測試連接是否正常

$redis-cli PING
####狀態回復
PONG
####錯誤回復
如果上述命令不存在或者存在格式錯誤,會返回以error開頭的錯誤。如
reids>ERRORCOMMEND
輸出
(error)ERR unknow command ‘ERRORCOMMEND‘

獲取先輸入redis-cli進入交互模式,然後自由輸入命令,例如PING.

整數回復

返回遞增後的鍵值,類似mysql最後的索引值

依次執行以下命令
redis-cli
127.0.0.1:6379> set foot bar
OK
127.0.0.1:6379> INCR foo
(integer) 1
127.0.0.1:6379> set foot bar
OK
127.0.0.1:6379> INCR foo
(integer) 2

可以看到每次插入一條數據返回值都跟著變化。

字符串回復

127.0.0.1:6379> set foot bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> set foo banana
OK
127.0.0.1:6379> get foo
"banana"
127.0.0.1:6379>

可以看到get命令可以獲取foo的最新的鍵值。

字符串多行回復

127.0.0.1:6379> KEYS *
1) "proxies"
2) "foo"
3) "foot"

返回鍵名1是我之前執行的,3是之前foo打錯了執行的。

多行數據庫

redis提供了多個來存儲數據的字典,每個字典類型mysql的數據量,每個數據庫對外都是以0開始遞增,redis默認支持16個數據庫,客戶端連接到服務端時,redis默認使用0進行操作數據庫,使用select可以根據數據庫。比如選擇1號數據庫:

redis-cli
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get foo
(nil)
127.0.0.1:6379[1]>

redis不支持自定義數據庫的名字,每個數據庫必須以編號命名。比如可以使用0號數據庫存儲某個應用生產環境的數據,1號數據庫存儲測試環境中的數據,需要註意的是不同的應用應該使用不同的redis實例redis也不支持為每個數據庫設置不同的訪問密碼。
最重要的是redis實例中所有數據庫的數據並不是完全隔離的,比如FLUSHALL可以清空一個redis實例中所有數據庫中的數據。。由於redis非常輕量級,一個空的redis實例占用內存只有1MD左右,所以不用擔心多個redis實例會額外占用很多內存。

redis學習筆記之redis簡介