***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?已經存在于哈希表中,舊值將被覆蓋。
可用版本:?------------------------------------------------------------------------------------
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 WorldOK
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 field31)?"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 myhash1)?"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 myhash1)?"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 myhash1)?"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特别适合用于存储对象...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sed简单用法
- 下一篇: 用java写了一个汉诺塔