2021-10-07

几个方法名称  很容易搞混

 

【1】redis 的连接

 //实例化redis
$redis = new Redis();
//连接
 $redis->connect('127.0.0.1', 6379);
//检测是否连接成功
echo "Server is running: " . $redis->ping();
// 输出结果 Server is running: +PONG 

 

【2】redis 操作 String (字符串)

 // 设置一个字符串的值
$redis->set('cat', 111);

//获取一个字符串的值
echo $redis->get('cat'); // 111

// 重复set
$redis->set('cat', 222);
echo $redis->get('cat'); // 222

 

【3】redis 操作 List (列表)

   //存储数据到列表中
$redis->lpush('list', 'html');
$redis->lpush('list', 'css');
$redis->lpush('list', 'php');

//获取列表中所有的值
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>'; 
// Array ( [0] => php [1] => css [2] => html )

//从右侧加入一个
$redis->rpush('list', 'mysql');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
// Array ( [0] => php [1] => css [2] => html [3] => mysql )

//从左侧弹出一个
$redis->lpop('list');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
// Array ( [0] => css [1] => html [2] => mysql )

//从右侧弹出一个
$redis->rpop('list');
$list = $redis->lrange('list', 0, -1);
print_r($list);echo '<br>';
// Array ( [0] => css [1] => html )

 

【4】redis 操作 Hash (字典)

 

//实例化redis
$redis = new Redis();
//连接
$redis->connect('127.0.0.1', 6379);
//字典
//给hash表中某个key设置value
//如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0
echo $redis->hset('hash', 'cat', 'cat');echo '<br>';   // 1
echo $redis->hset('hash', 'cat', 'cat');echo '<br>';   // 0
echo $redis->hset('hash', 'cat', 'cat1');echo '<br>';   // 0
echo $redis->hset('hash', 'dog', 'dog');echo '<br>';   // 1
echo $redis->hset('hash', 'bird', 'bird');echo '<br>';   // 1
echo $redis->hset('hash', 'monkey', 'monkey');echo '<br>';   // 1
//获取hash中某个key的值
echo $redis->hget('hash', 'cat');echo '<br>';  // cat1

//获取hash中所有的keys
$arr = $redis->hkeys('hash');
print_r($arr);echo '<br>';
// Array ( [0] => cat [1] => dog [2] => bird [3] => monkey )

//获取hash中所有的值 顺序是随机的
$arr = $redis->hvals('hash');
print_r($arr);echo '<br>';
 // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey )

//获取一个hash中所有的key和value 顺序是随机的
$arr = $redis->hgetall('hash');
print_r($arr);echo '<br>';
 // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey )

//获取hash中key的数量
echo $redis->hlen('hash');echo '<br>';
 // 4

//删除hash中一个key 如果表不存在或key不存在则返回false
echo $redis->hdel('hash', 'dog');echo '<br>';
var_dump($redis->hdel('hash', 'rabbit'));echo '<br>';
// 1
// int(0)

 

【5】redis 操作 Set (集合)

//实例化redis
$redis = new Redis();
//连接
$redis->connect('127.0.0.1', 6379);
//集合
// 添加一个元素
echo $redis->sadd('set', 'cat');echo '<br>';         // 1
echo $redis->sadd('set', 'cat');echo '<br>';         // 0
echo $redis->sadd('set', 'dog');echo '<br>';        // 1
echo $redis->sadd('set', 'rabbit');echo '<br>';     // 1
echo $redis->sadd('set', 'bear');echo '<br>';      // 1
echo $redis->sadd('set', 'horse');echo '<br>';    // 1

// 查看集合中所有的元素
$set = $redis->smembers('set');
print_r($set);echo '<br>';
// Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse )

//删除集合中的value
echo $redis->srem('set', 'cat');echo '<br>';    // 1
var_dump($redis->srem('set', 'bird'));echo '<br>';     // int(0)

$set = $redis->smembers('set');
print_r($set);echo '<br>';
// Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear )

//判断元素是否是set的成员
var_dump($redis->sismember('set', 'dog'));echo '<br>';     // bool(true)
var_dump($redis->sismember('set', 'bird'));echo '<br>';    // bool(false)

