zoukankan      html  css  js  c++  java
  • redis hash 基本操作

    写在前面的话

      这篇笔记笔者刚正式工作时写的,如有问题,谢谢指出。

    简介

    hash 是一个String类型的filed 和 value 的映射表,hash特别适合用于存储对象,你可以直接对对象中的某个属性进行操作。

    使用场景,比如存储用户信息,商品信息等等。可以类比Java的Map:

    Map<String,Map<String,String>> hash = new HashMap<>();  
     

    优势

    redis中的String类型也可以存储这种结果,但是有两个弊端:

    1.整存整取,如果修改某一个变量,就必须获取整个value,修改某个属性,然后覆盖原值。

    2.序列化/反序列化,如果存储结构化value,需要进行序列化,如果修改,则需要进行反序列化,然后再进行序列化,存储起来。

    基本操作

    # hset key field value 给定的key 设置 键值对 
    hset 1992 name 123

    #hmset key field value ... field value 给定key 设置多组键值对
    hmset 1992 field1 value1 field2 value2

    #hget key field 获取给定Key某一属性值
    hget 1992 field1

    #hmget key field field .. . 获取给定key某些属性的值
    hmget 1992 field1 field2

    #hgetall key 获取给定key所有键值对
    hgetall 1992

    #hlen key 获取给定key 键值对个数
    hlen 1992

    #hkeys key 获取给定key 的所有属性名
    hkeys 1992
    1) "name"
    2) "sex"
    3) "age"
    4) "like"
    5) "field1"
    6) "field2"
    7) "field3"
    8) "field4"
    9) "field6"
    10) "field5"

    #hvals key 给定key 的所有属性的值 (仅是值value部分)
    hvals 1992

    1) "xe6x9cxb1xe5xadx90xe6x99xb4"
    2) "1"
    3) "12"
    4) "eat"
    5) "value1"
    6) "value2"
    7) "value1"
    8) "value2"
    9) "value1"
    10) "value2"

    #hexists key field 判断给定key是否存在某一个field 存在返回1 不存在返回0
    hexists 1992 name
    (integer) 1

    #hincrby key field increment 给定key某个数值型field值进行加操作,增量increment 属性必须是整形,浮点型都不行。
    hincrby 1992 age 1
    #如果feild 不是integer类型 ,则出现: (error) ERR hash value is not an integer

    #hincrbyfloat key field increment 给定的key某个数值型field进行加操作,增量increment,可以对整形,浮点型进行操作。
    hincrbyfloat 1992 age 1.2
     

  • 相关阅读:
    PTA 程序设计题(数据结构第一章)
    (考研)计算机组成原理之计算机系统概论
    C语言复习
    vs2019 scanf 解决 C4996问题
    数据结构之链表
    数据结构之表、栈、队列
    数据结构之算法分析
    数据结构泛型之初接触
    数据结构之递归
    学习参考
  • 原文地址:https://www.cnblogs.com/--net/p/12732034.html
Copyright © 2011-2022 走看看