redis学习(三)hash

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不存在,则先创建。

  2、hsetnx

  设置hash field为指定值,如果key不存在,则先创建。如果field已经存在,返回0,nx是not exist的意思。

  3、hmset

  同时设置hash的多个field。

  4、hget

  获取指定的hash field。

  5、hmget

  获取全部指定的hash filed。

  6、hincrby

  指定的hash filed 加上给定值。

  7、hexists

  测试指定field是否存在。

  8、hlen

  返回指定hash的field数量。

  9、hdel

  删除指定hash的field及对应的value。

  10、hkeys

  返回hash的所有field。

  11、hvals

  返回hash的所有value。

  12、hgetall

  获取某个hash中全部的filed及value。

 

posted @ 2014-07-09 18:30  shisw  阅读(202)  评论(0)    收藏  举报