【转行测试开发-redis】(五)---使用redis的数据类型列表list

有没有人在啊,想请教一下,【转行测试开发-redis】(五)---使用redis的数据类型列表list
最新回答
我阅君心

2026-10-26 00:32:16

Redis列表(List)是简单的字符串列表,按照插入顺序排序,支持在头部或尾部添加元素。

  • BLPOP/BRPOP:阻塞式弹出列表首/尾元素,超时或可弹出时返回。
  • BRPOPLPUSH:从源列表弹出元素插入目标列表,阻塞式操作。
  • LINDEX:通过索引获取列表元素。
  • LINSERT:在指定元素前/后插入新值。
  • LLEN:获取列表长度。
  • LPOP/RPOP:移除并返回列表首/尾元素。
  • LPUSH/RPUSH:在列表头部/尾部添加一个或多个值。
  • LPUSHX/RPUSHX:仅当列表存在时,在头部/尾部添加值。
  • LRANGE:获取列表指定范围内的元素。
  • LREM:根据值移除列表元素。
  • LSET:通过索引设置列表元素的值。
  • LTRIM:修剪列表,仅保留指定区间内的元素。
  • RPOPLPUSH:移除列表尾元素并插入另一列表头部。

Java代码示例:

import redis.clients.jedis.Jedis;import java.util.List;public class RedisListDemo { public static void main(String[] args) { // 连接本地Redis服务 Jedis jedis = new Jedis("localhost"); // 检查Redis服务是否运行 if (!"PONG".equals(jedis.ping())) { System.out.println("Redis服务未运行"); return; } // 操作列表 jedis.del("LG"); // 清除旧数据 jedis.lpush("LG", "China", "123", "hospatol"); jedis.rpush("LG", "12", "Hello"); // 获取列表数据 List<String> list = jedis.lrange("LG", 0, -1); System.out.println("列表LG中的数据:"); for (String item : list) { System.out.println(item); } // 其他操作示例 System.out.println("列表长度: " + jedis.llen("LG")); System.out.println("索引1的元素: " + jedis.lindex("LG", 1)); jedis.close(); }}

关键点说明:

  1. 连接管理:

    使用Jedis对象连接Redis服务

    通过ping()方法检查服务可用性

    操作完成后调用close()释放资源

  2. 列表操作:

    lpush/rpush分别实现头插/尾插

    lrange获取指定范围元素(0,-1表示全部)

    注意重复执行会导致数据累积(如示例中的多次插入)

  3. 异常处理:

    实际开发中应添加try-catch块

    考虑连接超时和操作异常情况

  4. 数据一致性:

    示例中先执行del操作确保测试环境干净

    避免残留数据影响测试结果

输出结果分析:原始代码中重复执行了多次插入操作,导致数据重复显示。修正后的代码通过清除旧数据和精确控制插入操作,可以得到预期的输出结果:

列表LG中的数据:hospatol123China12Hello列表长度: 5索引1的元素: 123

这展示了Redis列表的典型特征:允许重复元素、保持插入顺序、支持随机访问(通过索引)。