Redis 資料獲取命令
阿新 • • 發佈:2020-09-01
Redis 資料獲取命令
GET
GET key
起始版本:1.0.0
返回key的value。如果key不存在,返回特殊值nil。
如果key的value不是string,就返回錯誤,因為GET只處理string型別的values。
返回值
simple-string-reply:key 對應的value,或者nil(key不存在時)
- 例子
redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
SET
SET key new_value
起始版本:1.0.0
將鍵key設定為指定的“字串”值。
如果 key 已經儲存了一個值,那麼這個操作會直接覆蓋原來的值,並且忽略原始型別。
當set命令執行成功之後,之前設定的過期時間都將失效
- 例子
redis> SET mykey "Hello"
OK
redis> GET mykey
"Hello"
HGET
HGET key field
起始版本:2.0.0
返回 key 指定的雜湊集中該欄位所關聯的值
返回值
bulk-string-reply:該欄位所關聯的值。當欄位不存在或者 key 不存在時返回nil。
- 例子
redis> HSET myhash field1 "foo"
(integer) 1
redis> HGET myhash field1
"foo"
redis> HGET myhash field2
(nil)
HSET
HSET key field value
起始版本:2.0.0 設定 key 指定的雜湊集中指定欄位的值。 如果 key 指定的雜湊集不存在,會建立一個新的雜湊集並與 key 關聯。 如果欄位在雜湊集中存在,它將被重寫。 返回值 integer-reply:含義如下 1如果field是一個新的欄位 0如果field原來在map裡面已經存在
- 例子
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HGET myhash field1
"Hello"
層級關係、目錄形式資料
使用 redis 儲存資料的時候,有時候為了檢視的方便,通常會有層級或者說是目錄,
這時候我們在set的時候,需要將key值使用 “:” 的符號來區分層級關係,
比如:set("a:b", "123"),
那麼在 redis 中就是 a 目錄下的 key值 為 b 的 value 為 123。
- 儲存資料
SET("a:b", "123")
HSET "a:b" c "Hello"
- 獲取資料
GET a:b
HGET a:b c
查詢資料中遇到的問題
- 查詢資料報錯
WRONGTYPE Operation against a key holding the wrong kind of value
- 這個錯誤說明了用的redis方法與redis伺服器中儲存資料的型別存在衝突。
例如:資料庫中有一個key的資料儲存的是Hash型別的,但是使用redis執行資料操作的時候卻使用了非Hash的操作方法。此時就會報
WRONGTYPE Operation against a key holding the wrong kind of value這個錯誤!
- 問題解決:
# 先執行一條如下命令:
redis 127.0.0.1:6379>type key
# 此時會顯示出該key儲存在現在redis伺服器中的型別,例如:
redis 127.0.0.1:6379>hash
# 則表示key為以hash型別儲存在redis伺服器裡的,此時操作這個資料就必須使用hset、hget等操作方法。
如果是zset如下:
redis 127.0.0.1:6379>zset
則表示資料型別為Sorted Sets的。此時就需要使用zadd、zrange等操作方法,否則就會報WRONGTYPE Operation against a key holding the wrong kind of value這個錯誤!
參考文件
https://www.cnblogs.com/jeffen/p/6091385.html
https://blog.csdn.net/tonvchong/article/details/11526237
http://redis.cn/commands.html