Springboot可以通过redis template和redis进行交互,使用方法如下
可以参考这个系列的文章:
【快学springboot】11.整合redis实现session共享
【快学springboot】13.操作redis之String数据结构
还有python版本的redis实战
https://github.com/7-sevens/Developer-Books/blob/master/Redis/Redis%E5%AE%9E%E6%88%98.pdf
在pom中引入
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
并在application.conf中配置
# redis spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=xxxx spring.redis.database=1 spring.redis.jedis.pool.max-active=10 spring.redis.timeout=3000ms
初始化rest template
@Autowired private RedisTemplate<String, String> redisTemplate;
redis有以下基本类型
STRING操作
【快学springboot】13.操作redis之String数据结构
LIST操作
SET操作
HASH操作
SpringBoot系列教程之RedisTemplate Hash数据结构使用教程
ZSET操作
SpringBoot高级篇Redis之ZSet数据结构使用姿势
在使用redis实现自动补全功能
python版本可以参考《redis实战》或者 基于Redis的自动补全算法
java版本可以参考:使用Redis实现中英文自动补全功能详解
hue的自动补全可以参考:聊一聊代码的智能提示
基本原理就是利用了redis的zset类型,当zset的value都是0的时候,key的排序为字典序,
这时候如果查询的前缀是"ab",这时往zset中插入2个string,"aa{"和"ab{",并使用zrange拿到这两字符的index,由于z的下一个字符为{,所以这2个index之间的字符必定前缀为"ab"
但是如果这样的话在并对的条件下会有问题,所以真实实现中一般会在 "aa{"和"ab{" 后面拼接上uuid,防止覆盖掉别task的成员标记,取到2个index后就立即删除这两个key