1.Redis自动补全功能介绍:
Redis可以帮我们实现很多种功能,今天这里着重介绍的是Redis的自动补全功能的实现.我们使用有序集合,并score都为0,这样就按元素值的字典序排序.然后我们可以根据排序号的字符,进行添加前缀和后缀的方式,找到我们想要的区间内容.下面介绍一个简单的Zset的排序内容和思路,以便后续的理解:
名称为redis_concat的Zset集合元素如下:
编号 | 数值 | 分值 |
---|---|---|
1 | a | 0 |
2 | ab | 0 |
3 | abcd | 0 |
4 | abef | 0 |
5 | hjk | 0 |
6 | dbfgll | 0 |
7 | efhuo | 0 |
8 | iop | 0 |
9 | lkj | 0 |
10 | ghu | 0 |
1 |
|
- Ascii码里小写字母a的前面是`,z的后面是{
- 于是我们查找ab匹配的元素,插入 aa{ 和 ab{ 即可( 或者” ab` “和” ab{ “ )
- 找到aa{ 和 ab{ 的下标,通过Zrange()得出相关区间的内容
- 如果是中文,建议全部将支付转为16进制字符来进行存储,取出时候再转码
2.相关Demo分享
1 |
|
项目结构如下:
1 |
|
Vue的构建步骤:
1 |
|
Java_Service中相关的方法:
- 1.分页获取前100条数据,如果Redis中不存该联系人在就放入redis中
- 2.放入前使用 unicode编码,位于coding方法中,取出相关的数据后记得使用decoding方法解码
- 3.获得相关数据后删除放入的前缀和后缀,这里都加了UUID,防止有相同的查询带有前后缀的数据被误删(如查找 ab ,数据中本身就含有 ab{ 等)
- 4.获得前5条或者前10条相关匹配的数据给前台(这里自定义即可,查看注释地方)
相关类详情:
1 |
|
3.项目git地址
(喜欢记得点星支持哦,谢谢!)