Redis-hash基本使用

 

 

$hkey = "user:id:888";
$field = "username";
$value = "zhangsan";

  • $ret = $redis->hset($hkey,$field,$value);//设置hash字段值,第一次设置其field,返回1,如果其field已存在,则会覆盖其value,同时返回0

$field = "username1"; 

  • $ret = $redis->hsetnx($hkey,$field,$value); //设置hash字段值,只有其field不存在才有效.
$hkey = "user:id:666";
$arr = [
'username'=>'lx',
'age'=>100,
'gender'=>2,
'height'=>188,
'weight'=>250
];
 $ret =  $redis->hmset($hkey,$arr);//批量设置
 $ret = $redis->hget($hkey,$field);//获取hash字段值,
 $ret = $redis->hmget($hkey,['username','age']);//批量获取值 array
 $ret = $redis->hgetall($hkey);//从hash中读取全部的域和值 array
 $ret = $redis->hdel($hkey,'username','age');//删除一个或多个hash的field
 $ret = $redis->hlen($hkey);//返回其key的个数
 $ret = $redis->hkeys($hkey);//返回key的field名称 array
 $ret = $redis->hvals($hkey);//返回key的field的值 array
 $ret = $redis->hstrlen($hkey,$field);//获取hash里面指定field的长度

 $field = "salary";

$increment = 100.22;

 $ret =  $redis->hincrby($hkey,$field,$increment);//给hash中指定的field增加给定的数字
 $ret = $redis->hincrbyfloat($hkey,$field,$increment);//给hash中指定的field增加指定的浮点数
 $ret = $redis->hexists($hkey,$field);//判断field是否存在于hash中, 存在返回true , 不存在返回false
 
  $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
               }
         }

   


    }
}

 


 

 

 

posted @ 2022-03-28 18:02  X__cicada  阅读(196)  评论(0编辑  收藏  举报