美文网首页
php redis string

php redis string

作者: 周pan | 来源:发表于2019-07-22 15:32 被阅读0次
    设置值
    // set key value
    $k10 = "imei:string:set10";
    $redis->set($k10, 10);// retrun true
    
    // setex seconds value
    $k11 = "imei:string:set11";
    $redis->setex($k11, 10, 1000);// retrun true
    
    // setnx 键必须不存在才能设置成功 => 用于添加
    // setnx key value
    $k12 = "imei:string:set12";
    $redis->setnx($k12, 1000);// retrun 1
    $redis->setnx($k12, 1000);// retrun 0
    
    // expire key seconds
    $redis->expire($k10, 10);// retrun 1
    $redis->expire($k12, 10);// retrun 1
    
    获取值
    // 2 get
    // get key
    $k20 = "imei:string:20";
    $redis->del($k20);
    $redis->set($k20, 'v20');         // retrun true
    var_dump($redis->get($k20));      // string(3) "v20"
    
    批量设置获取值
    // 3 mset mget
    // mset key val [key1 val1 key2 val2]
    // mget key [key1 key2 ]
    $k30 = 'imei:string:30';
    $k31 = 'imei:string:31';
    $k32 = 'imei:string:32';
    $k33 = 'imei:string:33';
    $redis->del($k30);
    $redis->del($k31);
    $redis->del($k32);
    $redis->del($k33);
    $redis->mset($k30, 'v30', $k31, 'v31', $k32, 'v32', $k33, 'v33');
    print_r($redis->mget($k30, $k31, $k32, $k33));// [ v30, v31 , v32 , v33 ]
    

    单个键管理

    1.重命名
    // 1 rename
    // rename key newkey
    $k20 = "imei:string:20";
    $k21 = "imei:string:21";
    $k23 = "imei:string:23";
    $k24 = "imei:string:24";
    $redis->del($k20);
    $redis->del($k21);
    $redis->set($k20, 'v20');
    $redis->set($k21, 'v21');
    var_dump($redis->get($k20));      // string(3) "v20"
    var_dump($redis->get($k21));      // string(3) "v21"
    var_dump($redis->rename($k20, $k21));      // bool(true)
    var_dump($redis->get($k20));      // NULL
    var_dump($redis->get($k21));      // string(3) "v20"
    // rename操作会删除原来的key => $k20 如果键对应的值较大,会有阻塞Redis可能性
    // rename操作会覆盖newkey => $k21
    
    echo '<hr>';
    
    // renamenx : 防止被强行rename,确保只有newkey不存在的时候才被覆盖
    $redis->set($k23, 'v23');
    $redis->set($k24, 'v24');
    var_dump($redis->get($k23));      // string(3) "v23"
    var_dump($redis->get($k24));      // string(3) "v24"
    var_dump($redis->renamenx($k23, $k24));      // string(1) "0"
    var_dump($redis->get($k23));      // string(3) "v23"
    var_dump($redis->get($k24));      // string(3) "v24"
    

    2.随机返回一个键

    // randomkey
    var_dump($redis->randomkey());      // string(14) "imei:set:test2"
    var_dump($redis->randomkey());      // string(14) "imei:string:32"
    

    3 键过期

    // expire : expire key seconds 键在seconds秒后过期
    // ttl : ttl key 查询键的过期时间
    // pttl :  pttl key 查询键的过期时间(毫秒级)
    // expireat : expireat key timestamp 键在秒级时间戳 timestamp 后过期
    // pexpire  :
    // pexpireat  :
    // persist  :
    $k20 = "imei:string:20";
    $k21 = "imei:string:21";
    $k22 = "imei:string:22";
    $k23 = "imei:string:23";
    $k24 = "imei:string:24";
    $redis->del($k20);
    $redis->del($k21);
    $redis->del($k22);
    $redis->del($k23);
    $redis->del($k24);
    $redis->set($k20, 'v20');
    $redis->set($k21, 'v21');
    
    var_dump($redis->expire($k20, 100));      // string(1) "1"
    var_dump($redis->ttl($k20));        // string(3) "100"
    
    var_dump($redis->expireat($k21, time() + 100));      // string(1) "1"
    var_dump($redis->ttl($k21));      // string(2) "99"
    
    // ttl pttl 返回值说明
    // 大于等于0的整数,键的过期时间
    // -1,键没有设置过期时间
    // -2,键不存在
    
    echo '<hr>';
    
    $redis->set($k22, 'v22');
    $redis->set($k23, 'v23');
    $redis->set($k24, 'v24');
    
    // 注意:
    // 1) expire key 的键不存在返回0
    var_dump($redis->expire($k22, 100));      // string(1) "0"
    
    // 2) 如果过期时间为负值,键会立即被删除,犹如使用del一样
    $redis->expire($k23, -2);
    var_dump($redis->get($k23));//null
    
    // 3) persist 可以将键的过期时间清除
    $redis->persist($k22);
    var_dump($redis->ttl($k22));      // -1
    
    // 4) 对于string类型的键,执行set会去掉过期时间
    $redis->expire($k24, 100);
    var_dump($redis->ttl($k24));      // 100
    $redis->set($k24, 'v24 again');
    var_dump($redis->ttl($k24));      // -1
    
    // 5) redis 不支持二级数据结构(hash、list)内部元素的过期功能,例如不能给列表内的一个元素设置过期时间
    
    // 6) setex 命令 作为 set+expire的组合,不但是原子执行,同事还减少一次网络通讯时间
    
    

    相关文章

      网友评论

          本文标题:php redis string

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