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. vector与set区别(基础知识)

    首先,vector是序列式容器而set是关联式容器.set包含0个或多个不重复不排序的元素.也就是说set能够保证它里面所有的元素都是不重复的.另外对set容器进行插入时可以指定插入位置或者不指定插入 ...

  2. linux学习笔记一----------文件相关操作

    一.目录结构 二.文件管理操作命令(有关文件夹操作,使用Tab键自动补全文件名(如果多个默认第一个)) 1.ls 查看目录信息:ls -l 查看目录详细信息(等价于ll 某些系统不支持) 2.pwd ...

  3. 初学JDBC,获取插入记录的主键、执行批量操作

    一.获取插入记录主键值 在创建语句的地方使用Statement.RETURN_GENERATED_KEYS标识一下,然后通过getGeneratedKeys方法获得 preparedStatement ...

  4. mybatis使用小记

    参考资料:http://blog.csdn.net/hupanfeng/article/details/9098453 1.设置不缓存每次查询的结果: 如题,通过设置 flushCache=" ...

  5. Assembly文件被锁定

    使用 Assembly.LoadFile 加载程序集后 ,被加载的文件就会被锁定,之后就不能对其执行转移.删除等操作 为了解决次问题,我们可以先读取成字节流,然后转换成Assembly.代码如下:复制 ...

  6. PHP FORUM

    1.index.php <html> <!--功能:php论坛标题部分--> <head><meta http-equiv="content-typ ...

  7. phpcms 网站迁移服务器

    相信很多人不知道怎么去把PHPCMS V9进行搬家 在本地测试好的phpcms v9网站需要搬到服务器上,可以用以下方法: 1.上传所有的程序文件(如果主机支持压缩包在线解压,那么就打成zip的包,f ...

  8. PHP定界符 heredoc

    <?php echo <<<EOT //如果这个后面有空格,报错... haha EOT; //如果这个后面有空格,报错[如果没有空格,就这样文件直接结束,同样报错,请在EOT ...

  9. DOS中如何删除文件夹

    可以使用rd命令.如果目录是空的,那么可以用 rd 目录删除目录.如下图:输入Y之后系统就会删除整个目录. 如果目录是非空,那么使用rd 目录 /s来删除目录(目录下的文件也会删除一同).如果没有加/ ...

  10. 谈“技术含量”的问题

    最近又从离职同事那里听到这样的抱怨(原因),说做的事没有技术含量.想一想,从事车载软件开发这个行业快8年了,这个话题似乎从来没有停过.我自己曾经也为自己做的事是否有技术含量而苦恼过,今天就专门花点时间 ...