日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

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

HSET

HSET key field value ? (存一個(gè)對(duì)象的時(shí)候key存)

將哈希表?key?中的域?field?的值設(shè)為?value?。

如果?key?不存在,一個(gè)新的哈希表被創(chuàng)建并進(jìn)行?HSET?操作。

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

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

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

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

?

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

  hash-max-zipmap-entries 64 #配置字段最多64個(gè)。

  hash-max-zipmap-value 512 #配置value最大為512字節(jié)。

  1、hset

  設(shè)置hash field為指定值,如果key不存在,則先創(chuàng)建。

redis?127.0.0.1:6379>?hset myhash field1 Hello

  (integer)?1

  redis?127.0.0.1:6379>

  2、hsetnx

  設(shè)置hash field為指定值,如果key不存在,則先創(chuàng)建。如果field已經(jīng)存在,返回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>

  第一次執(zhí)行是成功的,但第二次執(zhí)行相同的命令失敗,原因是field已經(jīng)存在了。

  3、hmset

  同時(shí)設(shè)置hash的多個(gè)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>

  由于數(shù)據(jù)庫沒有field3,所以取到的是一個(gè)空值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>

  由于數(shù)據(jù)庫沒有field3,所以取到的是一個(gè)空值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,即做了一個(gè)減8的操作。

  7、hexists

  測(cè)試指定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數(shù)量。

redis?127.0.0.1:6379>?hlen myhash

  (integer)?4

  redis?127.0.0.1:6379>

  通過上例可以看到myhash中有4個(gè)field。

  9、hdel

  返回指定hash的field數(shù)量。

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>

  說明這個(gè)hash中有3個(gè)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>

  說明這個(gè)hash中有3個(gè)field。

  12、hgetall

  獲取某個(gè)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及對(duì)應(yīng)的value都取出來了。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。