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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM