zoukankan      html  css  js  c++  java
  • Redis:存储Hash(基本概念、命令)

    1、Hash类型

    (1)概念

    将一个对象类型存储在Hash类型要比存储在Stringt类型占用更少的内存空间(相比于JSON,json是以字符串的形式存储的),可以实现对整个对象的存取。因此,hash更适合存储对象

    对象以字符串的形式存储会增加序列化与反序列化的开销,对对象的值进行修改的时候需要对并发进行控制,会降低程序的效率,而redis没有这些缺陷。但是,当redis的多个属性以键值对的形式存储的时候,hash的名字是重复存储的,会造成内存的浪费

    student:1 name zhai
    student:1 age 12

    而以字符串的形式存储就不存在重复存储的现象,一个对象只存储一个名称即可

    student{
    "name":"zhai",
    "age":"12"
    }

    (2)结构

    (3)应用

     2、命令

    (1)单个存取

    方式一:此种方式不利于管理

    127.0.0.1:6379> hset myhash zhai 1997
    (integer) 1
    127.0.0.1:6379> hset myhash zhang 123
    (integer) 1

     所有的数据都存储在一起,不方便查看

    方式二:

    127.0.0.1:6379> hset student:1 name zhai
    (integer) 1
    127.0.0.1:6379> hset student:2 name zhang
    (integer) 1

     此种方式结构更清晰,利于对数据的管理

    127.0.0.1:6379> hget student:1 name
    "zhai"
    127.0.0.1:6379> hget student:2 name
    "zhang"

    (2)存取多个数据

    方式一:

    一次存储多个,单个取出

     一次取出多个·:

    方式二:

    127.0.0.1:6379> hmset student:3 name tom age 12
    OK
    127.0.0.1:6379> hget student:3 name
    "tom"
    127.0.0.1:6379> hmget student:3 name age
    1) "tom"
    2) "12"

     (3)取出所有的数据

    127.0.0.1:6379> hgetall student:3
    1) "name"
    2) "tom"
    3) "age"
    4) "12"

    (4)删除

    删除单个键值对

    127.0.0.1:6379> hgetall student:3
    1) "name"
    2) "tom"
    3) "age"
    4) "12"
    127.0.0.1:6379> hdel student:3 age
    (integer) 1
    127.0.0.1:6379> hgetall student:3
    1) "name"
    2) "tom"

    删除所有键值对

    127.0.0.1:6379> keys *
    1) "student:3"
    2) "student:1"
    3) "student:2"
    4) "myhash"
    127.0.0.1:6379> del myhash
    (integer) 1
    127.0.0.1:6379> keys *
    1) "student:3"
    2) "student:1"
    3) "student:2"

    (5)字段的数量

    127.0.0.1:6379> hmset student:4 name lll age 12
    OK
    127.0.0.1:6379> hlen student:4
    (integer) 2

     (6)增加字段

    127.0.0.1:6379> hmset student:4 name lll age 12
    OK
    127.0.0.1:6379> hlen student:4
    (integer) 2
    127.0.0.1:6379> hset student:4 score 123
    (integer) 1
    127.0.0.1:6379> hgetall student:4
    1) "name"
    2) "lll"
    3) "age"
    4) "12"
    5) "score"
    6) "123"

    (7)减小数值

     (8)判定指定的键是否存在:返回1代表有,0没有。

     (9)获取所有的键:

     (10)获取所有的键对应的值:

  • 相关阅读:
    js 函数声明和函数表达式的区别
    使用dom4j工具包对xml文件解析
    xml的schema约束
    xml的DTD约束
    C3P0连接池工具类使用
    jdbc连接警告不安全
    java的unity单元测试
    BootStrap容器介绍
    validate插件实现表单效验(二)
    validate插件实现表单效验(一)
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11730420.html
Copyright © 2011-2022 走看看