Redis相關指令
這篇文章介紹的內容是關於Redis相關指令,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
注意php_redis 和redis-cli 的差異(主要是傳回值類型和參數用法)
目錄:
#List(列表) | |||||
LPUSH | LPUSHX | RPUSH | RPUSHX | LPOP | RPOP |
#BLPOP | #BRPOP | LLEN | #LRANGE | #LREM | |
LSET | LTRIM | LINDEX###############################LINDEX############ ###########LINSERT########## | RPOPLPUSH | ##BRPOPLUSH |
一、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 1var_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 3var_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 1var_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 3var_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 applevar_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=2) // 0 => string 'banana' (length=6) // 1 => string 'cherry' (length=6)
6、RPOP
Redis Rpop 命令用于移除并返回列表的最后一个元素。
语法:
redis 127.0.0.1:6379> RPOP KEY_NAME
返回值:列表的最后一个元素。 当列表不存在时,返回 nil 。
可用版本:>= 1.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');var_dump($redis -> rPop('favorite_fruit')); // string cherryvar_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=2) // 0 => string 'apple' (length=5) // 1 => string 'banana' (length=6)
7、BLPOP
Redis Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
(1)当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
(2)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长
(3)在MULTI/EXEC事务中的BLPOP,行为表现得就像LPOP一样,对空列表返回nil,对非空列表弹出列表元素,不进行任何阻塞操作。
语法:
redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT
返回值:如果列表为空,返回一个 nil 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
可用版本:>= 2.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();// This first case: 非阻塞行为,最少有一个非空列表$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('pats','dog');$redis -> lPush('pats','cat');$redis -> lPush('pats','rabbit');var_dump($redis -> blPop('favorite_fruit',3));// array (size=2) // 0 => string 'favorite_fruit' (length=14) // 1 => string 'apple' (length=5)$array_blpop = array('favorite_fruit','pats');var_dump($redis -> blPop($array_blpop,3)); // 优先弹出第一个非空列表的头元素 // array (size=2) // 0 => string 'favorite_fruit' (length=14) // 1 => string 'banana' (length=6)var_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=1) // 0 => string 'cherry' (length=6) // This second case: 阻塞行为, 所有给定key都不存在或包含空列表var_dump($redis -> blPop('fake_key',2)); // 阻塞链接, 2s 之后超时结束,返回 array (size=0) empty
8、BRPOP
Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
(1)当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。
(2)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长
(3)在MULTI/EXEC事务中的BLPOP,行为表现得就像RPOP一样,对空列表返回nil,对非空列表弹出列表元素,不进行任何阻塞操作。
语法:
redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT
返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
可用版本:>= 2.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();// This first case: 非阻塞行为,最少有一个非空列表$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('pats','dog');$redis -> lPush('pats','cat');$redis -> lPush('pats','rabbit');var_dump($redis -> brPop('favorite_fruit',3));// array (size=2) // 0 => string 'favorite_fruit' (length=14) // 1 => string 'cherry' (length=6)$array_brpop = array('favorite_fruit','pats');var_dump($redis -> brPop($array_brpop,3)); // 优先弹出第一个非空列表的头元素 // array (size=2) // 0 => string 'favorite_fruit' (length=14) // 1 => string 'banana' (length=6)var_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=1) // 0 => string 'apple' (length=5) // This second case: 阻塞行为, 所有给定key都不存在或包含空列表var_dump($redis -> brPop('fake_key',2)); // 阻塞链接, 2s 之后超时结束,返回 array (size=0) empty
9、LLEN
Redis Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。
语法:
redis 127.0.0.1:6379> LLEN KEY_NAME
返回值:列表的长度。
可用版本:>= 1.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');var_dump($redis -> lLen('favorite_fruit')); // int 3var_dump($redis -> lLen('fake_key')); // 列表不存在,返回 int 0
10、LRANGE
Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
(1)超出范围的下标值不会引起错误。
(2)如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stop,LRANGE返回一个空列表。
(3)如果stop下标比end下标还要大,Redis将stop的值设置为end。
语法:
redis 127.0.0.1:6379> LRANGE KEY_NAME START END
返回值:一个列表,包含指定区间内的元素。
可用版本:>= 1.0.0
时间复杂度:O(S+N),S为偏移量start,N为指定区间内元素的数量。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','pineapple');$redis -> lPush('favorite_fruit','grape');var_dump($redis -> lRange('favorite_fruit',1,3));// array (size=3) // 0 => string 'pineapple' (length=9) // 1 => string 'peach' (length=5) // 2 => string 'apple' (length=5)var_dump($redis -> lRange('favorite_fruit',6,2)); // 当 start > end 时,返回空数组, array (size=0) emptyvar_dump($redis -> lRange('favorite_fruit',0,100)); // 当 end 大于列表长度时,按 end 值计算 // array (size=6) // 0 => string 'grape' (length=5) // 1 => string 'pineapple' (length=9) // 2 => string 'peach' (length=5) // 3 => string 'apple' (length=5) // 4 => string 'banana' (length=6)// 5 => string 'cherry' (length=6)
11、LREM
Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
语法:
redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE
返回值:被移除元素的数量。 列表不存在时返回 0 。
可用版本:>= 1.0.0
时间复杂度:O(N),N为列表的长度。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','grape');var_dump($redis -> lRem('favorite_fruit','apple',2)); // int 2 // 从开头向结尾方向移除 2 个var_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=4) // 0 => string 'grape' (length=5) // 1 => string 'peach' (length=5) // 2 => string 'apple' (length=5) // 3 => string 'cherry' (length=6)var_dump($redis -> lRem('favorite_fruit','apple',-1)); // int1 // 从结尾向开头方向移除 1 个var_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=3) // 0 => string 'grape' (length=5) // 1 => string 'peach' (length=5) // 2 => string 'cherry' (length=6)var_dump($redis -> lRem('favorite_fruit','peach',0)); // int 1 // 移除所有的 valuevar_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=2) // 0 => string 'grape' (length=5) // 1 => string 'cherry' (length=6)
12、LSET
Redis Lset 通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
语法:
redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE
返回值:操作成功返回 ok ,否则返回错误信息。
可用版本:>= 1.0.0
时间复杂度:对头元素或尾元素进行LSET操作,复杂度为O(1)。其他情况下,为O(N),N为列表的长度。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');var_dump($redis -> lSet('favorite_fruit','1','pineapple')); // 将第一个元素替换为 pineapplevar_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=4) // 0 => string 'grape' (length=5) // 1 => string 'pineapple' (length=9) // 2 => string 'apple' (length=5) // 3 => string 'cherry' (length=6)var_dump($redis -> lSet('favorite_fruit','100','pitaya')); // boolean false , 对索引超过范围进行设置,设置不成功var_dump($redis -> lSet('fake_key',1,'mango')); // boolean false , 对不存在的 key 进行设置,设置不成功
13、LTRIM
Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。(下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推)。
(1)超出范围的下标值不会引起错误。
(2)如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stop,LTRIM返回一个空列表(因为LTRIM已经将整个列表清空)。
(3)如果stop下标比end下标还要大,Redis将stop的值设置为end。
语法:
redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP
返回值:命令执行成功时,返回 ok
可用版本:>= 1.0.0
时间复杂度:O(N),N为被移除的元素的数量。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');var_dump($redis -> lTrim('favorite_fruit',1,-1));var_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=3) // 0 => string 'peach' (length=5) // 1 => string 'apple' (length=5) // 2 => string 'cherry' (length=6)var_dump($redis -> lTrim('favorite_fruit',1,10)); // end > list 的长度,那就将 stop 值设为 endvar_dump($redis -> lRange('favorite_fruit',0,-1));// array (size=2) // 0 => string 'apple' (length=5) // 1 => string 'cherry' (length=6)var_dump($redis -> lTrim('favorite_fruit',7,1)); // start > end 或 start > stop , 清空整个 listvar_dump($redis -> lRange('favorite_fruit',0,-1)); // 返回 array (size=0) empty
14、LINDEX
Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
语法:
redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION
返回值:列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 nil 。
可用版本:>= 1.0.0
时间复杂度:O(N),N为到达下标index过程中经过的元素数量, 对列表的头元素和尾元素执行LINDEX命令,复杂度为O(1)。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');var_dump($redis -> lIndex('favorite_fruit',2)); // string 'apple'var_dump($redis -> lRange('favorite_fruit',0,-1)); // 原 list 表不变 // array (size=4) // 0 => string 'grape' (length=5) // 1 => string 'peach' (length=5) // 2 => string 'apple' (length=5) // 3 => string 'cherry' (length=6)
15、LINSERT
Redis Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
语法:
redis 127.0.0.1:6379> LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
返回值:如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。
可用版本:>= 1.0.0
时间复杂度:O(N),N 为寻找pivot过程中经过的元素数量。
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');// The first case : 成功插入,返回列表长度var_dump($redis -> lInsert('favorite_fruit','before','apple','Mango')); // int 5var_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=5) // 0 => string 'grape' (length=5) // 1 => string 'peach' (length=5) // 2 => string 'Mango' (length=5) // 3 => string 'apple' (length=5) // 4 => string 'cherry' (length=6) // The seconde case : 没有找到指定元素 ,返回 -1var_dump($redis -> lInsert('favorite_fruit','before','not_exists','pitaya')); // int -1var_dump($redis -> lRange('favorite_fruit',0,-1)); // 原 list 不变 //array (size=5) // 0 => string 'grape' (length=5) // 1 => string 'peach' (length=5) // 2 => string 'Mango' (length=5) // 3 => string 'apple' (length=5) // 4 => string 'cherry' (length=6) // The third case : 没有找到指定元素 ,返回 0var_dump($redis -> lInsert('fake_key','before','apple','watermelon')); // int 0
16、RPOPLPUSH
Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
语法:
redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
返回值:被弹出的元素。
可用版本:>= 1.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');// The first case : 若 source 和 desitination 相同,则尾旋转操作var_dump($redis -> rpoplpush('favorite_fruit','favorite_fruit')); // cherryvar_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=4) // 0 => string 'cherry' (length=6) // 1 => string 'grape' (length=5) // 2 => string 'peach' (length=5) // 3 => string 'apple' (length=5) // The second case : 移动操作var_dump($redis -> rpoplpush('favorite_fruit','other_list')); // applevar_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=3) // 0 => string 'cherry' (length=6) // 1 => string 'grape' (length=5) // 2 => string 'peach' (length=5)var_dump($redis -> lRange('other_list',0,-1));//array (size=1) // 0 => string 'apple' (length=5)
17、BRPOPLPUSH
Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
(1)当给定列表source不为空时,BRPOPLPUSH的表现和RPOPLPUSH一样。
(2)当列表source为空时,BRPOPLPUSH命令将阻塞连接,直到等待超时,或有另一个客户端对source执行LPUSH或RPUSH命令为止。
(3)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长
语法:
redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT
返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。
可用版本:>= 2.0.0
时间复杂度:O(1)
具体实例:
<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','apple');$redis -> lPush('favorite_fruit','peach');$redis -> lPush('favorite_fruit','grape');// The first case : 若 source 和 desitination 相同,则尾旋转操作var_dump($redis -> brpoplpush('favorite_fruit','favorite_fruit',2)); // cherry ,并没有返回 timevar_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=4) // 0 => string 'cherry' (length=6) // 1 => string 'grape' (length=5) // 2 => string 'peach' (length=5) // 3 => string 'apple' (length=5) // The second case : 移动操作var_dump($redis -> brpoplpush('favorite_fruit','other_list',2)); // apple ,并没有返回 timevar_dump($redis -> lRange('favorite_fruit',0,-1));//array (size=3) // 0 => string 'cherry' (length=6) // 1 => string 'grape' (length=5) // 2 => string 'peach' (length=5)var_dump($redis -> lRange('other_list',0,-1));//array (size=1) // 0 => string 'apple' (length=5)var_dump($redis -> brpoplpush('fake_key','desination_key',2)); // 等待 2s 后返回 false ,并没有返回 time
相关推荐:
以上是Redis相關指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。
