redis簡單入門教程

本文是閱讀 redis 官方提供的可交互入門教程而作的筆記。該官方教材帶咱們快速瞭解了redis 的一些重要特性。本文在官方教程的基礎上,加入了本人的一些簡單知識擴充和對一些細節的說明。redis

redis 是一個鍵值對內存數據庫。數據庫

字符串

保存一個字符串。bash

SET server:name "fido"
複製代碼

值除了可使用雙引號,還可使用單引號,甚至不用引號。而後咱們能夠經過 GET 命令獲取它。flex

GET server:name 
=> "fido"
複製代碼

固然咱們也能夠保存數字(貌似會以字符串的形式保存),並能夠進行自增和自減。若是對一個不存在的鍵進行自增,會獲得 1。網站

SET connections 10
INCR connections 
=> 11
INCR connections 
=> 12
DEL connections
INCR connections 
=> 1
複製代碼

爲何這裏會提供一個 INCR 呢?直接取鍵的值,而後加一,再賦值回去不行嗎?緣由是若是有多個客戶端同時進行加一操做會出現問題。假設 客戶端 A 獲得一個鍵的值是 10,此時 客戶端 B 也獲得 10。而後客戶端A設置值爲 11,接着客戶端 B 設置爲 11。最後值是 11,而不是咱們想要的 12。爲了防止這種狀況發生,咱們把取值、加1、賦值這三個操做合併成一個 原子操做 INCR,就解決了上面的問題。spa

設置過時時間。翻譯

SET resource:lock "Redis Demo"
EXPIRE resource:lock 120
複製代碼

EXPIRE 命令設置的是鍵的有效時間,一旦過了這個時間,就會變成 nil。單位是秒。執行了 EXPIRE 命令後,若是想知道鍵還有多少秒過時,能夠執行下面命令:code

TTL resource:lock 
=> 113
複製代碼

若是一個鍵過時了,TTL 命令會返回 -2。若是返回的是 -1,說明這個鍵沒有設置過過時時間,即永久存在。server

列表(list)

列表的做用是存儲一組數據。對象

RPUSHLPUSH 分別能夠在列表的右邊和左邊添加數據。咱們能夠一次添加多個元素。另外該該命令執行完,會返回列表的最終長度。

RPUSH friends "Alice"
RPUSH friends "Bob"
LPUSH friends "Sam"
複製代碼

獲取一個列表的內容,這裏就不能用 GET 命令了,而要使用 LRANGE 命令。

LRANGE friends 0 -1  
=> 1) "Sam", 2) "Alice", 3) "Bob"
LRANGE friends 1 2
=> 1) "Alice", 2) "Bob"
複製代碼

LRANCE 兩個索引 start 和 end 值必須指定。索引從 0 開始。若是索引值爲負數,表示 列表長度加上這個負數的索引。取值範圍不是前閉後開,而是 前閉後閉,即 [start, end]。若是start 比 end 大,會返回空列表。

LLEN 命令能夠獲取列表長度。LPOP 命令能夠移除列表的第一個元素並返回它。RPOP 則是移除最後一個元素並返回它。

集合(set)

集合,用來存儲一組不重複的數據。集合不保證有序,保證有序可使用 有序集合(sorted set)。

  • SADD :給集合添加新的值。
  • SREM:將指定的值從集合中移除。
  • SMEMBERS 能夠查看集合的全部值。
SADD superpowers "flight"
SADD superpowers "x-ray vision"
SADD superpowers "reflexes"
複製代碼
  • SISMEMBER:檢測值是否存在於集合中,1表示存在,0表示不存在
SISMEMBER superpowers "flight"  
=> 1
複製代碼
  • SUNION:返回多個集合的並集(即,合併和去重)

有序集合 (sorted set)

ZADD 用於添加數據。

ZADD hackers 1940 "Alan Kay"
ZADD hackers 1906 "Grace Hopper"
複製代碼

這裏咱們給 hackers 有序集合添加了兩個值,並設置了它們對應的分數(score)1940 和 1906。分數的值用於有序集合的排序,有序集合默認從小到大進行排序。不一樣值的分數能夠相同,此時按照放入集合時的順序排列。

ZRANGE 的用法相似 LRANGE,須要給出鍵名、起點索引和終點索引,一樣也是前閉後閉。

ZRANGE hackers 2 4
複製代碼

若是你還想獲得 scroe,能夠在命令的最後添加 WITHSCORES

字典(hash)

hash 的翻譯有不少,哈希表、散列表、字典,這些都是能夠的。這裏我就叫作字典好了。你能夠把它當作一個用哈希表實現的對象。

HSET 能夠給一個字典添加一個或多個鍵值對。

HSET user:1000 name "John Smith"
HSET user:1000 email "john.smith@example.com"
複製代碼

上面的操做等同於:

HMSET user:1000 name "John Smith" email "john.smith@example.com"
複製代碼

若是想要獲取一個字典的全部鍵值對,可使用 HGETALL 命令。

HGETALL user:1000
複製代碼

另外若是指向知道字典的某個鍵的值,可使用 HGET 命令。

HGET user:1000 name 
=> "John Smith"
複製代碼

字典中的數值類型的值,能夠相似字符串類型那樣進行加法運算等原子操做。

HSET user:1000 visits 10
HINCRBY user:1000 visits 1 
=> 11
HINCRBY user:1000 visits 10
=> 21
HDEL user:1000 visits
HINCRBY user:1000 visits 1 
=> 1
複製代碼

結語

這官方教程有點短耶。。

本文首發於本人的我的博客網站:blog.fstars.wang/2019/06/25/…

相關文章
相關標籤/搜索