Redis系列-存储篇hash主要操作函数小结

hash是一些列key value(field value)的映射表。常常用其存储一些对象实例。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存。为什么会更省内存呢?需要搞清楚两个配置(hash-max-zipmap-entries和hash-max-zipmap-value)的含义,配置的详细介绍,我打算放在最后的配置优化环节讲。

1)新增

a)hset

语法:hset key field value

解释:设置hash表key中的field的值。如果hash表不存在,则创建,并执行设置field的值,如果hash表存在,值field的值覆盖或新增

[root@localhost ~]# redis-cli

redis 127.0.0.1:6379> hset user.1 name lisi #设置key user.1 name域 的值

(integer) 1

redis 127.0.0.1:6379> hset user.1 age 45 #设置age域

(integer) 1

redis 127.0.0.1:6379> hset user.1 tech lisi

(integer) 1

b)hmset

语法:hash key field value[key value]

解释:批量设置hash表key的域

redis 127.0.0.1:6379> hmset user.2 name niuer age 34 #同时设置name 和age域

OK

c)hsetnx

语法:hsetnx key field value

解释:仅仅当field域不存在时,设置hash表field的值

redis 127.0.0.1:6379> hsetnx user.1 name lisi #由于name域已经设置过,所以返回0

(integer) 0

redis 127.0.0.1:6379> hsetnx user.1 fri 5

(integer) 1 #fri域没有设置过,所以hset并返回1

2)查询

a)hget

语法:hget key field

解释:获取哈希表key的field值

redis 127.0.0.1:6379> hget user.1 name #存在的hash表及域

"lisi"

redis 127.0.0.1:6379> hget user.3 name #不存在的hash表

(nil)

redis 127.0.0.1:6379> hget user.1 bb #不存在的域

(nil)

b)hmget

语法:hmget key field[field]

解释:批量获取hash表的filed

redis 127.0.0.1:6379> hmget user.1 name age fri tech

1) "lisi"

2) "45"

3) "5"

4) "lisi"

redis 127.0.0.1:6379> hmget user.1 name age fri tech nofield #存在hash表中包含不存在的域nofield

1) "lisi"

2) "45"

3) "5"

4) "lisi"

5) (nil)

redis 127.0.0.1:6379> hmget user.3 name age fri #不存在的hash表

1) (nil)

2) (nil)

3) (nil)

c)hgetall

语法:hgetall key

解释:获取hash表的所有域值

redis 127.0.0.1:6379> hgetall user.2 #存在的hash表

1) "name" #域

2) "niuer" #域name的值

3) "age" #域

4) "34" #域age的值

redis 127.0.0.1:6379> hgetall user.3 #不存在的hansh表

(empty list or set)

d)hexists

语法:hexists key field

解释:判断hash表中是否存在某个域

redis 127.0.0.1:6379> hexists user.1 name #存在

(integer) 1

redis 127.0.0.1:6379> hexists user.1 nofield #不存在

(integer) 0

redis 127.0.0.1:6379> hexists use1 nofield #hash表不存在

(integer) 0

e)hkeys

语法:hkeys key

解释:获取hash表的所有域

redis 127.0.0.1:6379> hkeys user.1 #存在的hash表

1) "name"

2) "age"

3) "tech"

4) "fri"

redis 127.0.0.1:6379> hkeys user.4 #不存在的hash

(empty list or set)

f)hvals

语法:hvals key

解释:获取hash表的所有域值

redis 127.0.0.1:6379> hvals user.1 #存在hash

1) "lisi"

2) "45"

3) "lisi"

4) "5"

redis 127.0.0.1:6379> hvals user.4 #不存在

(empty list or set)

3)修改

语法:hincrby key field increment

解释:hash表field域的数值增加步长increment,如果increment是负值,则是递减。如果域不存在,初始值视为0

redis 127.0.0.1:6379> hincrby user.1 age 2 #增加2

(integer) 47

redis 127.0.0.1:6379> hincrby user.1 age -3 #减少3

(integer) 44

redis 127.0.0.1:6379> hincrby user.1 age2 -3 #域不能存在,初始值是0

(integer) -3

4)删除

语法:hdel key field[field]

解释:删除hash的域,如果指定多个field,则删除多个

redis 127.0.0.1:6379> hkeys user.1

1) "name"

2) "age"

3) "tech"

4) "fri"

5) "age2"

redis 127.0.0.1:6379> hdel user.1 age2 #删除一个域

(integer) 1

redis 127.0.0.1:6379> hkeys user.1

1) "name"

2) "age"

3) "tech"

4) "fri"

