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---07 js预解析,作用域---闭包

    js解析器首先不会逐行读代码,这是第二部了. 首先 根据var找到变量,根据function找函数,找到变量var a = 1,js解析器只会读取等号前面的var a,并把a设置值未定义,并不会读取等 ...

  2. C#变量的作用域

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 搜寻Linux软件实用指南

    搜寻Linux软件实用指南  对于初学者来说,仅仅安装好Linux系统还是不够的,还需要安装大量的应用软件.许多下载网站都提供了诸如装机必备软件的下载,分门别类提供经典的工具软件下载.本文主要针对初学 ...

  4. Kinect 开发 —— 录音

    不涉及语音识别~~ <Window x:Class="KinectRecordAudio.MainWindow" xmlns="http://schemas.mic ...

  5. gSOAP 使用WebServer心得

    关于正常怎么使用gSOAP的话,下面那篇博客已经讲得非常详细,我就不再赘述了 https://www.cnblogs.com/dengpeng1004/p/6165751.html 问题1: WCF ...

  6. 平衡树之RB-tree

    #include <memory> template<class T> struct rb_node { T key; bool color;//true red | fals ...

  7. 【开卷故意】JAVA正則表達式模版

    专业既然是机器学习.那工作肯定也是继续和数据打交道,那么问题来了,非常多时候推荐算法和数据挖掘算法都是现成可用的,平台初建,重点还在数据过滤和抽取.如何高效的抽取数据? 利用往常算法比赛中经常使用的字 ...

  8. [Java开发之路](16)学习log4j日志

    1. 新建一个Javaproject.导入Jar包(log4j-1.2.17.jar) Jar包下载地址:点击打开链接 2. 配置文件:创建并设置log4j.properties # 设置 log4j ...

  9. 在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色

    今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小 ...

  10. java / C++ B+树代码

    C++ 代码 #include <> JAVA 代码 package org.test.me.struct; /** * author: shuly * create: 2018-09-1 ...