//查看集合中成员的数量
echo $redis->scard('set');echo '<br>';    // 4

//移除并返回集合中的一个随机元素(返回被移除的元素)
echo $redis->spop('set');echo '<br>';  // bear

print_r($redis->smembers('set'));echo '<br>';   
 // Array ( [0] => dog [1] => rabbit [2] => horse )


 

//实例化redis
$redis = new Redis();
//连接
$redis->connect('127.0.0.1', 6379);
//集合
$redis->sadd('set', 'horse');
$redis->sadd('set', 'cat');
$redis->sadd('set', 'dog');
$redis->sadd('set', 'bird');
$redis->sadd('set2', 'fish');
$redis->sadd('set2', 'dog');
$redis->sadd('set2', 'bird');

print_r($redis->smembers('set'));echo '<br>';
 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse )
print_r($redis->smembers('set2'));echo '<br>';
// Array ( [0] => bird [1] => dog [2] => fish )

//返回集合的交集
print_r($redis->sinter('set', 'set2'));echo '<br>';
// Array ( [0] => dog [1] => bird )

//执行交集操作 并结果放到一个集合中
$redis->sinterstore('output', 'set', 'set2');
print_r($redis->smembers('output'));echo '<br>';
// Array ( [0] => dog [1] => bird )

//返回集合的并集
print_r($redis->sunion('set', 'set2'));echo '<br>';
// Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )

//执行并集操作 并结果放到一个集合中
$redis->sunionstore('output', 'set', 'set2');
print_r($redis->smembers('output'));echo '<br>';
 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish )

//返回集合的差集
print_r($redis->sdiff('set', 'set2'));echo '<br>';
// Array ( [0] => horse [1] => cat )

//执行差集操作 并结果放到一个集合中
$redis->sdiffstore('output', 'set', 'set2');
print_r($redis->smembers('output'));echo '<br>';
// Array ( [0] => horse [1] => cat )

 

【6】redis 操作 Sorted Set (有序集合)

 

//实例化redis
$redis = new Redis();
//连接
$redis->connect('127.0.0.1', 6379);
//有序集合
//添加元素 分数
echo $redis->zadd('set', 1, 'cat');echo '<br>';      // 1
echo $redis->zadd('set', 2, 'dog');echo '<br>';    // 1
echo $redis->zadd('set', 3, 'fish');echo '<br>';    // 1
echo $redis->zadd('set', 4, 'dog');echo '<br>';    // 0
echo $redis->zadd('set', 4, 'bird');echo '<br>';    // 1

//返回集合中的所有元素
print_r($redis->zrange('set', 0, -1));echo '<br>';
// Array ( [0] => cat [1] => fish [2] => bird [3] => dog )

print_r($redis->zrange('set', 0, -1, true));echo '<br>';
// Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 )

//返回元素的score值
echo $redis->zscore('set', 'dog');echo '<br>';
// 4

//返回存储的个数
echo $redis->zcard('set');echo '<br>';
// 4

//删除指定成员
$redis->zrem('set', 'cat');
print_r($redis->zrange('set', 0, -1));echo '<br>';
// Array ( [0] => fish [1] => bird [2] => dog )

//返回集合中介于min和max之间的值的个数
print_r($redis->zcount('set', 3, 5));echo '<br>';
// 3

//返回有序集合中score介于min和max之间的值
print_r($redis->zrangebyscore('set', 3, 5));echo '<br>';
 // Array ( [0] => fish [1] => bird [2] => dog )
print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>';
 // Array ( [fish] => 3 [bird] => 4 [dog] => 4 )

//返回集合中指定区间内所有的值 倒叙
print_r($redis->zrevrange('set', 1, 2));echo '<br>';
 // Array ( [0] => bird [1] => fish )
print_r($redis->zrevrange('set', 1, 2, true));echo '<br>';
// Array ( [bird] => 4 [fish] => 3 )

//有序集合中指定值的socre增加
echo $redis->zscore('set', 'dog');echo '<br>';
 // 4
$redis->zincrby('set', 2, 'dog');
echo $redis->zscore('set', 'dog');echo '<br>';
// 6

//移除score值介于min和max之间的元素
print_r($redis->zrange('set', 0, -1, true));echo '<br>';
// Array ( [fish] => 3 [bird] => 4 [dog] => 6 )
print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>';
 // 2
print_r($redis->zrange('set', 0, -1, true));echo '<br>';
 // Array ( [dog] => 6 )
//结果

 

 

 

1、DEL 删除一个 key

$redis = new redis();
$redis->connect('127.0.0.1',6379);
// The first case 删除单独的 key
$redis->set('w3ckey','redis');
var_dump($redis->get('w3ckey'));     // 返回 redis
$redis ->del('w3ckey');              // 删除该key,若需要获取返回值,则返回值为 int(1)
var_dump($redis->get('w3ckey'));     // 返回 boolean(false)

// The second case 删除一个不存在的 key
if(!$redis->exists('fake_key'))
{
    var_dump($redis->del('fake_key'));   // 返回 int();
}

// The third case 同时删除多个 key
$array_mset = array(
  'key1' => 'val1',
  'key2' => 'val2',
  'key3' => 'val3',
);
$redis->mset($array_mset);           // 使用 mset 同时存储多个值
$array_mget = array('key1', 'key2', 'key3');
var_dump($redis->mget($array_mget)); // 返回 array (size=3)0 => string 'val1' (length=4) 1 => string 'val2' (length=4) 2 => string 'val3' (length=4)
$redis -> del($array_mget);          // 同时删除多个值
var_dump($redis->mget($array_mget)); // 返回 array (size=3) 0 => boolean false 1 => boolean false 2 => boolean false

 

2、EXISTS 判断某个KEY是否存在

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->set('w3ckey','redis');
var_dump($redis->exists('w3ckey'));   // boolean true
$redis ->del('w3ckey');
var_dump($redis->exists('w3ckey'));   // boolean(false)

 

3、EXPIRE 设置某个KEY的 有效时间

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->set('w3ckey','redis');
$redis->expire('w3ckey',20);      // 设置 w3ckey 的剩余生存时间为 20s
sleep(2);
var_dump($redis->TTL('w3ckey'));  // 查看给定 key 的剩余生存时间,int 18
$redis->expire('w3ckey',30);      // 更新 w3ckey 的剩余生存时间为 30s
sleep(3);
var_dump($redis->TTL('w3ckey'));  // int 27

 

4、EXPIREAT 设置某个KEY的剩余过期时间

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->set('w3ckey','redis');
$redis->expireAt('w3ckey',time()+10);      // 设置 w3ckey 的剩余生存时间为 10s 后过期
sleep(3);
var_dump($redis->TTL('w3ckey'));           // 查看给定 key 的剩余生存时间,int 7

 

5、KEYS 批量获取 / 匹配获取 一些key

 

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();
$array_mset_keys = array(
    'one' => 1,
    'two' => 2,
    'three' => 3,
    'four' => 4,
);
$redis -> mset($array_mset_keys);
// KEYS * 命中数据库中所有key。
var_dump($redis -> keys('*'));    // array (size=4) 0 => string 'four' (length=4) 1 => string 'two' (length=3) 2 => string 'three' (length=5) 3 => string 'one' (length=3)

// KEYS *o* 命中所有包含 "o" 的key。
var_dump($redis -> keys('*o*'));  // array (size=4) 0 => string 'four' (length=4) 1 => string 'two' (length=3) 2 => string 'one' (length=3)

// KEYS 0?? 命中 "o" 后面有几个问号就命中几位数。
var_dump($redis->keys("o??"));    //array (size=1) 0 => string 'one' (length=3)

// KEYS t[wh]* 命中 "t" 后面跟了 "w" , "h" 或者 "wh" 的key。
var_dump($redis->keys("t[wh]*")); //array (size=2) 0 => string 'two' (length=3) 1 => string 'three' (length=5)

 

6、MOVE 移动一个KEY

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();

