Springboot2默认情况下使用lettuce框架访问Redis,只需要在pom.xml文件添加以下依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
在需要访问Redis的类中注入StringRedisTemplate实例:
@Autowired StringRedisTemplate stringRedisTemplate;
String(字符串):
private void testValue(){ ValueOperations<String, String> value = stringRedisTemplate.opsForValue(); value.getOperations().delete("aaa"); //删除 value.getOperations().delete("bbb"); value.set("aaa", "123"); //set System.out.println(value.setIfAbsent("aaa", "123")); //没有才set System.out.println(value.size("aaa")); //长度 System.out.println(value.get("aaa")); //获取值 value.append("aaa", "456"); //追加 System.out.println(value.get("aaa")); value.increment("bbb", 1); //数值自增 System.out.println(value.get("bbb")); value.multiGet(Arrays.asList("aaa", "bbb", "ccc")) .stream().forEach(System.out::println); }
Hash(散列):
private void testHash(){ HashOperations<String, String, String> hash = stringRedisTemplate.opsForHash(); hash.getOperations().delete("hash1"); hash.put("hash1", "aaa", "111"); //put hash.put("hash1", "bbb", "222"); hash.put("hash1", "ccc", "333"); System.out.println(hash.size("hash1")); //长度 hash.entries("hash1").forEach((k,v) -> { //显示所有的key和value System.out.println(k + "=" + v); }); hash.keys("hash1").stream().forEach(System.out::println); //显示所有的key hash.values("hash1").stream().forEach(System.out::println); //显示所有的value System.out.println(hash.putIfAbsent("hash1", "aaa", "aaa")); //没有key才put hash.increment("hash1", "count", 1); //数值自增 System.out.println(hash.get("hash1", "count")); hash.increment("hash1", "count", 1); System.out.println(hash.get("hash1", "count")); hash.increment("hash1", "count", -1); System.out.println(hash.get("hash1", "count")); System.out.println(hash.hasKey("hash1", "amount")); //判断key是否存在 System.out.println(hash.get("hash1", "count")); hash.delete("hash1", "count"); //删除 }
Set(集合):
private void testSet(){ SetOperations<String, String> set = stringRedisTemplate.opsForSet(); set.getOperations().delete("set1"); set.getOperations().delete("set2"); set.add("set1", "111", "222", "333", "111"); set.add("set2", "222", "333", "444"); System.out.println(set.size("set1")); //长度 System.out.println(set.members("set1")); //获取所有值 System.out.println(set.members("set2")); System.out.println(set.difference("set1", "set2")); //从前者取得与后者不一样的元素 System.out.println(set.intersect("set1", "set2")); //交集 System.out.println(set.union("set1", "set2")); //并集 set.remove("set1", "111"); //删除一个元素 System.out.println(set.pop("set1")); //弹出一个元素 System.out.println(set.randomMember("set2")); //随机取一个元素 System.out.println(set.isMember("set2", "444")); //给定元素是否是成员 set.move("set2", "444", "set1"); //移动 System.out.println(set.members("set1")); }
List(列表):
private void testList() { ListOperations<String, String> list = stringRedisTemplate.opsForList(); list.getOperations().delete("list"); //清空 list.leftPush("list", "111"); //push 放到list中 list.leftPushIfPresent("list", "222"); list.rightPush("list", "333"); list.rightPushIfPresent("list", "444"); System.out.println(list.index("list", 0)); System.out.println(list.range("list", 0, -1)); list.trim("list", 0, 2); //截取 System.out.println(list.range("list", 0, -1)); System.out.println(list.leftPop("list")); //pop 取出消费掉 System.out.println(list.rightPop("list")); }
Zset(有序集合):
private void testZSet(){ ZSetOperations<String, String> zset = stringRedisTemplate.opsForZSet(); zset.getOperations().delete("zset1"); zset.getOperations().delete("zset2"); zset.add("zset1", "aaa", 1); zset.add("zset1", "bbb", 1); zset.add("zset1", "ccc", 1); zset.add("zset2", "bbb", 1); zset.add("zset2", "ccc", 1); zset.add("zset2", "ddd", 1); System.out.println(zset.size("zset1")); //长度 System.out.println(zset.range("zset1", 0, -1)); //取所有元素 zset.incrementScore("zset1", "bbb", 1); //增加分数score zset.incrementScore("zset1", "aaa", 2); System.out.println(zset.range("zset1", 0, -1)); //分数递增排序 zset.rangeWithScores("zset1", 0, -1).stream().forEach(t -> { System.out.println(t.getValue() + "-" + t.getScore()); }); System.out.println(zset.reverseRange("zset1", 0, -1)); //分数递减排序 zset.reverseRangeWithScores("zset1", 0, -1).stream().forEach(t -> { System.out.println(t.getValue() + "-" + t.getScore()); }); System.out.println(zset.rank("zset1", "ccc")); //分数递增排序,取元素的索引 System.out.println(zset.reverseRank("zset1", "ccc")); //分数递减排序,取元素的索引 System.out.println(zset.score("zset1", "bbb")); //取元素的分数 zset.remove("zset2", "bbb"); //删除元素 System.out.println(zset.range("zset2", 0, -1)); }
相关推荐
在本文中,我们将深入探讨如何使用`MQTT`(Message Queuing Telemetry Transport)协议与`SpringBoot`框架集成,并利用`Redis`作为缓存来处理消息。`MQTT`是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备...
不过,以上代码提供了一个基本的实现思路,帮助你理解如何在SpringBoot应用中使用Redis实现分布式锁。 通过提供的Word文档,你应该能够找到更详细的配置和使用步骤。记得在实际项目中根据具体需求进行调整,确保...
1. **MybatisPlus整合Redis**:在需要缓存的查询方法上添加`@Cacheable`注解,通过Spring Cache抽象层,将结果存储到Redis中。下次请求相同数据时,直接从缓存获取,提高响应速度。 2. **RedisTemplate与...
3. **Session共享**:通过`RedisSessionDAO`,我们可以将Shiro的session数据存储到Redis中,实现分布式session。这样,用户在集群中的任意一台服务器登录后,其他服务器都能识别该用户。 **Mybatis集成** 1. **...
总之,SpringBoot集成Redis-Demo是一个实用的教程,它帮助开发者快速掌握在SpringBoot环境中使用Redis的方法。通过学习这个示例,我们可以了解如何配置、操作和优化Redis,以及如何在微服务架构中利用Redis实现高效...
例如,获取所有数据时,可以先从Redis中查找,如果没有再从数据库中查询并存入Redis。 8. **控制器(Controller)**:创建RESTful API,处理HTTP请求,调用服务层(Service)进行业务逻辑处理。 9. **测试**:编写...
这样,后续请求时,可以先检查Redis中是否存在有效的登录令牌,从而避免频繁查询数据库。 ```java public String getLoginToken(String username) { return stringRedisTemplate.opsForValue().get("login:" + ...
在SpringBoot应用中,可以使用Spring Data Redis库提供的`RedisTemplate`或`StringRedisTemplate`进行操作。通过拦截Mybatis的查询方法,将查询结果存入Redis,当相同查询再次到来时,直接从Redis读取,避免了昂贵的...
总的来说,"Springboot加Redis缓存实现"项目展示了如何在Spring Boot应用中集成并使用Redis作为缓存系统,提高了数据读取效率,同时也提供了数据库操作和API测试的全套方案。理解并掌握这个项目中的知识点,对于开发...
标题 "Redis缓存url访问次数(SpringBoot拦截器)" 描述的是一个使用SpringBoot框架构建的应用中,通过拦截器来统计URL访问次数,并利用Redis作为缓存存储这些计数的过程。这个技术方案通常用于网站性能优化,通过...
在SpringBoot中集成Redis,我们需要配置Redis连接,包括主机、端口、密码等,并可以通过`StringRedisTemplate`或`RedisTemplate`进行操作。为了实现缓存功能,我们可以使用Spring的`@Cacheable`、`@CacheEvict`等...
例如,我们可以将经常访问但更新不频繁的数据存储在Redis中,减少对数据库的直接访问,提升应用性能。这通常通过在Mapper方法上添加缓存注解来实现,SpringBoot会自动处理缓存的加载、更新和淘汰。 具体步骤如下: ...
- 登录成功后,将Token存储在Redis中,并将其作为Cookie返回给客户端。 - 在其他子系统中,通过Shiro拦截器检查Cookie中的Token,如果有效,则允许访问,否则重定向回认证中心。 2. **统一异常处理**: - ...
Spring Boot提供`RedisTemplate`和`StringRedisTemplate`用于操作Redis,也可以使用` lettuce`或`Jedis`客户端库。此外,Spring Session可以利用Redis来实现会话共享,提高分布式应用的用户体验。 **Spring Boot...
例如,当用户访问一个页面时,如果数据已经在Redis中,那么直接从Redis读取,而无需查询数据库,从而减少数据库压力。 在本示例的压缩包文件"spring-boot-test"中,可能包含了以下内容: 1. `pom.xml`:项目依赖...
在SpringBoot应用中集成Redis分布式锁,可以创建一个`RedisLock`工具类,包含加锁和解锁的方法。加锁操作需要确保原子性,即同时设置键和过期时间,这在SpringBoot 2.x版本以上可以通过`opsForValue().setIfAbsent()...
在本文中,我们将深入探讨如何在SpringBoot项目中集成Redis,并利用其作为缓存来优化数据访问性能。 首先,让我们了解SpringBoot和Redis的基本概念。SpringBoot是由Pivotal团队开发的轻量级框架,它简化了创建独立...
在本实例中,我们主要探讨的是如何在Spring Boot 2.0框架中集成并使用Redis 3.2.1作为缓存系统。Redis是一个高性能的键值存储系统,常用于数据库、缓存和消息中间件等场景。Spring Boot是Spring框架的微服务开发工具...
在压缩包的文件列表中提到的"新建文件夹"可能包含的是一系列配置文件、源代码、示例或者教程文档,这些文件将详细展示如何在SpringBoot项目中配置和使用Redis及MySQL。开发者可以通过这些资源学习如何整合这三个技术...
SpringBoot整合Redis是现代Web应用中常见的数据存储与缓存技术结合方式,它极大地简化了在SpringBoot项目中配置和使用Redis的过程。Redis是一个高性能的键值对存储系统,适用于处理大量数据,常用于缓存、消息队列、...