原文网址:Redisson--模糊查询--方法/实例_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍如何使用Redisson进行模糊查询。
Redisson模糊查询的原理
Redis模糊查询有两种方法:KEYS、SCAN。Redisson的模糊查询都是通过SCAN来实现的:
代码
package com.example.demo.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.redisson.api.RBucket;
import org.redisson.api.RKeys;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "模糊操作")
@RestController
@RequestMapping("fuzzy")
public class FuzzyOperation {
@Autowired
private RedissonClient redissonClient;
@ApiOperation("添加数据")
@GetMapping("add")
public String add() {
int total = 20;
for (int i = 10; i < total + 10; i++) {
RBucket<String> bucket = redissonClient.getBucket("hello" + i);
bucket.set("world" + i);
}
return "success";
}
@ApiOperation("查询所有(列表)")
@GetMapping("findList")
public List<String> findList() {
RKeys keys = redissonClient.getKeys();
Iterable<String> keysByPattern = keys.getKeysByPattern("hello1*");
List<String> result = new ArrayList<>();
for (String s : keysByPattern) {
result.add(s);
}
return result;
}
@ApiOperation("查询特定个数(列表)")
@GetMapping("findLimitList")
public List<String> findLimitList() {
RKeys keys = redissonClient.getKeys();
Iterable<String> keysWithLimit = keys.getKeysWithLimit("hello1*", 5);
List<String> result = new ArrayList<>();
for (String s : keysWithLimit) {
result.add(s);
}
return result;
}
@ApiOperation("删除")
@GetMapping("delete")
public void delete() {
RKeys keys = redissonClient.getKeys();
long delete = keys.deleteByPattern("hello1*");
}
}
测试
先插入数据:
测试1:查出所有数据
测试2:查出前5个数据