// This first case: key 存在于当前数据库
$redis -> select(0);                            // redis 默认使用数据库0,这里在显示指定一次
$redis -> set('favorite_fruit','pineapple');    // 确保 key 值存在
if($redis -> move('favorite_fruit',1)){         // 将 favorite_fruit 移动到数据库 1 中, int 1
    $redis -> select(1);                        // 选择数据库 1
    var_dump($redis -> get('favorite_fruit'));  // string pineapple
}

// This second case: key 不存在
$redis -> select(0);
if(! $redis->exists('fake_key')){               // key 不存在
    $redis -> move('fake_key',1);               // 将 favorite_fruit 移动到数据库 1 中, int 0
}
$redis -> select(1);
var_dump($redis->exists('fake_key'));           // boolean (false)

// This third case: 源数据库和目标数据库有相同的 key
$redis -> select(0);
$redis -> set('favorite_singer','Jay Chou');    // db0 和 db1 有相同的 key : favorite_singer
$redis -> select(1);
$redis -> set('favorite_singer','Xu Wei');
$redis -> select(0);
$redis -> move('favorite_singer',1);            // 将 favorite_fruit 移动到数据库 1 中, int 0
echo $redis -> get('favorite_singer');          // db0 的值没有发生改变,string Jay Chou
$redis -> select(1);
echo $redis -> get('favorite_singer');          // db1 的值没有发生改变,string Xu Wei

 

7、PERSIST   取消过期时间

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();

// This first case: key 存在且设置了过期时间
$redis -> set('favorite_fruit','pineapple');
$redis -> expire('favorite_fruit',20);
sleep(2);
echo $redis -> ttl('favorite_fruit')."</br>";    // 18
$redis -> persist('favorite_fruit');             // 移除过期时间
echo $redis -> ttl('favorite_fruit');            // -1 ,表示成功移除过期时间

// This second case: key 不存在
$redis -> select(0);
if(! $redis->exists('fake_key')){               // key 不存在
    var_dump($redis -> persist('fake_key'));    // boolean false
}

// This third case: key 存在但是没有设置过期时间
$redis -> select(0);
$redis -> set('favorite_singer','Jay Chou');
var_dump($redis -> persist('favorite_singer'));  // boolean false

8、TTL 查看给定 key 的剩余生存时间

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();

// This first case: key 存在且设置了过期时间
$redis -> set('favorite_fruit','pineapple');
$redis -> expire('favorite_fruit',20);
sleep(2);
echo $redis -> ttl('favorite_fruit')."</br>";    // 18

// This second case: key 不存在
$redis -> select(0);
if(! $redis->exists('fake_key')){               // key 不存在
    var_dump($redis -> ttl('fake_key'));        // int -2
}

// This third case: key 存在但是没有设置过期时间
$redis -> select(0);
$redis -> set('favorite_singer','Jay Chou');
var_dump($redis -> ttl('favorite_singer'));     // int -1

 

9、RENAME 对一个KEY 重命名

$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();

// This first case: key 存在且 newkey 不存在 ,成功改名
$redis -> set('fruit','pineapple');
$redis -> rename('fruit','favorite_fruit');     // 重命名
var_dump($redis -> exists('fruit'));            // boolean false, 原来的 key 已经不存在
var_dump($redis -> exists('favorite_fruit'));   // boolean true, key 变成了 newkey

// This second case: key 不存在 ,返回错误
$redis->flushAll();
if(! $redis ->exists('fake_key'))
{
    var_dump($redis -> rename('fake_key','never_exists'));  // boolean false
}

// This third case: key 和 newkey 相同 ,返回错误
$redis -> set('favorite_singer','Jay Chou');
var_dump($redis -> rename('favorite_singer','favorite_singer')); // boolean false

// This fourth case: newkey 已经存在, 覆盖
$redis -> set('PC','SONY');
$redis -> set('personal_computer','lenovo');
var_dump($redis -> rename('PC','personal_computer'));       // boolean true
var_dump($redis -> get('personal_computer'));               // string SONY

 

打赏

好文章,更需要你的鼓励

本文由 氢设计 创作,除注明转载/出处外,均为本站原创,转载前请务必署名

最后编辑时间为:2022-03-31 11:14:50

本文链接:https://www.h2sheji.com/show-198.html