日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...

發布時間:2023/12/4 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://redis.readthedocs.org/en/latest/hash/hset.html

HSET

HSET key field value ? (存一個對象的時候key存)

將哈希表?key?中的域?field?的值設為?value?。

如果?key?不存在,一個新的哈希表被創建并進行?HSET?操作。

如果域?field?已經存在于哈希表中,舊值將被覆蓋。

可用版本:
>= 2.0.0
時間復雜度:
O(1)
返回值:
如果?field?是哈希表中的一個新建域,并且值設置成功,返回?1?。 如果哈希表中域?field?已經存在且舊值已被新值覆蓋,返回?0?。
redis> HSET website google "www.g.cn" # 設置一個新域 (integer) 1redis> HSET website google "www.google.com" # 覆蓋一個舊域 (integer) 0

?------------------------------------------------------------------------------------

http://langgufu.iteye.com/blog/1434408

?

Redis hash是一個string類型的field和value的映射表.它的添加、刪除操作都是O(1)(平均)。hash特別適合用于存儲對象。相較于將對象的每個字段存成單個string類型。將一個對象存儲在hash類型中會占用更少的內存,并且可以更方便的存取整個對象。省內存的原因是新建一個hash對象時開始是用zipmap(又稱為small hash)來存儲的。這個zipmap其實并不是hash table,但是zipmap相比正常的hash實現可以節省不少hash本身需要的一些元數據存儲開銷。盡管zipmap的添加,刪除,查找都是O(n),但是由于一般對象的field數量都不太多。所以使用zipmap也是很快的,也就是說添加刪除平均還是O(1)。如果field或者value的大小超出一定限制后,Redis會在內部自動將zipmap替換成正常的hash實現. 這個限制可以在配置文件中指定

  hash-max-zipmap-entries 64 #配置字段最多64個。

  hash-max-zipmap-value 512 #配置value最大為512字節。

  1、hset

  設置hash field為指定值,如果key不存在,則先創建。

redis?127.0.0.1:6379>?hset myhash field1 Hello

  (integer)?1

  redis?127.0.0.1:6379>

  2、hsetnx

  設置hash field為指定值,如果key不存在,則先創建。如果field已經存在,返回0,nx是not exist的意思。

redis?127.0.0.1:6379>?hsetnx myhash field?"Hello"

  (integer)?1

  redis?127.0.0.1:6379>?hsetnx myhash field?"Hello"

  (integer)?0

  redis?127.0.0.1:6379>

  第一次執行是成功的,但第二次執行相同的命令失敗,原因是field已經存在了。

  3、hmset

  同時設置hash的多個field。

redis?127.0.0.1:6379>?hmset myhash field1 Hello field2 World

  OK

  redis?127.0.0.1:6379>

  4、hget

  獲取指定的hash field。

redis?127.0.0.1:6379>?hget myhash field1

  "Hello"

  redis?127.0.0.1:6379>?hget myhash field2

  "World"

  redis?127.0.0.1:6379>?hget myhash field3

  (nil)

  redis?127.0.0.1:6379>

  由于數據庫沒有field3,所以取到的是一個空值nil。

  5、hmget

  獲取全部指定的hash filed。

redis?127.0.0.1:6379>?hmget myhash field1 field2 field3

  1)?"Hello"

  2)?"World"

  3) (nil)

  redis?127.0.0.1:6379>

  由于數據庫沒有field3,所以取到的是一個空值nil。

?

  6、hincrby

  指定的hash filed 加上給定值。

redis?127.0.0.1:6379>?hset myhash field3?20

  (integer)?1

  redis?127.0.0.1:6379>?hget myhash field3

  "20"

  redis?127.0.0.1:6379>?hincrby myhash field3?-8

  (integer)?12

  redis?127.0.0.1:6379>?hget myhash field3

  "12"

  redis?127.0.0.1:6379>

  在本例中我們將field3的值從20降到了12,即做了一個減8的操作。

  7、hexists

  測試指定field是否存在。

redis?127.0.0.1:6379>?hexists myhash field1

  (integer)?1

  redis?127.0.0.1:6379>?hexists myhash field9

  (integer)?0

  redis?127.0.0.1:6379>

  通過上例可以說明field1存在,但field9是不存在的。

  8、hlen

  返回指定hash的field數量。

redis?127.0.0.1:6379>?hlen myhash

  (integer)?4

  redis?127.0.0.1:6379>

  通過上例可以看到myhash中有4個field。

  9、hdel

  返回指定hash的field數量。

redis?127.0.0.1:6379>?hlen myhash

  (integer)?4

  redis?127.0.0.1:6379>?hdel myhash field1

  (integer)?1

  redis?127.0.0.1:6379>?hlen myhash

  (integer)?3

  redis?127.0.0.1:6379>

  10、hkeys

  返回hash的所有field。

redis?127.0.0.1:6379>?hkeys myhash

  1)?"field2"

  2)?"field"

  3)?"field3"

  redis?127.0.0.1:6379>

  說明這個hash中有3個field。

  11、hvals

  返回hash的所有value。

redis?127.0.0.1:6379>?hvals myhash

  1)?"World"

  2)?"Hello"

  3)?"12"

  redis?127.0.0.1:6379>

  說明這個hash中有3個field。

  12、hgetall

  獲取某個hash中全部的filed及value。

redis?127.0.0.1:6379>?hgetall myhash

  1)?"field2"

  2)?"World"

  3)?"field"

  4)?"Hello"

  5)?"field3"

  6)?"12"

  redis?127.0.0.1:6379>

  可見,一下子將myhash中所有的field及對應的value都取出來了。

總結

以上是生活随笔為你收集整理的***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。