redis 127.0.0.1:6379> hdel user.1 fri tech #删除2个域

(integer) 2

redis 127.0.0.1:6379> hkeys user.1

1) "name"

2) "age"

redis 127.0.0.1:6379> hdel user.1 bb #删除一个不存在的域

(integer) 0 #返回0

5)其他

语法:hlen key

解释:获取hash的域数量

redis 127.0.0.1:6379> hkeys user.1

1) "name"

2) "age"

redis 127.0.0.1:6379> hlen user.1 #存在2个域

(integer) 2

redis 127.0.0.1:6379> hlen user.4 #不存在的hash

(integer) 0

redis hash 储存mysql_Redis系列-存储hash主要操作命令相关推荐

  1. redis最大储存512m_redis系列篇01

    今天写的这篇是redis系列的文章,我的安排是由浅入深写redis系列.本篇是简单的介绍入门,后续的文章会详细讲解redis深层次的知识. 欢迎大家关注我的微信公众号:码农Bug 首先说几个简单的命令 ...

  2. 一致性hash算法和redis集群动态数据存储

    记录:对一致性Hash算法,Java代码实现的深入研究链接地址: http://www.cnblogs.com/xrq730/p/5186728.html 全部来自: https://mp.weixi ...

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

    http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value   (存一个对象的时候key存) 将哈希 ...

  4. Redis操作str、list、hash、set、sortedset、bitmap

    通用操作 切换库(number的值在0-15之间,db0 ~ db15) select number 查看键 keys 表达式 :如 keys * 数据类型 type key 键是否存在 exists ...

  5. redis的String、List、Hash、SET、ZSet五中数据类型常用的一些场景总结

    目 目录 1.String类型常见的使用场景 1.1 一般的业务功能模块,比如购物车 1.2 简单的字符缓存 1.3 储存结构体或者对象 1.4 计数功能 1.5 各类场景下(单机或分布式)的标识号 ...

  6. Redis 笔记(05)— hash 类型(设置获取单个hash值、判断hash键是否存在、设置获取多个hash值、获取所有hash的键、获取所有hash的值、删除hash指定键)

    Redis 的字典是无序字典.Redis 的字典的值只能是字符串,当 hash 移除了最后一个元素之后,该数据结构自动被删除,内存被回收. hash 结构也可以用来存储用户信息,不同于字符串一次性需要 ...

  7. 02_NoSQL数据库之Redis数据库:string类型和hash类型

     Strings类型及操作 String是最简单的类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对象. S ...

  8. Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

    在搭建Redis5.x版本的集群环境出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况 在Linux同一台服务器下搭建伪集群-- 127 ...

  9. python之析构方法、item系列、hash方法、eq方法

    1.析构方法:释放一个空间之前执行 (new构造方法  申请一个空间) 某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源  网络资源 1)垃圾回收机制 class A:def __d ...

最新文章

  1. python精进之路 -- open函数
  2. rabbitmq相关开源代码c
  3. 《守望先锋》阵亡镜头、全场最佳和亮眼表现是如何设计
  4. 伯努利数与自然数幂和
  5. pytorch reshape_PyTorch中的contiguous
  6. mysql数据库(3)-查询
  7. R学习-- 数组和矩阵
  8. Nginx负载调度器+双Tomcat负载及会话共享+MySQL后端数据库
  9. zabbix利用traceroute命令监控主备链路状态
  10. ul 中的li取值问题
  11. android垂直排列元素_元素的视图属性之client
  12. android如何局域网通信,android局域网怎么通信
  13. 4 实验项目_Android开发环境搭建
  14. 文本编辑器(vim)
  15. windows 10 ltsc 安装微软商店
  16. ROS学习之error解决记录
  17. 支付宝退款流程 php,支付宝退款接口对接流程PHP语言
  18. 移动端H5页面编辑器开发实战--经验技巧篇
  19. Laravel 文件系统/存储
  20. 演出遭遇枪击 前Pantera吉他手不幸身亡

热门文章

  1. 请阐述调用Activity有哪几种方法,并写出相关的Java代码
  2. Salesforce 中获取数据表字段的 picklist 的值
  3. filetype 在搜索引擎中的使用方法(2)
  4. mysql 连接查询分组_详解MySQL中的分组查询与连接查询语句
  5. 安编译器错误_centos 安装pcre报c++编译器错误
  6. C++单目运算符的重载与双目运算符的重载【案例】
  7. 微课|玩转Python轻松过二级(3.1节):列表推导式与切片
  8. 详解Python生成器函数和生成器对象的原理和用法
  9. 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
  10. 修改ip和计算机名,批量设置IP地址和计算机名