NoSQL數據庫一Redis基本使用

基本操作

參考教程:https://www.yiibai.com/redis/
Redis 是 Key-Value 內存數據庫,操作是通過各種指令進行的,比如 SET 指令可以設置鍵值對,而 GET 指令則獲取某一個鍵的值。不同的數據結構,Redis 有不同的指令,這樣指令一共有幾十個,下面主要介紹一些常用的指令。

Redis 對 Key 也就是鍵有各種各樣的指令,主要有下面的指令(下面的指令中小寫字符串都是參數,可以自定義):

SET key value 設置鍵值;
EXISTS key 判斷鍵是否存在;
EXPIRE key seconds 設置 Key 的過期時間,過期以後Key 將被自動刪除;
TTL key 獲取 Key 的剩餘生存時間;
DEL key 刪除 Key;
TYPE key 獲取 Key 對應的 Value 的類型;
通過 redis-cli 演示以上的指令如下:


127.0.0.1:6379> exists user
(integer) 0
127.0.0.1:6379> set user aiden
OK
127.0.0.1:6379> get user
"aiden"
127.0.0.1:6379> type user
string
127.0.0.1:6379> expire user 5
(integer) 1
127.0.0.1:6379> ttl user
(integer) 4
127.0.0.1:6379> ttl user
(integer) 2
127.0.0.1:6379> ttl user
(integer) -2
127.0.0.1:6379> exists user
(integer) 0

上面例子中,首先判斷 user 鍵是否存在,接着通過 SET 設置了值,接着還使用 EXPIRE 指令設置了過期時間爲 5 秒。可以看到 5 秒後,user 鍵就被自動刪除了。

有的時候會看到輸出的字符串前有 b 這樣的前綴,表示字節編碼的字符串,對應的還有 u'xxxxx' 這類 unicode 編碼的字符串,都比較常見。

上文中已提到,Redis 還支持其他的數據結構,不僅僅是簡單的字符串鍵值對,比如支持哈希類型的鍵值,這種數據結構中 Key 對應於一個哈希,而哈希又包含多個字段和相應的值。對於這種類型主要有下面的操作指令:

HSET key field value 設置名稱爲 key 的哈希的字段 field 爲值 value;
HGET key field 獲取名爲 key 的哈希的字段 field;
HGETALL key 獲取名爲 Key 的哈希所有字段和 Value;
HKEYS key 獲取名爲 Key 的哈希的所有字段;
HLEN key 獲取名爲 Key 的哈希的字段數量;
通過 redis-cli 演示如下:


127.0.0.1:6379> exists user
(integer) 0
127.0.0.1:6379> hset user name aiden
(integer) 1
127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hmset user email [email protected] addr chengdu
OK
127.0.0.1:6379> hgetall user
1) "name"
2) "aiden"
3) "age"
4) "30"
5) "email"
6) "[email protected]"
7) "addr"
8) "chengdu"
127.0.0.1:6379> hkeys user
1) "name"
2) "age"
3) "email"
4) "addr"
127.0.0.1:6379> hget user addr
"chengdu"
127.0.0.1:6379> hlen user
(integer) 4

上面的例子中,設置了一個名爲 user 的哈希。先使用 HSET 爲單個字段賦值,接着使用 HMSET 爲多個字段賦值。使用 HGETALL 能一次獲取全部的字段和值。

Redis 還支持有序集合,有序集合可以用於快速實現排名功能,只要的操作指令如下:

ZADD key score member 將成員和對應的評分添加到有序集合中;
ZREVRANK key member 獲取 member 在有序集合 key 中的排名;
通過 redis-cli 演示如下:

127.0.0.1:6379> zadd rank 100 aiden
(integer) 1
127.0.0.1:6379> zadd rank 120 lxtttx
(integer) 1
127.0.0.1:6379> zadd rank 80 jin
(integer) 1
127.0.0.1:6379> zrevrank rank aiden
(integer) 1
127.0.0.1:6379> zrevrank rank  lxtttx
(integer) 0
127.0.0.1:6379> zrevrank rank  jin
(integer) 2
127.0.0.1:6379> zrevrank rank  not_exist
(nil)

上面例子中,我們通過 ZADD 往 rank 中添加了三個成員,最後通過 ZREVRANK 依次獲取了成員的排名,可以發現排名是從 0 開始計算的,排第 0 的成員得分最高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章