java redis通過key模糊刪除,批量刪除,批量查詢相關資料
阿新 • • 發佈:2018-11-20
@RunWith(SpringRunner.class) @SpringBootTest public class RedisTest { @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private RedisTemplate redisTemplate; /** * 使用redis模糊清除快取 */ @Test public void testRedisCache(){ String keys="test:"; redisTemplate.opsForValue().set(keys+1,"this is a test content!",1000,TimeUnit.SECONDS); String content=redisTemplate.opsForValue().get(keys+1).toString(); System.out.println("---------》獲取到快取的內容為:"+content); redisTemplate.delete(redisTemplate.keys(keys+"*")); Object msg=redisTemplate.opsForValue().get(keys+1); if (msg==null){ msg="沒有了"; } System.out.println("---------》移除後內容為:"+msg); } }
注意:刪除的字首應該是就近一級 eg: key=test:aa:bb:12345 那麼他的字首應該是test:aa:bb:* 這樣才能刪除
==========================
續集1
思路:使用模糊獲取相關的key,然後根據key做更新刪除操作
虛擬碼
String keys="test:group:user*"; Set<String> keysList = stringRedisTemplate.keys(keys); keysList.forEach(i->{ String key = i; String value=stringRedisTemplate.opsForValue().get(key); LogUtils.info("---------->"+value+"\n"); });
拿到key了,刪除更新都就迎刃而解了
續集2(更新於:2018-9-25 看到有這麼多人關注我今天還是補充完善一下)
批量刪除
Set<String> keysList = stringRedisTemplate.keys(keys);
stringRedisTemplate.delete(keysList);
批量查詢
Set<String> keysList = stringRedisTemplate.keys(keys); List<String> strings = stringRedisTemplate.opsForValue().multiGet(keysList);