Redis-hash基本使用

 

$hkey = "user:id:888";
$field = "username";
$value = "zhangsan";
 $ret =  $redis->hset($hkey,$field,$value);
//設置hash字段值,第一次設置其field,返回1,如果其field已存在,則會覆蓋其value,同時返回0
dump($ret);//返回1 此時field的值是zhangsan
$value = "lisi";

$ret = $redis->hset($hkey,$field,$value);//返回0,

dump($ret);//返回0 最終field的值是lisi

 $field = "username1"; 

 $ret = $redis->hsetnx($hkey,$field,$value);

 //設置hash字段值,只有其field不存在纔有效.

dump($ret);//返回true,此時field的值是lisi

 

$value = "wangwu";
$ret = $redis->hsetnx($hkey,$field,$value);
dump($ret);//返回false,並且其field值還是lisi;

//多設置幾個練習
$hkey = "user:id:123";
$field = "username";
$value = "wemz";
$redis->hsetnx($hkey,$field,$value);
$field = "age";
$value = 18;
$redis->hsetnx($hkey,$field,$value);
$field = "gender";
$value = 1;
$redis->hsetnx($hkey,$field,$value);
$hkey = "user:id:666";
$arr = [
'username'=>'lx',
'age'=>100,
'gender'=>2,
'height'=>188,
'weight'=>250
];
$ret =  $redis->hmset($hkey,$arr);//批量設置
dump($ret);

  $field = "username";

 $ret = $redis->hget($hkey,$field);//獲取hash字段值,

 dump($ret);//返回string

 $ret = $redis->hmget($hkey,['username','age']);//批量獲取值 array

 dump($ret);

 $ret = $redis->hgetall($hkey);//從hash中讀取全部的域和值 array

 dump($ret);

$ret = $redis->hdel($hkey,'username','age');//刪除一個或多個hash的field
dump($ret);
 $ret = $redis->hlen($hkey);//返回其key的個數
 dump($ret);
 $ret = $redis->hkeys($hkey);//返回key的field名稱 array
dump($ret);
 $ret = $redis->hvals($hkey);//返回key的field的值 array
dump($ret);
 $ret = $redis->hstrlen($hkey,$field);//獲取hash裏面指定field的長度

 dump($ret);

$field = "salary";

$increment = 100.22;

 $ret =  $redis->hincrby($hkey,$field,$increment);//給hash中指定的field增加給定的數字
dump($ret);
 $ret = $redis->hincrbyfloat($hkey,$field,$increment);//給hash中指定的field增加指定的浮點數
 dump($ret);
$field = "sdad";
 $ret = $redis->hexists($hkey,$field);//判斷field是否存在於hash中, 存在返回true , 不存在返回false
dump($ret);
dump('----');
  $redis->setOption(\Redis::OPT_SCAN,\Redis::SCAN_RETRY);
  $it = null;
  $match = "user:id:*";
  $count = 3;

  while ($array = call_user_func_array([$redis,'scan'],[&$it,$match,$count]) ){

        foreach ($array as $value){
            dump($value);//返回所有keys
        }
  }

 

 

 

 

 

 

 

 

 

 


 

<?php

namespace app\home\controller;

use app\BaseController;
use app\common\lib\RedisObj;
use Carbon\Carbon;
use think\cache\driver\Redis;

class Index extends BaseController
{

    public function index()
    {
        $option = [
            'host' => '',
            'port' => 6379,
            'password' => '',
            'select' => 15,
        ];
        $redis = new Redis($option);
        $hkey = "user:id:888";
        $field = "username";
        $value = "zhangsan";
        $ret =  $redis->hset($hkey,$field,$value);//設置hash字段值,第一次設置其field,返回1,如果其field已存在,則會覆蓋其value,同時返回0
        dump($ret);//返回1 此時field的值是zhangsan
        $value = "lisi";
        $ret =  $redis->hset($hkey,$field,$value);//返回0,
        dump($ret);//返回0 最終field的值是lisi
        $field = "username1";
        $ret = $redis->hsetnx($hkey,$field,$value);//設置hash字段值,只有其field不存在纔有效.
        dump($ret);//返回true,此時field的值是lisi
        $value = "wangwu";
        $ret = $redis->hsetnx($hkey,$field,$value);
        dump($ret);//返回false,並且其field值還是lisi;
        //多設置幾個練習
        $hkey = "user:id:123";
        $field = "username";
        $value = "wemz";
        $redis->hsetnx($hkey,$field,$value);
        $field = "age";
        $value = 18;
        $redis->hsetnx($hkey,$field,$value);
        $field = "gender";
        $value = 1;
        $redis->hsetnx($hkey,$field,$value);
        $hkey = "user:id:666";
        $arr = [
          'username'=>'lx',
          'age'=>100,
          'gender'=>2,
          'height'=>188,
          'weight'=>250
        ];
        $ret =  $redis->hmset($hkey,$arr);//批量設置
        dump($ret);

        $field = "username";
        $ret = $redis->hget($hkey,$field);//獲取hash字段值,
        dump($ret);//返回string

        $ret = $redis->hmget($hkey,['username','age']);//批量獲取值 array
        dump($ret);

        $ret = $redis->hgetall($hkey);//從hash中讀取全部的域和值 array
        dump($ret);

       $ret = $redis->hdel($hkey,'username','age');//刪除一個或多個hash的field
       dump($ret);

        $ret = $redis->hlen($hkey);//返回其key的個數
        dump($ret);

        $ret = $redis->hkeys($hkey);//返回key的field名稱 array
        dump($ret);

        $ret = $redis->hvals($hkey);//返回key的field的值 array
        dump($ret);

        $ret = $redis->hstrlen($hkey,$field);//獲取hash裏面指定field的長度
        dump($ret);
        $field = "salary";
        $increment = 100.22;
        $ret =  $redis->hincrby($hkey,$field,$increment);//給hash中指定的field增加給定的數字
        dump($ret);
        $ret = $redis->hincrbyfloat($hkey,$field,$increment);//給hash中指定的field增加指定的浮點數
        dump($ret);
        $field = "sdad";
        $ret = $redis->hexists($hkey,$field);//判斷field是否存在於hash中, 存在返回true , 不存在返回false
        dump($ret);
        dump('----');
         $redis->setOption(\Redis::OPT_SCAN,\Redis::SCAN_RETRY);
         $it = null;
         $match = "user:id:*";
         $count = 3;

         while ($array = call_user_func_array([$redis,'scan'],[&$it,$match,$count]) ){

               foreach ($array as $value){
                   dump($value);//返回所有keys
               }
         }

   


    }
}

 


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章