1. 程式人生 > 實用技巧 >Redis 資料獲取命令

Redis 資料獲取命令

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