zoukankan      html  css  js  c++  java
  • 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会分成一组

  • 相关阅读:
    VUE笔记-如何处理vue create demo时候,不能使用上下按键选择?
    帝国CMS之PC端上新栏目后,移动端无法同步,添加内容编辑页打开空白的处理方法
    帝国cms:迁移站点后,配置多端访问显示“访问端目录不存在”
    如何批量删除帝国CMS中同一前缀的数据表?
    宝塔插件"网站监控报表"错误日志显示大量不存在的链接,处理方法及流程
    mysql删除重复数据只保留一条
    VirtualBox 中 discuzq不能添加软链接的处理方法
    mysql8 source 导入大文件时 经常意外中断 且无法再链接断续 解决方法先设置 set names utf8;
    discuzq Virtualbox 虚拟机 在共享文件夹设置软链接 in 报错 Protocol error问题
    是的,奈学教育一周年了!
  • 原文地址:https://www.cnblogs.com/baby123/p/7154426.html
Copyright © 2011-2022 走看看