在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录:
KEY(键) Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。 语法: redis 127.0.0.1:6379> DEL KEY_NAME
返回值: 被删除 key 的数量。 可用版本: >= 1.0.0 时间复杂度:O(N),N为要移除的key的数量。 移除单个字符串类型的key,时间复杂度为O(1)。
移除单个列表、集合、有序集合或哈希表类型的key,时间复杂度为O(M),M为以上数据结构内的元素数量。
具体实例: <?php
$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();
}
Redis EXISTS 命令用于检查给定 key 是否存在。 语法: redis 127.0.0.1:6379> EXISTS KEY_NAME
返回值: 若 key 存在返回 1 ,否则返回 0 。 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例: <?php
$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)
Redis Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。 语法: redis 127.0.0.1:6379> EXPIRE KEY_NAME TIME_IN_SECONDS
返回值:设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时返回 0. (从2.1.3版本开始,key的生存时间可以被更新,也可以被PERSIST命令移除) 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例: <?php
$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
Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。EXPIREAT的作用和EXPIRE一样,都用于为key设置生存时间。不同在于EXPIREAT命令接受的时间参数是UNIX时间戳(unix timestamp)。 语法: redis 127.0.0.1:6379> EXPIREAT KEY_NAME TIME_IN_UNIX_TIMESTAMP
返回值:设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时返回 0. 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例: <?php
$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
Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 。 (1)KEYS * 命中数据库中所有key。
(2)KEYS h?llo 命中hello, hallo and hxllo等。
(3)KEYS h*llo 命中hllo和heeeeello等。
(4)KEYS h[ae]llo 命中hello和hallo,但不命中hillo。
(5)特殊符号用"\"隔开
注意:生成环境中千万不要用keys * , 亲身经历,血的教训,原因看这篇文章:https://cloud.tencent.com/developer/article/1620329
语法: redis 127.0.0.1:6379> KEYS PATTERN
返回值:符合给定模式的 key 列表 (Array)。(警告 :KEYS的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key,你最好还是用集合(Set)) 可用版本: >= 1.0.0 时间复杂度:O(N),N为数据库中key的数量。 具体实例: <?php $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) Redis Keys 命令用于将当前数据库(默认为0)的key移动到给定的数据库db当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。 语法: redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
返回值:移动成功返回 1 ,失败则返回 0 。 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例: <?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();
Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。 语法: redis 127.0.0.1:6379> PERSIST KEY_NAME
返回值:当过期时间移除成功时,返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0 可用版本: >= 2.2.0 时间复杂度:O(1) 具体实例: <?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();
Redis TTL 命令以秒为单位返回 key 的剩余过期时间。 语法: redis 127.0.0.1:6379> TTL KEY_NAME
返回值: (1)当 key 不存在时,返回 -2 。 (2)当 key 存在但没有设置剩余生存时间时,返回 -1 。 (3)否则,以秒为单位,返回 key 的剩余生存时间。 注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。 可用版本: >= 2.2.0 时间复杂度:O(1) 具体实例: <?php
$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
Redis RANDOMKEY 命令从当前数据库中随机返回一个 key (不删除) 。 语法: redis 127.0.0.1:6379> RANDOMKEY
返回值:当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例 : <?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
// This first case: 数据库不为空
$array_mset_randomkey = array(
'fruit' => 'pineapple',
'food' => 'beef',
'drink' => 'beer'
);
$redis -> mset($array_mset_randomkey);
var_dump($redis -> randomKey()); // string 'food' ,随机返回一个 key
var_dump($redis -> keys('*')); // 查看数据库里所有的 key ,验证 randomKey 不删除任何 key
// This second case: 数据库为空
$redis->flushAll(); // 清空数据库里的数据
var_dump($redis -> randomKey()); // boolean false
Redis Rename 命令用于修改 key 的名称 。 语法: redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
返回值: (1)改名成功时提示 OK ,失败时候返回一个错误。 (2)当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 (3)当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例 : <?php
$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
Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。 语法: redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
返回值:修改成功时,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。 可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例 : <?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
$redis->flushAll();
// This first case: key 存在且 newkey 不存在 ,成功改名
$redis -> set('fruit','pineapple');
$redis -> renameNx('fruit','favorite_fruit'); // 重命名
var_dump($redis -> exists('fruit')); // boolean false, 原来的 key 已经不存在
var_dump($redis -> exists('favorite_fruit')); // boolean true, key 变成了 newkey
// This second case: newkey已经存在,改名失败
$redis -> set('PC','SONY');
$redis -> set('personal_computer','lenovo');
var_dump($redis -> renameNx('PC','personal_computer')); // boolean false
var_dump($redis -> get('PC')); // string SONY
var_dump($redis -> get('personal_computer')); // string lenovo
Redis Type 命令用于返回 key 所储存的值的类型。 语法: redis 127.0.0.1:6379> TYPE KEY_NAME 返回值: 返回 key 的数据类型,数据类型有:
可用版本: >= 1.0.0 时间复杂度:O(1) 具体实例 : <?php
$redis = new redis();
$redis->connect('127.0.0.1',6379);
// This first case: key 不存在 ,返回 int(0)
$redis->flushAll();
var_dump($redis -> type('fake_key')); // int(0)
// This second case: 字符串类型 ,返回 int(1)
$redis -> set('favorite_fruit','banana');
var_dump($redis -> type('favorite_fruit')); // int(1)
// This third case: 集合类型 , 返回 int(2)
$redis -> sAdd('favorite_singer','Jay Chou');
var_dump($redis -> type('favorite_singer')); // int(2)
// This fourth case: 列表类型 , 返回 int(3)
$redis -> lPush('program','PHP');
var_dump($redis -> type('program')); // int(3)
// This fifth case: 有序类型 , 返回 int(4)
$redis -> zAdd('pats','0','dog');
$redis -> zAdd('pats','1','cat');
$redis -> zAdd('pats','1','pig');
$redis -> zAdd('pats','2','fox');
var_dump($redis -> zRange('pats',0,-1)); // array (size=4) 0 => string 'dog' (length=3) 1 => string 'cat' (length=3) 2 => string 'pig' (length=3) 3 => string 'fox' (length=3)
var_dump($redis -> type('pats')); // int(4)
// This sixth case: 哈希类型 , 返回 int(5)
$redis -> hSet('website','baidu','www.baidu.com');
var_dump($redis -> hGet('website','baidu')); // string www.baidu.com
var_dump($redis -> type('website')); // int(5)
Redis Type 命令用于返回 key 所储存的值的类型。 语法: SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination] array( 返回值: 返回或保存给定列表、集合、有序集合key中经过排序的元素。(排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较)。 具体实例 : 1、sort key ,若保存的值是数字,返回列表值从小到大的结果 // sort key ,按从小到大进行排序
$redis -> flushAll();
$redis -> lPush('number',1.5);
$redis -> lPush('number',18);
$redis -> lPush('number',75);
$redis -> lPush('number',38);
var_dump($redis -> sort('number'));
2、 若保存的是字符串,使用sort(key,array('ALPHA'=>TRUE))进行排序(按字母表顺序) <?php
$redis = new redis();
$redis -> connect('127.0.0.1',6379);
// 若保存的是字符串,使用sort(key,array('ALPHA'=>TRUE))进行排序(按字母表顺序)
$redis -> flushAll();
$redis -> lPush('website','www.baidu.com');
$redis -> lPush('website','www.google.com');
$redis -> lPush('website','www.tencent.com');
$redis -> lPush('website','www.firefox.com');
var_dump($redis -> sort('website', array('ALPHA'=>TRUE)));
// array (size=4)
// 0 => string 'www.baidu.com' (length=13)
// 1 => string 'www.firefox.com' (length=15)
// 2 => string 'www.google.com' (length=14)
// 3 => string 'www.tencent.com' (length=15)
3、排序之后返回的元素可以通过LIMIT修饰符进行限制,使用sort(key,array('LIMIT'=>array(offset,count))) LIMIT修饰符接受两个参数:offset 和 count。 offset指定要跳过的元素数量,count指定跳过offset个指定的元素之后,要返回多少个对象。 (1)排序的值为数字: <?php
$redis = new redis();
$redis -> connect('127.0.0.1',6379);
// 若排序之后返回的元素数量可以通过LIMIT修饰符进行限制,使用sort(key,array('LIMIT'=>array(offset,count)))
// LIMIT修饰符接受两个参数:offset和count。
// offset指定要跳过的元素数量,count指定跳过offset个指定的元素之后,要返回多少个对象。
$redis -> flushAll();
$redis -> lPush('rank',5); //1
$redis -> lPush('rank',55); //7
$redis -> lPush('rank',52); //6
$redis -> lPush('rank',25); //4
$redis -> lPush('rank',24); //3
$redis -> lPush('rank',37); //5
$redis -> lPush('rank',13); //2
$redis -> lPush('rank',87); //8
$redis_sort_option = array('LIMIT' => array(2,5)); // 正序排序,跳过 2 个元素,跳过之后返回 5 个元素
var_dump($redis -> sort('rank', $redis_sort_option));
// array (size=5)
// 0 => string '24' (length=2)
// 1 => string '25' (length=2)
// |
2022-08-17
2022-09-18
2022-08-17
2022-08-13
2022-08-15
请发表评论