首页 > 编程知识 正文

redis删除指定key值的方法,list集合查询索引

时间:2023-05-06 00:13:26 阅读:33014 作者:1671

RedisTemplate准备数据并使用list 核心思想:取出redis中list的所有元素,用java的list相关方法删除元素,得到一个新的list,然后遍历这个新的list写入redis

在RedisTemplate的官方文档中,没有根据list的索引直接删除元素的方法,但有根据list的元素值删除元素的方法。 如下所示

移除(kkey,long count,Object value ) )。

key :列表的名称

vue :要删除的元素的值

计数:已删除的元素数。

如果count=0,则删除列表中值为value的所有元素;

在count0的情况下,从一开始,list的值就删除value的要素,删除的个数为count个

如果为count0,则从末尾开始,删除列表值为value的元素,删除个数为|count|(count的绝对值)个

这种方法不能直接删除每个索引的元素,但可以间接实现每个索引的删除。

不用说,开始演习

准备数据并向list中添加一些元素

添加后list的数据如下。

现在,假设您想删除list索引为2的元素,即元素值为555的第二个元素,上图中的第三行元素。

取出整个list RedisOperate.java

/* *从索引获取列表list的元素*中提取值范围[start,end],列表中的索引为0,如[ 0,2 ], 提取1,然后提取2个元素*/@service(redisoperate ) (publicclassredisoperate ) publicliststringggetlist (string listname,long sttate ) longengenlist }}/* *修改列表*索引:要修改的元素的索引* value :要修改的元素的值*/public void changelist (字符串列表,长索引,) 如果count=0,则删除列表中值为value的所有元素; *如果为count 0,则从开头开始删除list值为value的元素;如果删除个数为count个*count0,则从末尾开始删除list值为value的元素;删除个数为|count|(count的绝对值)/publicvvvt string value (redis template.opsforlist ).remove(listname,count,value ); } TestController.java

@ controllerpublicclasstestcontroller { @ autowiredprivateredisoperateredisoperateredisoperate; @ response body @ request mapping (/test ) (public Object test ) ) ({MapString,Object resMap=new HashMapString,Object ) ) //为了便于比较,在两个列表存储中修改检索到的列表之前和之后,liststringbefore=redis operate.getlist (' ceshi ',0,-1); liststringafter=newarrayliststring (; After.addall(before ); int delIndex=2; //要删除的列表元素的索引stringdelvalue=after.get (delindex ); //要删除的元素的值resmap.put('before ',before ); //删除以前的listafter.remove(Delindex )//此元素resmap.put(after )、after ); //删除后的listredisoperate.delete list (' ceshi ',1,delValue ); 将redis中list的长度设为-1//,删除满足以将删除元素后的list改写为redisfor为目的的条件的元素。 (intI=0; iafter.size (; I ) { redis operate.changelist (' ceshi ',I,after.get(i ) ); }返回re smap; }启动服务器后,请在地址栏中输入项目测试路径

测试结果删除成功

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。