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. kaili linux中文乱码

    install kaili 用了kali,安装的英文版,一切都很爽,没有乱码 install chrome 不要用apt安装,也不要用chromium, 直接去网上找chrom的deb文件下来安装,注 ...

  2. Java初学(三)

    一.使用键盘录入数据 三步:1.导入包:import  java.util.Scanner; 2.创建键盘录入对象:Scanner sc=new  Scanner(System.in);   3.通过 ...

  3. Java及Android开发环境搭建

    前言 自从接触java以来,配置环境变量折腾了好几次,也几次被搞得晕头转向,后来常常是上网查阅相关资料才解决.但是过一段时间后一些细节就会记不清了,当要在其他机子上配置时又得上网查或者查阅相关书籍,如 ...

  4. ASP.NTE 5 Target framework dnx451 and dnxcore50(转)原文:http://www.cnblogs.com/xishuai/p/aspnet5-target-framework-dnx451-and-dnxcore50.html

    中文不知如何定义标题,所以干脆就直接贴出关键字,在 ASP.NTE 5 项目的 project.json 配置文件中,会有这样的定义: "frameworks": { " ...

  5. [整理]Web应用安全学习

    最近在复习TCP/IP相关知识,同时也想对网络安全相关的知识进行系统的补漏. 阅读了一些常见的关于XSS.CSRF等的一些网上文章: http://www.cnblogs.com/luminji/ca ...

  6. HDU 4883 TIANKENG’s restaurant

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4883 解题报告:一家餐馆一天中有n波客人来吃饭,第 i 波  k 客人到达的时间是 s ,离开时的时间 ...

  7. 使用 systemd timer 备份数据库

    导读 主要的Linux发行版都改用systemd 来替代 System V启动方式,其中 systemd timer 能替代 crontab 计划任务的大部分功能.本文介绍了用systemd time ...

  8. java获得当前文件路径

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  9. uc_client是如何与UCenter进行通信的

    以用户登录为例介绍,其它注销,改密码,消息,头像,好友均类同. 从用户xxx在某一应用程序的login.php,输入用户名,密码讲起.先用uc_user_login函数到uc_server验证此用户和 ...

  10. linux增加自定义path和manpath

    linux安装软件到自定义路径时,新安装的命令需要带上路径才可以执行,不能像系统自带命令那样可以直接使用. 这个时候可以通过修改环境变量PATH和MANPATH,来实现像系统命令一样使用新安装的命令并 ...