• redis 的hash数据类型


    hash的常用命令

    1.hset

      hset key field value

      将哈希表key中的域field的值设为value

      如果key不存在,一个新的哈希表被创建并进行HSET操作

      如果field是哈希表中的一个新建域,并且值设置成功,返回1

      如果域field已经存在于哈希表中,旧值将被覆盖,返回0

    2.hsetnx

      hsetnx key field value

      将哈希表key中的域field的值设置为value,当且仅当域field不存在。

      如果field已经存在,该操作无效,返回0。

      如果key不存在,一个新哈希表被创建并执行HSETNX命令。

    3.hget

      hget key field

      返回哈希表key中给定域field的值

      如果域field存在,给定域的值,当给定域不存在或是给定key不存在时,返回nil

    4.hmset

      hmset key field value [field value ...]

      同时将多个field - value(域-值)对设置到哈希表key中

      如果命令执行成功,返回OK。当key不是哈希表(hash)类型时,返回一个错误

     5.hmget

      hmget key field [field ...]

      返回哈希表key中,一个或多个给定域的值,顺序和给定域参数的请求顺序一样

    6.hgetall

      hgetall key

      返回哈希表key中,所有的域和值。

      在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍

      若key不存在,返回空列表

    7.hkeys

      hkeys key  

      返回哈希表key中的所有域

      当key不存在时,返回一个空表

    8.hvals

      hvals key

      返回哈希表key中的所有值

      当key不存在时,返回一个空表

    9.hdel

      hdel key [key……]

      删除哈希表key中的一个或多个指定域,不存在的域将被忽略

    10.hlen

      hlen key

      返回哈希表key中域的数量

      当key不存在时,返回0

    php示例

    $redis = new redis();  
    $redis->connect('127.0.0.1', 6609);  
    $redis->delete('hash1');  
    $redis->hset('hash1', 'k1', 'hello');  
    echo $redis->hget('hash1', 'k1');     //结果:hello  
      
    echo "<br>";  
    $redis->hSetNx('hash1', 'k1', 'hello');  
    echo $redis->hget('hash1', 'k1');   //结果:hello  
      
    $redis->delete('hash1');  
    $redis->hSetNx('hash1', 'k1', 'hello');
    $redis->hSetNx('hash1', 'k2', 'world');  
    echo "<br>";  
    echo $redis->hget('hash1', 'k2');   //结果:world  
    echo "<br>";   
    echo $redis->hlen('hash1');   //结果:2  
    echo "<br>"; 
    var_dump($redis->hdel('hash1','k1'));  //结果:bool(true)   

    11.hexists

      hexists key field

      查看哈希表key中,给定域field是否存在

      如果哈希表含有给定域,返回1。如果哈希表不含有给定域,或key不存在,返回0

    12.hincrby

      hincrby key field increment

      为哈希表key中的域field的值加上增量increment。增量也可以为负数,相当于对给定域进行减法操作

      执行完后返回hash表里的filed的值

     

    删除某个key

      del key

    php示例

    $redis->delete('hash1');  
    $redis->hSet('hash1', 'a', '1');  
    $redis->hSet('hash1', 'b', '2');  
    $redis->hSet('hash1', 'c', '3');  
    print_r($redis->hkeys('hash1'));  //结果:Array ( [0] => a [1] => b [2] => c )   
    echo "<br>";   
    print_r($redis->hvals('hash1'));  //结果:Array ( [0] => 1 [1] => 2 [2] => 3 )   
    echo "<br>";   
    print_r($redis->hgetall('hash1'));  //结果:Array ( [a] => x [b] => y [c] => z ) 
    echo "<br>";   
    var_dump($redis->hExists('hash1', 'a'));  //结果:bool(true)
    echo "<br>";    
    echo $redis->hIncrBy('hash1', 'a', 3);    //结果:4  
    echo "<br>"; 
    echo $redis->hIncrBy('hash1', 'a', 1);    //结果:5  
      

    批量添加、查看

    $redis->delete('hash1'); 
    echo "<br>";  
    var_dump($redis->hmset('hash1', array('name' =>'aaa', 'sex'=>"male"))); //结果:bool(true) 
    echo "<br>";  
    print_r($redis->hmget('hash1', array('name', 'sex')));  //结果:Array ( [name] => aaa [sex] => male )  
    
    $redis->delete('hash1');
    $redis->hmset('user:100', array('name' =>'aaa', 'sex'=>"male"));
    $redis->hmset('user:101', array('name' =>'bbb', 'sex'=>"female"));
    $redis->hmset('user:102', array('name' =>'ccc', 'sex'=>"male"));
    echo "<br>";  
    print_r($redis->hmget('user:102', array('name', 'sex')));  //结果:Array ( [name] => ccc [sex] => male ) 

    注:

      一般使用冒号做分割符,比如在php-admin for redis系统里,就是默认以冒号分割,于是user:100 user:101等key会分成一组

  • 相关阅读:
    MOSS的权限控制很好很强大的
    infopath:InfoPath 上传多附件解决思路方法
    http://www.cnblogs.com/ahjxxy/archive/2010/08/09/1796125.html
    MOSS-批量自定义列表项权限
    ABAP中ALV导出excel表格时有个字段总是少一位,请问是什么原因?如何解决?
    SAP ABAP AT NEW 和AT END OF的用法
    ABAP 的message 的创建及使用
    Screen返回选择界面的问题
    SPELL_AMOUNT
    【ABAP内表】关于At first/ At last/ At new /At end of
  • 原文地址:https://www.cnblogs.com/baby123/p/7154426.html
Copyright © 2020-2023  润新知