美文网首页
Redis 使用记录(三)

Redis 使用记录(三)

作者: haoyq | 来源:发表于2018-04-21 08:57 被阅读0次

    Hash(哈希)

    Hash 是一个 String 类型的 field 和value 的映射表。每个 Hash 可以存储 232 - 1 键值对 (40多亿)。

    应用场景

    Hash 适合存储结构化的数据

    例如一个用户的姓名、生日等数据,如果使用 kye-value 存储,就要转换成字符串形式(json 等),存储和修改都会很麻烦,但是 Hash 可以很方便的实现。

    Hash 可以节省内存

    由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。

    可以参考 Redis 利用Hash存储节约内存 这篇文章。

    实例

    <?php
    include 'redis.php';// 前文中连接 Redis 的方法
    
    $redis = getRedis();
    
    $userId = 1;
    $userName = 'kobe';
    $userNumber = 24;
    $userAge = 39;
    $redisKey = 'user_info_' . $userId;
    
    $redis->hSet($redisKey, 'name', $userName);// 设置key中的field值为value
    echo $redis->hGet($redisKey, 'name') . '<br />';// 获取key中field的值 kobe
    $redis->hSetNx($redisKey, 'name', 'Gasol');// field不存在时,才能设置
    echo $redis->hGet($redisKey, 'name') . '<br />';// 获取key中field的值 kobe
    $flag = $redis->hExists($redisKey, 'name');// key中field是否存在
    print_r($flag);// 1
    echo '<br />';
    $redis->hSet($redisKey, 'number', $userNumber);
    $redis->hDel($redisKey, 'number');// 删除key中field
    echo $redis->hGet($redisKey, 'number');// 无数据
    $redis->hMset($redisKey, array('age' => $userAge, 'team' => $userTeam));// 批量存储多个field和value
    print_r($redis->hMGet($redisKey, array('age', 'team')));// 批量获取多个field的值 Array ( [age] => 39 [team] => 湖人队 )
    echo '<br />';
    echo $redis->hLen($redisKey) . '<br />';// 获取key中有多少field 3
    $redis->hSet($redisKey, 'score', 2);// 设置value为数值
    echo $redis->hGet($redisKey, 'score') . '<br />';// 2
    $redis->hIncrBy($redisKey, 'score', 3);// 为数值增量
    echo $redis->hGet($redisKey, 'score') . '<br />';// 5
    print_r($redis->hGetAll($redisKey));// 获取key中的所有field和value Array ( [name] => kobe [age] => 39 [team] => 湖人队 [score] => 5 )
    echo '<br />';
    print_r($redis->hKeys($redisKey));// 获取key中的所有field Array ( [0] => name [1] => age [2] => team [3] => score )
    echo '<br />';
    print_r($redis->hVals($redisKey));// 获取key中的所有value Array ( [0] => kobe [1] => 39 [2] => 湖人队 [3] => 5 )
    echo '<br />';
    
    

    参考资料:菜鸟教程

    相关文章

      网友评论

          本文标题:Redis 使用记录(三)

          本文链接:https://www.haomeiwen.com/subject/fwqekftx.html