首页 > 代码库 > redis 在 php 中的应用(List篇)
redis 在 php 中的应用(List篇)
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法)
目录:
一、List(列表)
1、LPUSH
Redis Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。(在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值。)
语法:
redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN
返回值: 执行 LPUSH 命令后,列表的长度。
可用版本: >= 1.0.0
时间复杂度:O(1)
具体实例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘)); // key 不存在,创建一个新的列表, 返回 int 1
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘)); // key 存在。但是 list 类型, 返回 int 2
$redis -> set(‘pats‘,‘dog‘);
var_dump($redis -> lPush(‘pats‘,‘cat‘)); // key 存在。但不是是 list 类型, 返回 boolean false
2、LPUSHX
Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。
语法:
redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN
返回值: LPUSHX 命令执行之后,列表的长度。
可用版本: >= 2.2.0
时间复杂度:O(1)
具体实例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> rPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> rPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> lPushx(‘favorite_fruit‘,‘apple‘)); // 返回 int 3
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=3)
// 0 => string ‘apple‘ (length=5)
// 1 => string ‘cherry‘ (length=6)
// 2 => string ‘banana‘ (length=6)
var_dump($redis -> lPushx(‘fake_key‘,‘invalid_val‘)); // 列表不存在时操作无效返回 int (0)
3、RPUSH
Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。(注意:在 Redis 2.4 版本以前的 RPUSH 命令,都只接受单个 value 值)。
语法:
redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN
返回值: 执行 RPUSH 操作后,列表的长度。
可用版本: >= 1.0.0
时间复杂度:O(1)
具体实例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> rPush(‘favorite_fruit‘,‘cherry‘)); // key 不存在,创建一个新的列表, 返回 int 1
var_dump($redis -> rPush(‘favorite_fruit‘,‘banana‘)); // key 存在。但是 list 类型, 返回 int 2
$redis -> set(‘pats‘,‘dog‘);
var_dump($redis -> rPush(‘pats‘,‘cat‘)); // key 存在。但不是是 list 类型, 返回 boolean false
4、RPUSHX
Redis Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。
语法:
redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN
返回值:执行 Rpushx 操作后,列表的长度。
可用版本: >= 2.2.0
时间复杂度:O(1)
具体实例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> rPushx(‘favorite_fruit‘,‘apple‘)); // 返回 int 3
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=3)
// 0 => string ‘banana‘ (length=6)
// 1 => string ‘cherry‘ (length=6)
// 2 => string ‘apple‘ (length=5)
var_dump($redis -> rPushx(‘fake_key‘,‘invalid_val‘)); // 列表不存在时操作无效返回 int (0)
5、LPOP
Redis Lpop 命令用于移除并返回列表的第一个元素。
语法:
redis 127.0.0.1:6379> LPOP KEY_NAME
返回值:列表的第一个元素。 当列表 key 不存在时,返回 nil 。
可用版本:>= 1.0.0
时间复杂度:O(1)
具体实例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘apple‘));
var_dump($redis -> lPop(‘favorite_fruit‘)); // string apple
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=2)
// 0 => string ‘banana‘ (length=6)
// 1 => string ‘cherry‘ (length=6)
redis 在 php 中的应用(List篇)