thinkphp5操作hash散列

243 阅读1分钟

本文已参与新人创作礼活动,一起开启掘金创作指路。

**

thinkphp5操作hash散列

**redis 五大类型之一hash散列 基本命令:

hset 设置key=》val值

hget 获得指定key值 hgetall 获得散列所有key和val

hdel 移除建值

hmget 获取一个或回个建的值

hmset 设置一个或多个键和值

hlen 查询散列键值对个数

hexists 检查key是否在散列中

hkeys 获得散列包含的所有key

hvals 获得散列包含的所有val

hincrby 讲key存储的值加上increment

hincrbyfloat 将key存储的值加上浮点数increment

服务端redis扩展

 /*
 * hset设置值
 */
public function hSet($name,$key,$val)
{
    return $this->handler->hset($name,$key,$val);
}

/*
 * hget获得值
 */
public function hGet($name,$key)
{
    return $this->handler->hget($name,$key);
}

/*
 * hgetall 获得全部键值对
 */
public function hGetAll($name)
{
    return $this->handler->hgetall($name);
}

/*
 * hdel 删除key值
 */
public function hDel($name,$key)
{
    $num = 0;
    if(is_array($key)){
        foreach ($key as $row){
            $num+= $this->handler->hdel($name,$row);
        }
        return $num;
    }else{
        return $this->handler->hdel($name,$key);
    }
}


/*
 * hlen 查询键值对个数
 */
public function hLen($name)
{
    return $this->handler->hlen($name);
}
/*
 * hexists 查询建值是否在散列中
 */
public function hExists($name,$key)
{
    return $this->handler->hexists($name,$key);
}
/*
 * hkeys 获得所有建值
 */
public function hKeys($name)
{
    return $this->handler->hkeys($name);
}
/*
 * hvals 获得所有val
 */
public function hVals($name)
{
    return $this->handler->hvals($name);
}
/*
 * hincrby 讲key值加上整数
 */
public function hIncRby($name,$key,$count)
{
    if(is_numeric($count)){
        return $this->handler->hincrby($name,$key,$count);
    }else{
        return '数值错误';
    }

}
/*
 * hincrbyfloat 将key值加上浮点数
 */
public function hIncRbyFloat($name,$key,$count){
    if(is_numeric($count)){
        return $this->handler->hincrbyfloat($name,$key,$count);
    }else{
        return '数值错误';
    }
}

1.hset ,hget 客户端请求

 public function redis()
{
    $redis= new Redis();
    $redis->hset('demo','v1','11');
    $redis->hset('demo','v2','22');
    echo $redis->hget('demo','v1');
}

结果:

11

2.hgetall,hdel 客户端请求

 public function redis()
{
    $redis= new Redis();
    dump($redis->hgetall('demo'));
    $redis->hdel('demo','v1');
    dump($redis->hgetall('demo'));
}

结果

array(2) {
  ["v1"] => string(2) "11"
  ["v2"] => string(2) "22"
}
array(1) {
  ["v2"] => string(2) "22"
}

3.hmget ,hmset 客户端请求

public function redis()
{
    $redis= new Redis();
    $redis->handler()->hmset('demo',array('pats' => 'dog', 'fruit' => 'cherry', 'job' => 'programmer'));
    dump($redis->handler()->hmget('demo',array('pats','fruit','job')));
}

结果:

array(3) {
  ["pats"] => string(3) "dog"
  ["fruit"] => string(6) "cherry"
  ["job"] => string(10) "programmer"
}

4.hlen ,hexists ,hkeys ,hvals 客户端请求

 public function redis()
{
    $redis= new Redis();
    echo $redis->hExists('demo','pats');
    echo ' 总个数为:' . $redis->hLen('demo');
    dump($redis->hkeys('demo'));
    dump($redis->hVals('demo'));


}

结果

1 
总个数为:6
array(6) {
  [0] => string(1) "0"
  [1] => string(1) "1"
  [2] => string(4) "pats"
  [3] => string(5) "fruit"
  [4] => string(3) "job"
  [5] => string(1) "2"
}
array(6) {
  [0] => string(4) "pats"
  [1] => string(5) "fruit"
  [2] => string(3) "dog"
  [3] => string(6) "cherry"
  [4] => string(10) "programmer"
  [5] => string(3) "job"
}

5.hincrby , hincrbyfloat 客户端请求

	public function redis()
{
    $redis= new Redis();
    $redis->hset('demo','v1','10');
    echo $redis->hget('demo','v1');
    $redis->hIncRby('demo','v1','7');
    echo $redis->hget('demo','v1');
    $redis->hIncRbyFloat('demo','v1','0.7');
    echo $redis->hget('demo','v1');
    
}

结果

10
17
17.7