Redis的数据是通过key-value的方式存储的,对于value的数据类型有字符串、Hash、list、set、sortedSet
在redis命令语句中,语句是忽略大小写的,但是key是不可以忽略大小写的。

使用string遇到的问题。

  假设:我们使用一个类对象以json的形式存储在Redis中,类中有很多属性,我们有时候只是想修改其中一个数据的时候,操作就要回将数据从string中取出来,然后修改,这样会影响响应的速度。可以使用Hash来解决这个问题。

Hash的简单的介绍

  hash叫做散列类型,它提供了字段和值的映射,字段只能是字符串类型,不支持散转类型和集合类型等其它数据类型。
1.Hash类型
1.1命令
1.1.1赋值

HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

语法:HSET key field value (一次插入一个值)

127.0.0.1:6379> hset user username zhangsan
(integer) 1

一次设置多个字段

语法:HMSET key field value [field value]

127.0.0.1:> hmset user age  username lisi
OK

1.1.2取值

一次取一个值

语法:HGET key field

127.0.0.1:> hget user username
"zhangsan“

一次获取多个值

语法:HMGET key field [field ……]

127.0.0.1:> hmget user age username
) ""
) "lisi"

获取所以的字段

HGETALL key

127.0.0.1:> hgetall user
) "age"
) ""
) "username"
) "lisi"

1.1.3删除字段

可以一次删除一个或者多个字段,返回值是被删除的字段个数

语法:HDEL key field [field……]

127.0.0.1:> hdel user age
(integer)
127.0.0.1:> hdel user age name
(integer)
127.0.0.1:> hdel user age username
(integer)

1.1.4增加数字

语法:HINCRBY  key field increnum

127.0.0.1:> hincrby user age     将用户的年龄加2
(integer)
127.0.0.1:> hget user age 获取用户的年龄
"22“

1.1.5判断字段是否存在

语法:HEXISTS key field

127.0.0.1:> hexists user age        查看user中是否有age字段
(integer)
127.0.0.1:> hexists user name 查看user中是否有name字段
(integer)

1.1.6只获取字段或者字段值

语法:HKEYS key

   HVALS key

127.0.0.1:> hmset user age  name lisi
OK
127.0.0.1:> hkeys user
) "age"
) "name"
127.0.0.1:> hvals user
) ""
) "lisi"

1.1.7获取字段数量

语法:HLEN key

127.0.0.1:> hlen user
(integer)

2.1应用

存储商品信息 ,比如商品的id,商品名称,商品……

2.1.1存储商品信息

192.168.101.3:> HMSET items: id  name apple price 999.9
OK

2.1.2商品信息获取

192.168.101.3:> HGET items: id
""
192.168.101.3:> HGETALL items:
) "id"
) ""
) "name"
) "apple"
) "price"
) "999.9"

Redis学习笔记--Hash(五)的更多相关文章

  1. Redis学习笔记(五)——数据结构之哈希(Hash)

    一.介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象. Redis中每个hash可以存储232 - 1 键值对(40多亿). 基本命令: ...

  2. Redis学习笔记(五) 基本命令:Hash操作

    原文链接:http://doc.redisfans.com/hash/index.html 学习前先明确一下概念,这里我们把Redis的key称作key(键),把数据结构hash中的key称为fiel ...

  3. Redis学习笔记(五)- 数据类型之set类型

    Redis 的set是string类型的无序集合.set元素最大可以包含(2的32次方-1)个元素.set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1).hash tab ...

  4. 【转】Redis学习笔记(五)如何用Redis实现分布式锁(2)—— 集群版

    原文地址:http://bridgeforyou.cn/2018/09/02/Redis-Dsitributed-Lock-2/ 单机版实现的局限性 在上一篇文章中,我们讨论了Redis分布式锁的实现 ...

  5. Redis学习笔记(五)散列进阶

    HEXISTS key_name key(检查键key是否存在) HKEYS key_name(获得散列的所有键) HVALS key_name(获得散列的所有值) HINCRBY key_name ...

  6. Redis 学习笔记(五)高可用之主从模式

    上一节提到了 Redis 的持久性,也就是在服务器实例宕机或故障时,拥有再恢复的能力.但是在这个服务器实例宕机恢复期间,是无法接受新的数据请求.对于整体服务而言这是无法容忍的,因此我们可以使用多个服务 ...

  7. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  8. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

  9. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

随机推荐

  1. js---11闭包

    //匿名立即调用函数 (function(){//把a,b,f全部隐藏在函数中,外部访问不到, var a = 5; var b = 6; function f(){ alert(a); } wind ...

  2. 32.idea导入maven项目 无法加载依赖包

    maven Project重新导入即可

  3. 8.ZOrder

    T3LayerZorder.h #pragma once #include "cocos2d.h" USING_NS_CC; class T3LayerZorder:public ...

  4. Day2上午解题报告

    预计分数:100+0+60=160 实际分数:100+0+60=160 mmpT1数据错了... T1遭遇 题目描述 你是能看到第一题的 friends呢. —— hja ?座楼房,立于城中 . 第? ...

  5. kafka删除主题

    hdp集群默认不能删除kafka主题,如果要删除,需要在ambari上进行配置,将enable delete设置为true.

  6. 【2017 Multi-University Training Contest - Team 2】Maximum Sequence

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6047 [Description] 给你一个数列a和一个数列b; 只告诉你a的前n项各是什么; 然后 ...

  7. NYOJ 927 The partial sum problem 【DFS】+【剪枝】

    The partial sum problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 One day,Tom's girlfriend give him a ...

  8. Docker 搭建java+tomcat

    1. 准备java和tomcat的软件包 jdk-7u79-linux-x64.tar.gz apache-tomcat-7.0.57.tar.gz 2. 编辑Dockerfile 文件 vim Do ...

  9. 一个奇怪的Java集合问题

    int size = list.size(); Integer existIndex = -1; for (int index = 0; index < size; index++) { Pho ...

  10. SpringMVC 传递相同名称的参数的最佳方法

    华为云4核8G,高性能云服务器,免费试用 >>>   SpringMVC 多个对象的相同字段参数传递解决方案,在SpringMVC中,有时需要传递多个对象(除了Model和web元素 ...