-
list 介绍:
- list 可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素或者获得列表的某一片段
- 列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为 O(1),获取数据越接近两端的元素速度就越快
- 即使有上千万条数据,获取头部或尾部的 10 条记录也是极快的
-
命令:
- 向列表两端添加元素:
lpush key value value ... rpush key value value ...
- 从列表两端弹出元素:
lpop key #从列表左边弹出一个元素,返回被移除的元素值 rpop key #从列表右边弹出一个元素,返回被移除的元素值
- 获取列表中元素的个数
llen key
- 获取列表片段:
- lrange 命令是列表类型最常用的命令之一,获取列表中的某一片段,将返回 start、stop 之间的所有元素(包含两端的元素),索引从 0 开始
- 索引可以是负数,如:-1 代表最后的一个元素
lrange key 0 -1
- 删除列表中指定的值:
lrem key count value
- lrem 命令会删除列表中前 count 个值为 value 的元素,返回实际删除的元素个数。根据 count 值不同,该命令的执行方法会后所不同:
- count > 0 时:lrem 会从列表的最左边开始删除
- count < 0 时:lrem 会从列表的最右边开始删除
- count = 0 时:lrem 删除所有值为 value 的元素
- lrem 命令会删除列表中前 count 个值为 value 的元素,返回实际删除的元素个数。根据 count 值不同,该命令的执行方法会后所不同:
- 获取 / 设置指定索引的元素值:
lindex key index #获取指定索引的元素值 lset key index value #替换指定索引的元素值
- 只保留列表指定片段:
ltrim start stop #保留指定范围的元素值
- 向里列表中插入元素:
linsert key before|after pivot value #在列表之前或之后插入值
- 将元素从一个列表转移到另一个列表中:
rpoplpush source destionation #将一个列表转移到另一个列表中
- 将元素从一个列表转移到另一个列表中:
- 常用操作:
package com.qcby.config.test; import com.qcby.config.RedisUtil; import org.junit.Test; import redis.clients.jedis.Jedis; import java.util.List; public class ListTest { @Test public void testList(){ Jedis jedis = RedisUtil.getJedis(); try { System.out.println("移除所有内容:" + jedis.del("messages")); jedis.rpush("messages","Hello how are you?"); jedis.rpush("messages","Fine thanks"); jedis.rpush("messages", "NoSQL"); //取出所有的数据 lrange 是范围取出 //第一个是 key 第二个是起始位置 第三个是结束位置 -1:表示所有 List<String> values = jedis.lrange("messages",0,-1); System.out.println("所有的 value:" + values); //清空数据 System.out.println("清空数据:" + jedis.flushDB()); //添加数据 jedis.lpush("lists","vector"); jedis.lpush("lists", "ArrayList"); jedis.lpush("lists", "LinkedList"); System.out.println("数组长度为:" + jedis.llen("lists")); System.out.println("获取字符串:" + jedis.lrange("lists",0,3)); System.out.println("修改列表中单个值:" + jedis.lset("lists",0,"hello list")); System.out.println("获取指定下标的值:" + jedis.lindex("lists",2)); System.out.println("删除指定下标的值:" + jedis.lrem("lists",0,"vector")); System.out.println("删除区间以外的数据:" + jedis.ltrim("lists",0,1)); System.out.println("列表出栈:" + jedis.lpop("lists")); System.out.println("整个列表的值:" + jedis.lrange("lists",0,-1)); }catch (Exception e){ e.printStackTrace(); }finally { RedisUtil.closeJedis(jedis); } } }
- 向列表两端添加元素:
秒懂Redis:list 数据类型
于 2025-02-03 18:22:27 首次发布