8、Redis五大数据类型---哈希(Hash)
一、哈希(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)的更多相关文章
- Redis五大数据类型的常用操作
在上一篇博文<centos安装redis>中,已经详细介绍了如何在centos上安装redis,今天主要介绍下Redis五大数据类型及其五大数据类型的相关操作. Redis支持五种数据类型 ...
- 一文搞定Redis五大数据类型及应用场景
本文学习知识点 redis五大数据类型数据类型:string.hash.list.set.sorted_set 五大类型各自的应用场景 @TOC 1. string类型 1-1 string类型数据的 ...
- redis 五大数据类型使用
redis 五大数据类型使用 字符串str 单个值 127.0.0.1:6379> set name pp # 设置键值[O(1)] OK 127.0.0.1:6379> setex na ...
- Python操作redis系列以 哈希(Hash)命令详解(四)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...
- Redis五大数据类型详解
关于Redis的五大数据类型,它们分别为:String.List.Hash.Set.SortSet.本文将会从它的底层数据结构.常用操作命令.一些特点和实际应用这几个方面进行解析.对于数据结构的解析, ...
- redis五大数据类型以及常用操作命令
Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...
- 四:Redis五大数据类型
Redis的五大数据类型 1.string(字符串) string是Redis最基本的类型,你可以理解成与menmcached一模一样的类型,一个key对应一个value string类型是二进制安全 ...
- 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型
热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....; => keys product* 订单的 ...
- Redis中的哈希(Hash)
Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值 ...
随机推荐
- script标签引入vue方式开发如何写组件
title: script标签引入vue方式开发如何写组件 date: 2020-05-08 sidebarDepth: 2 tags: vue 组件 script 标签 categories: vu ...
- [loj3333]混合物
假设选择的调味瓶为$k_{1}<k_{2}<...<k_{s}$,即判定是否存在正有理数解$\{x_{1},x_{2},...,x_{s}\}$,满足$$(\sum_{i=1}^{s ...
- [gym102900H]Rice Arrangement
(可以先阅读题目中关于顺逆时针的定义,避免理解错误) 考虑一盘菜$b_{i}$被$a_{j}$吃掉,对于其最后一次移动:如果是顺时针,则称$b_{i}$的移动区间为$[a_{j},b_{i}]$(若$ ...
- [bzoj5416]冒泡排序
结论:一个序列是好序列当且仅当其不存在长度为3的下降子序列 证明:考虑提示,一个长度为3的下降子序列必然会交换三次, 而这三次带来的收益实际上只有2,因此不合法 同时还可以得到:第i个数,要么是前缀最 ...
- Cortex-A系列中断
1. 回顾STM32系统 1.1 中断向量表 ARM芯片冲0x00000000,在程序开始的地方存放中断向量表,按下中断时,就相当于告诉CPU进入的函数.描述很多个中断服务函数的表. 对于STM32来 ...
- idea添加插件后重启后报错:cannot load project xxxx 解决方案
问题原因:新安装的idea下载插件后重启报错 找到windows上c:\Users\.IntelliJIdea<版本>\config\plugins\这个目录,然后 将对应插件删除
- 如何基于 React 封装一个组件
如何基于 React 封装一个组件 前言 很多小伙伴在第一次尝试封装组件时会和我一样碰到许多问题,比如人家的组件会有 color 属性,我们在使用组件时传入组件文档中说明的属性值如 primary , ...
- NFLSOJ 1072 - 【2021 六校联合训练 NOIP #1】异或(FWT+插值)
题面传送门 一道非常不错的 FWT+插值的题 %%%%%%%%%%%% 还是那句话,反正非六校的看不到题对吧((( 方便起见在下文中设 \(n=2^d\). 首先很明显的一点是这题涉及两个维度:异或和 ...
- 【软连接已存在,如何覆盖】ln: failed to create symbolic link ‘file.txt’: File exists
ln -s 改成 ln -sf f在很多软件的参数中意味着force ln -sf /usr/bin/bazel-1.0.0 /usr/bin/bazel
- Python编译工具Anaconda(含有spyder+jupyter)
Anaconda的下载和安装 官方的下载地址:https://www.anaconda.com/distribution/ 安装程序为一个可执行程序文件,下载完成后双击执行程序即可完成安装.安装过程一 ...