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) 1 redis> 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特别适合用于存储对象的更多相关文章

  1. Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。

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

  2. ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象

    java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象. ArrayList list ...

  3. SharePoint designer workflow给一个hyperlink类型得field赋值, How to set value to a hyperlink field by designer workflow

    通过worlfow给一个链接类型得field赋值: 格式是: {link}, {linkDisplayname} 一定要注意逗号后面有个空格. 举个栗子: 如果一个链接显示为 Approve / Re ...

  4. springMvc把client传过来一个String类型,转换为日期类型为例

    springMvc--接受日期类型参数处理   目录 步骤 2.自定义类型转换规则 3.注册自定义的类型转换类 4.地址栏访问 这个问题,也即是springMvc如何进行参数类型的转换 , 以把cli ...

  5. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

  6. redis中关于使用string类型还是hash类型

    前篇:最近在做一个将redis中大数据量进行合并缩减优化的工作,其中一项按月将数据进行合并.将一个月的数据放入一个key-value键值对中. 例:p2d20180901-3.p2d20180902- ...

  7. Redis中一个String类型引发的惨案

    ​      曾经看到这么一个案例,有一个团队需要开发一个图片存储系统,要求这个系统能快速记录图片ID和图片存储对象ID,同时还需要能够根据图片的ID快速找到图片存储对象ID.我们假设用10位数来表示 ...

  8. 5、Redis五大基本数据类型——String类型

    一.Redis支持数据类型简介 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). 二.String类 ...

  9. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数

    1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1.  不支持SQL语法 2.  存储结构跟传统关系型数 ...

随机推荐

  1. C# 参考之方法参数关键字:params、ref及out

    如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值.可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.通过使用方法参数关键字,可以更改这种行为. params ...

  2. IDEA 从SVN检出项目相关配置

    1.新建好一个工程,然后通过SVN检出项目 2.检出后一般tomcat的环境是配置好的,点击上方Project Structure按钮,弹出窗体,查看Project项,一般没问题,如果要配置就配置Pr ...

  3. JDK安装成功了,环境变量也配置好了,测试代码也可以运行,但是打不开eclipse

    解决办法:删除eclipse,重新解压后,将JDK文件夹下的jre文件夹拷贝到eclipse文件夹下,OK

  4. ThinkPHP中initialize和construct的不同

    ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...

  5. DEDECMS 5.7之前版本远程SQL注入漏洞

    2012/4/29 凌晨 知道创宇安全研究团队截获到最新DEDECMS SQL注入 0day,官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用简单且ded ...

  6. C# 类型参数的约束

    在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制称为约束.约束是使用 where 上 ...

  7. 如何在eclipse中使用XYLayout布局?在此介绍如何把XYLayout导入到eclipse .

    XYLayout布局是jbuilder中自带的布局,它存在于jbcl.jar包中 ,而jbcl.jar包在JBuilder安装目录的lib目录下.它是每个控件按(x,y)坐标安排位置的布局.属于Bor ...

  8. linux 的终端字体色和背景色的修改方法(一)

    更改Linux系统终端的颜色主题 随着Linux系统在服务器端的崛起,Linux也在慢慢进军个人桌面系统领域.如果在使用Linux系统的终端时,对其颜色主题不是很满意,该怎么修改颜色的主题呢?今天笔者 ...

  9. NOIP2012 借教室

    描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样.面对海量租借教室的信息,我们自然希望编 ...

  10. Who Gets the Most Candies?(线段树 + 反素数 )

    Who Gets the Most Candies? Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%I64d &am ...