一、哈希(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. Python 操作 Redis 发布订阅

    Python 操作 Redis 发布订阅 介绍 Redis可以通过多个客户机订阅相同的频道,一个服务机在相应频道进行发布,从而实现在客户机收听服务机发布相应信息,可以利用这个机制实现多个客户机之间的信 ...

  2. 问题 A: 大数阶乘

    题目描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行 ...

  3. 最大连续子数组和--dp

    最大连续子数组和 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段 ...

  4. 【Java】运行时Java对象在内存中是如何存储的?

    翻译自这一篇文章 我们知道函数在内存中实现为一个活动记录的栈.我们也知道Java方法在JVM栈区中实现为一个帧栈而Java对象是在堆区进行分配的. Java对象在堆内存中是怎样的呢?一旦对象保存在内存 ...

  5. InnoDB 索引详解

    1.什么是索引 索引是存储引擎用于快速找到记录的一种数据结构. 2.索引有哪些数据结构 顺序查找结构:这种查找效率很低,复杂度为O(n).大数据量的时候查询效率很低. 有序的数据排列:二分查找法又称折 ...

  6. [bzoj5343]混合果汁

    二分枚举答案,问题转化为计算至少取到一定体积,价格最少是多少,显然是贪心取最小,用线段树维护,然后因为要判断答案,所以可持久化一下即可. 1 #include<bits/stdc++.h> ...

  7. 待办事项-redis

    package com.easyagu.liwei.util;import redis.clients.jedis.BinaryClient;import redis.clients.jedis.Je ...

  8. Qt5 connect 重载信号和槽

    转载文章超哥的经验之谈---Qt5 connect使用之"重载信号和槽" 在Qt4中,关联信号与槽是要使用到SIGNAL()和SLOT()这两个宏. QLabel *label = ...

  9. Feed系统设计分析(类似微博的用户动态分享问题)

    Feed系统 最近在研究一个个人动态分享平台,对动态的推送方式有些疑惑,于是研究到了以下结果. 简介 在信息学里面,Feed其实是一个信息单元,比如一条朋友圈状态.一条微博.一条资讯或一条短视频等,所 ...

  10. Codeforces 1129E - Legendary Tree(思维题)

    Codeforces 题面传送门 & 洛谷题面传送门 考虑以 \(1\) 为根,记 \(siz_i\) 为 \(i\) 子树的大小,那么可以通过询问 \(S=\{2,3,\cdots,n\}, ...