复述中如何获取列表中的所有元素

  介绍

这篇文章主要介绍了复述中如何获取列表中的所有元素,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

一种方法是用lrange(键,0,1)。这种方法不会影响复述,列表中的数据。

List, list =, jedis.lrange(,键,0,1,);

另一种方法是用+ lpop。这种方法会将复述,列表中的数据都弹出来,复述,名单就变成空的了。

List, list =, new  ArrayList<在();   String  st =, jedis.lpop (, key );   while  (, st  !=, null ), {   list.add才能(,st );   ,,   时间=st 才能;jedis.lpop (, key );   }

这两种方法获得的List中列表的元素的顺序是一样的。

<强>补充:复述,列表类型列表如何一次返回多个值并删除这些值

复述的列表类型列表是一个常用的数据类型,但是这个类型并不支持一次性返回多个值并删除这些已经返回的值。

其实我们可以通过复述的事务,来完成这个一次性返回多个值并删除这些已经返回的值的需求。

复述中的事务就是一组命令的集合,这些命令要么全部执行,要么全都不执行.redis事务的原理就是一次性将命令都发给服务端,

当服务接收到exec命令之后,按照事务中命令的顺序依次执行事务中的命令.exec命令的返回值就是事务中依次执行的命令返回值的集合,返回值的顺序和命令的执行顺序相同。如果在发送exec命令前,客户端和服务端失去连接,这时复述,会清空这个事务队列。

介绍完这些原理,我们再来看看如何完成一次性返回多个值并删除这些已经返回的值的需求。

我们这里要利用两个列表类型的命令:lrange和ltrim

lrange键开始/结束/从左边依次返回关键的(开始、结束)的所有值,注意返回结果包含两端的值。

ltrim键开始/结束/删除指定索引之外的所有元素,注意删除之后保留的元素包含两端的开始和结束索引值。

我们这里举例测试:

复述中如何获取列表中的所有元素

我们构造了一个名为yujie_list的列表类型数据结构,从左边依次压入:0 1 2 3 4 5 6 7 8 9

最后从左到右依次列出列表中的所有元素如上图所示。

接下来我们测试lrange和ltrim命令如下图:

复述中如何获取列表中的所有元素

我们使用lrange yujie_list 0 3命令,从左到右依次列出从索引0到索引3的元素,注意包含了索引0值为9和索引3值为6的元素。

我们使用ltrim yujie_list 4 1命令,删除索4引到最右端之外的所有元素,注意删除的元素不包含索引4职位5的元素。

好了原理讲完,了接下来我们上代码:

RedisUtil是一个工具类,用于连接复述,服务端。

/* *   ,*连接复述,服务的工具类   ,* @author  yujie.wang3   ,*   ,*/public  final  class  RedisUtil  {,,//复述才能服务器IP   private 才能static  String  ADDR =,“10.4.36.93";   ,,//复述才能的端口号   private 才能static  int  PORT =, 6379,,,   ,,//可才能用连接实例的最大数目,默认值为8;//才能如果赋值为1,则表示不限制,如果池已经分配了maxActive个能实例,则此时池的状态为疲惫(耗尽)。   private 才能static  int  MAX_ACTIVE =, 100;   ,,//才能控制一个池最多有多少个状态为闲置(空闲的)的能实例,默认值也是8。   private 才能static  int  MAX_IDLE =, 20;   ,,//等才能待可用连接的最大时间,单位毫秒,默认值为1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;   private 才能static  int  MAX_WAIT =, 10000;   ,,   private 才能static  int  TIMEOUT =, 10000;   ,,//在才能借到一个能实例时,是否提前进行验证操作,如果为真,则得到的能实例均是可用的;   private 才能static  boolean  TEST_ON_BORROW =,真的;   ,,   private 才能static  JedisPool  JedisPool =,空;   ,,   ,/* *   ,,*,初始化复述,连接池   ,,*/static {才能   ,,,try  {   ,,,,,JedisPoolConfig  config =, new  JedisPoolConfig ();   ,,,,,config.setMaxActive (MAX_ACTIVE);   ,,,,,config.setMaxIdle (MAX_IDLE);   ,,,,,config.setMaxWait (MAX_WAIT);   ,,,,,config.setTestOnBorrow (TEST_ON_BORROW);   ,,,,,jedisPool =, new  JedisPool(配置,ADDR,端口);   ,,,},catch  (Exception  e), {   ,,,,,e.printStackTrace ();   ,,,}   ,,}   ,,   ,/* *   ,,*,获取能实例   ,,* @return   ,,*/public 才能synchronized  static  Jedis  getJedis (), {   ,,,try  {   ,,,,,if  (jedisPool  !=, null), {   ,,,,,,,Jedis  resource =, jedisPool.getResource ();   ,,,,,,,return 资源;   ,,,,,},{else    ,,,,,,,return 零;   ,,,,,}   ,,,},catch  (Exception  e), {   ,,,,,e.printStackTrace ();   ,,,,,return 零;   ,,,}   ,,}   ,,   ,/* *   ,,*,释放能资源   ,,*,@param 能   ,,*/null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

复述中如何获取列表中的所有元素