redis 删除某个记录的注意事项

redis 删除某个记录的注意事项

  • 一、使用 redisTemplate.opsForZSet().removeRange()方法
  • 二、redisTemplate.opsForZSet().removeRangeByScore("name",start,end)
  • 三、总结

一、使用 redisTemplate.opsForZSet().removeRange()方法

注意:方法的参数依次是 (key , start ,end)是区间范围的删除;但是 注意这个区间:是按照 value排序的区间

下面是按照score排序的区间,本例中 score 采用的是 数据库的 id 值
redis 删除某个记录的注意事项_第1张图片
按照value排序的数据

redis 删除某个记录的注意事项_第2张图片

这样调用这个 redisTemplate.opsForZSet().removeRange()方法的时候,我一开始写的是

Long isDeleteRedis = redisTemplate.opsForZSet().removeRange("allPerson", id, id);

测试的时候输入的id 是

Long allPerson = redisTemplate.opsForZSet().removeRange("allPerson", 0,0);

//删除的是第一条的数据

Long allPerson = redisTemplate.opsForZSet().removeRange("allPerson", 1,1);

//删除的是第二条的数据  根据 score排列的第二条数据没了

Long allPerson = redisTemplate.opsForZSet().removeRange("allPerson", 0,1);

//删除的是第二条的数据  根据 score排列的 前两条数据就都没有了

结论
redisTemplate.opsForZSet().removeRange() 是删除根据 score排序的 区间进行删除,区间从 0 开始
(0,1)删除的是前两条数据,一次类推

二、redisTemplate.opsForZSet().removeRangeByScore(“name”,start,end)

Long allPerson = redisTemplate.opsForZSet().removeRangeByScore("allPerson", 0, 0);

redis 删除某个记录的注意事项_第3张图片
score 是从1 开始的,所以输入 (0,0) 的时候,redis 没有变化

Long allPerson = redisTemplate.opsForZSet().removeRangeByScore("allPerson", 1, 1);

//第一条数据被删除

第一条数据被删除
redis 删除某个记录的注意事项_第4张图片

Long allPerson = redisTemplate.opsForZSet().removeRangeByScore("allPerson", 2, 5);

//第 2 到 5 条数据被删除(按照 score排序)

第 2 到 5 条数据被删除(按照 score排序)
redis 删除某个记录的注意事项_第5张图片

三、总结

redisTemplate.opsForZSet().removeRange()删除的区间是从 0 开始的,(0 , 0)删除的是第一条
redisTemplate.opsForZSet().removeRangeByScore() 删除的区间是从1开始的 (1,1)删除的是第一条

你可能感兴趣的:(redis,redis,数据库)