一、哈希(Hash)简介:

  • Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • Redis hash 是一个键值对集合。

二、常用命令

1、hset 语法:hset <key> <field> <value><key>集合中的 <field>键赋值<value>
127.0.0.1:6379> hset k1 name zhangsan age 12 phone 1231312     #k1里存值
(integer) 3
127.0.0.1:6379> hget k1 name
"zhangsan"
127.0.0.1:6379> hget k1 phone
"1231312"
127.0.0.1:6379> hset k1 name lisi #修改k1里的name的值为李四,返回0
(integer) 0
127.0.0.1:6379> hget k1 name #获取name对应的值
"lisi"
127.0.0.1:6379> hgetall k1
1) "name"
2) "lisi"
3) "age"
4) "12"
5) "phone"
6) "1231312"
127.0.0.1:6379>
2、hget 语法:hget <key1><field>从<key1>集合<field>取出 value
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "12"
5) "phone"
6) "1231231"
127.0.0.1:6379> hget k1 name #获取k1集合里的name对应的值
"zhangsan"
127.0.0.1:6379>
3、hmset 语法:hmset <key1><field1><value1><field2><value2>... 批量设置hash的值,会覆盖已存在的值
127.0.0.1:6379> hmset k1 name zhangsan age 22 phone 128909908731			#批量给k1设置对应的值
OK
127.0.0.1:6379> hget k1 name
"zhangsan"
127.0.0.1:6379> hget k1 age
"22"
127.0.0.1:6379> hget k1 phone
"128909908731"
4、hexists`语法:hexists ·查看哈希表 key 中,给定域 field 是否存在。
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hexists k1 name #判断k1中name对应的值是否存在,存在就返回1,反之返回0
(integer) 1
127.0.0.1:6379> hexists k1 sex
(integer) 0
127.0.0.1:6379>
5、hkeys 语法:hkeys <key>列出该hash集合的所有field
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hkeys k1 #展示出k1里面的所有filed值
1) "name"
2) "age"
3) "phone"
127.0.0.1:6379>
6、hvals 语法:hvals <key>列出该hash集合的所有value
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hvals k1 #获取k1中所有的value值
1) "zhangsan"
2) "22"
3) "128909908731"
127.0.0.1:6379>
7、hincrby 语法:hincrby <key><field><increment>为哈希表 key 中的域 field 的值加上增量 1 -1
127.0.0.1:6379> hset k1 age 12
(integer) 1
127.0.0.1:6379> hget k1 age
"12"
127.0.0.1:6379> hincrby k1 age 3 #让年龄增加3
(integer) 15
8、hsetnx 语法<:hsetnx key><field><value>将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在.
127.0.0.1:6379> hgetall k1
1) "age"
2) "15"
127.0.0.1:6379> hsetnx k1 age 12 #设置存在的filed的值,返回0
(integer) 0
127.0.0.1:6379> hget k1 age
"15"
127.0.0.1:6379> hsetnx k1 name zhangsan #设置不存的filed值,返回1,设置成功
(integer) 1
127.0.0.1:6379> hget k1 name
"zhangsan"

三、总结

  • 适合存储对象,如用户信息,商品信息
127.0.0.1:6379>  hset user:1 name why
(integer) 1
127.0.0.1:6379> hget user:1 name
"why"
127.0.0.1:6379> hset user:2 name lisi
(integer) 1
127.0.0.1:6379> hget user:2 name
"lisi"
  • 计数器

    • Redis 哈希表作为计数器的使用也非常广泛。它常常被用在记录网站每一天、一月、一年的访问数量。每一次访问,我们在对应的field上自增1
#记录商品的好评数量,差评数量上
127.0.0.1:6379> HINCRBY pid:1 Good 1
(integer) 1
127.0.0.1:6379> HINCRBY pid:1 Good 1
(integer) 2
127.0.0.1:6379> HINCRBY pid:1 bad 1
(integer) 1

本章redis的hash值,就介绍到这里,有不足指出请在评论区指出,大家一起学习!

8、Redis五大数据类型---哈希(Hash)的更多相关文章

  1. Redis五大数据类型的常用操作

    在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...

  2. 一文搞定Redis五大数据类型及应用场景

    本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...

  3. redis 五大数据类型使用

    redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex na ...

  4. Python操作redis系列以 哈希(Hash)命令详解(四)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...

  5. Redis五大数据类型详解

    关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...

  6. redis五大数据类型以及常用操作命令

    Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...

  7. 四:Redis五大数据类型

    Redis的五大数据类型 1.string(字符串) string是Redis最基本的类型,你可以理解成与menmcached一模一样的类型,一个key对应一个value string类型是二进制安全 ...

  8. 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型

    热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....;  => keys product* 订单的 ...

  9. Redis中的哈希(Hash)

    Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值 ...

随机推荐

  1. Django笔记&教程 2-3 视图(view)函数介绍

    Django 自学笔记兼学习教程第2章第3节--视图(view)函数介绍 点击查看教程总目录 参考文献:https://docs.djangoproject.com/en/2.2/topics/htt ...

  2. Java 单例模式大乱斗

    1. 饿汉模式 线程安全 public class SingleInstance1 { private static SingleInstance1 single=new SingleInstance ...

  3. 一文理解Java-class字节码文件

    前言 java语言在其刚诞生之际喊出的口号--"Write Once,Run Anywhere",正是基于字节码(byte code)而存在的,java能够做到平台无关性,得力于这 ...

  4. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  5. char数据可以放入int[]中会自动转换

    int[] ary ={'b','c','a','d','e','f'};System.out.println(ary[0]);//98String str = new String(ary, 2, ...

  6. could not extract ResultSet

    使用jpa进行代码更新:update的时候发现代码出现了异常:could not extract ResultSet 在数据库看数据并没有更新,后发现更新操作需要加一个注解 注释:当设置nativeQ ...

  7. 2017年最有前景的十大IT职业岗位

    在IT行业,并不常存在失业的现象,因为目前整个行业存在严重的专业人才供给不足的现象:但同样,想要进入这个行业并牢牢站稳脚跟,你也需要拥有更强于其他行业的竞争力和承受更大的压力.那在行业中,哪些职位更有 ...

  8. Codeforces 1288F - Red-Blue Graph(上下界网络流)

    Codeforces 题面传送门 & 洛谷题面传送门 好久没有写过上下界网络流了,先来一题再说( 首先先假设所有边都是蓝边,那么这样首先就有 \(b\times m\) 的花费,但是这样不一定 ...

  9. Contest 2050 and Codeforces Round #718 (Div. 1 + Div. 2) 题解

    竟然上 GM 了,incredible( A 首先如果 \(2050\nmid n\) 那显然就 \(-1\) 了,否则答案显然为 \(\dfrac{n}{2050}\) 的各位数字和. B 显然这个 ...

  10. DirectX12 3D 游戏开发与实战第七章内容(下)

    利用Direct3D绘制几何体(续) 学习目标 学会一种无须每帧都要刷新命令队列的渲染流程,由此来优化程序的性能 了解另外两种跟签名参数类型:根描述符和根常量 探索如何在程序中生成和绘制常见的几何体, ...