一、哈希(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. js 函数和函数的参数

    /* * 函数 function *     - 函数也是一个对象 *     - 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码) *     - 函数中可以保存一些代码在需要的时候 ...

  2. 网络带宽和速度测试windows和linux用iperf工具

    网络带宽和速度测试windows和linux用iperf工具   Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性 ...

  3. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输

    前言   搭建Hi3516的基础虚拟机,为交叉编译环境搭建前期工作.后续会编译一个基本的C语言程序Demo,在HI3516上跑.   虚拟机   开发本对虚拟机做了一些基本要求,如下图:    其实重 ...

  4. Android LayoutInflater(布局填充器)

    先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: LayoutInflater layou ...

  5. [loj3524]钥匙

    由于到达关系具有传递性,可以考虑不断将若干个可以相互到达的点缩点,并且当两个点只能单向到达时,能到达另一个点的点一定不是最小值 由此,我们来考虑dfs,即不断从一个节点开始,遍历其可以到达的点,当发现 ...

  6. [bzoj3123]森林

    首先对于询问操作可以使用可持久化线段树来维护,对于连边操作对于两颗树中选取较小的树暴力练到另一个点上,点数可以用并查集然后只修改根的点数即可. 1 #include<bits/stdc++.h& ...

  7. [loj3276]遗迹

    假设已知$a_{i}$,通过以下方式确定$b_{i}$:从后往前枚举每一个数$i$,先令$b_{i}=a_{i}$,再将$b_{i}$不断减1直至不存在$j>i$且$b_{i}=b_{j}$或$ ...

  8. android测试之monkey测试

    1.首先安装SDK包 2.配置环境变量 3.打开CMD命令窗口,查看是否安装成功 命令:adb version 4.要做monkey测试的安卓包名,获取方式如下(必须启动要获取报名的app) 1.ad ...

  9. [SQL]master..sysprocesses

    --https://docs.microsoft.com/zh-cn/sql/relational-databases/system-compatibility-views/sys-sysproces ...

  10. JS设计模式之建造者模式

    建造者模式(builder pattern)属于创建型模式的一种,提供一种创建复杂对象的方式.它将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式是一步一步的创建 ...