列表

list 主要是用来干嘛的

列表内元素可重复

部分命令

  • lpush key value1 [value2] :将一个或多个值插入到列表头部

  • lpushx key value :将一个值插入到已存在的列表头部,返回列表长度

  • rpush key value :将一个或多个值插入到列表尾部,返回列表长度

  • rpushx key value :将一个或多个值插入到已存在列表尾部,返回列表长度

  • lset key index value :通过索引设置列表元素的值,索引从 0 开始

  • llen key :返回当前列表长度,无则返回 0

  • lrange key start end :返回队列中一个区间的元素,(key 0 -1)表示返回所有元素

  • lindex key index :通过索引获取列表中的元素

  • lpop key :移出并获取列表的第一个元素

  • rpop key :移出并获取列表的最后一个元素

  • blpop key1 timeout :移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

  • brpop key1 timeout :移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

  • rpoplpush :从一个队列中 pop 出元素并 push 到另一个队列,也可以是同一个队列

  • lrem key count value :删除队列中左起指定数量的字符,$data = Redis::lrem($list, 1, 'yuanyuan');// 删除队列中左起(右起 count < 0) 1个值为(count = 0 移除表中所有与 VALUE 相等的值) 'yuanyuan'的元素(若有)

  • ltrim key start end :保留左边起若干元素,其余删除,$data = Redis::ltrim($list, 1, 6);// 保留左边起第 1 个至第 6 个元素

  • linsert key before|after pivot value :在列表的元素前或者后插入元素,$data = Redis::linsert('list2', 'before', 'ab1', '123');//表示在元素 'ab1' 之前插入 '123'

表格

命令 说明
lpush key value1 [value2] 将一个或多个值插入到列表头部
lpushx key value 将一个值插入到已存在的列表头部,返回列表长度
rpush key value 将一个或多个值插入到列表尾部,返回列表长度
rpushx key value 将一个或多个值插入到已存在列表尾部,返回列表长度
lset key index value 通过索引设置列表元素的值,索引从 0 开始
llen key 返回当前列表长度,无则返回 0
lrange key start end 返回队列中一个区间的元素,(key 0 -1)表示返回所有元素
lindex key index 通过索引获取列表中的元素
lpop key 移出并获取列表的第一个元素
rpop key 移出并获取列表的最后一个元素
blpop key1 timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
brpop key1 timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
rpoplpush 从一个队列中 pop 出元素并 push 到另一个队列,也可以是同一个队列
lrem key count value 删除队列中左起指定数量的字符,$data = Redis::lrem($list, 1, 'yuanyuan');// 删除队列中左起(右起 count < 0) 1个值为(count = 0 移除表中所有与 VALUE 相等的值) 'yuanyuan'的元素(若有)
ltrim key start end 保留左边起若干元素,其余删除,$data = Redis::ltrim($list, 1, 6);// 保留左边起第 1 个至第 6 个元素
linsert key (before、after) pivot value 在列表的元素前或者后插入元素,$data = Redis::linsert('list2', 'before', 'ab1', '123');//表示在元素 'ab1' 之前插入 '123'

部分代码展示

// 从一个队列中 pop 出元素并 push 到另一个队列

//	Redis::rpush('list1','ab0');
//	Redis::rpush('list1','ab1');
//	Redis::rpush('list2','ab2');
//	Redis::rpush('list2','ab3');
      // 返回的是 list1 pop 出来的数据
//	$data = Redis::rpoplpush('list1','list2');// 结果list1 =>array('ab0'), list2 =>array('ab1','ab2','ab3')
//	$data = Redis::lrange('list1', 0, -1);
      // 返回的是 list2 pop 出来的数据
//	$data = Redis::rpoplpush('list2','list2');// 也适用于同一个队列, 把最后一个元素移到头部 list2 =>array('ab3','ab1','ab2')
//	$data = Redis::lrange('list2', 0, -1);

附录

更多Redis命令