`
raymond.chen
  • 浏览: 1433460 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Springboot中使用StringRedisTemplate访问Redis

 
阅读更多

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+springBoot+redis消息处理,亲测整理上线

    在本文中,我们将深入探讨如何使用`MQTT`(Message Queuing Telemetry Transport)协议与`SpringBoot`框架集成,并利用`Redis`作为缓存来处理消息。`MQTT`是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备...

    springboot基于redis分布式锁

    不过,以上代码提供了一个基本的实现思路,帮助你理解如何在SpringBoot应用中使用Redis实现分布式锁。 通过提供的Word文档,你应该能够找到更详细的配置和使用步骤。记得在实际项目中根据具体需求进行调整,确保...

    SpringBoot项目+MybatisPlus使用+Redis缓存

    1. **MybatisPlus整合Redis**:在需要缓存的查询方法上添加`@Cacheable`注解,通过Spring Cache抽象层,将结果存储到Redis中。下次请求相同数据时,直接从缓存获取,提高响应速度。 2. **RedisTemplate与...

    SpringBoot整合shiro、redis集成mybatis

    3. **Session共享**:通过`RedisSessionDAO`,我们可以将Shiro的session数据存储到Redis中,实现分布式session。这样,用户在集群中的任意一台服务器登录后,其他服务器都能识别该用户。 **Mybatis集成** 1. **...

    springboot整合redis+ecache

    在“springboot整合redis+ecache”的场景中,我们首先要理解这两个技术的核心作用。Redis 是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、...

    SpringBoot集成Redis-Demo

    总之,SpringBoot集成Redis-Demo是一个实用的教程,它帮助开发者快速掌握在SpringBoot环境中使用Redis的方法。通过学习这个示例,我们可以了解如何配置、操作和优化Redis,以及如何在微服务架构中利用Redis实现高效...

    springBoot+mysql+redis基础项目

    例如,获取所有数据时,可以先从Redis中查找,如果没有再从数据库中查询并存入Redis。 8. **控制器(Controller)**:创建RESTful API,处理HTTP请求,调用服务层(Service)进行业务逻辑处理。 9. **测试**:编写...

    SpringBoot集成Redis

    这样,后续请求时,可以先检查Redis中是否存在有效的登录令牌,从而避免频繁查询数据库。 ```java public String getLoginToken(String username) { return stringRedisTemplate.opsForValue().get("login:" + ...

    基于SpringBoot、Mybatis的redis数据缓存

    在SpringBoot应用中,可以使用Spring Data Redis库提供的`RedisTemplate`或`StringRedisTemplate`进行操作。通过拦截Mybatis的查询方法,将查询结果存入Redis,当相同查询再次到来时,直接从Redis读取,避免了昂贵的...

    Springboot加Redis缓存实现

    总的来说,"Springboot加Redis缓存实现"项目展示了如何在Spring Boot应用中集成并使用Redis作为缓存系统,提高了数据读取效率,同时也提供了数据库操作和API测试的全套方案。理解并掌握这个项目中的知识点,对于开发...

    Redis缓存url访问次数(SpringBoot拦截器)

    标题 "Redis缓存url访问次数(SpringBoot拦截器)" 描述的是一个使用SpringBoot框架构建的应用中,通过拦截器来统计URL访问次数,并利用Redis作为缓存存储这些计数的过程。这个技术方案通常用于网站性能优化,通过...

    基于mongodb数据库的集成redis缓存springboot实战

    在SpringBoot中集成Redis,我们需要配置Redis连接,包括主机、端口、密码等,并可以通过`StringRedisTemplate`或`RedisTemplate`进行操作。为了实现缓存功能,我们可以使用Spring的`@Cacheable`、`@CacheEvict`等...

    springboot+redis+shiro单点登录,统一异常处理,统一日志

    - 登录成功后,将Token存储在Redis中,并将其作为Cookie返回给客户端。 - 在其他子系统中,通过Shiro拦截器检查Cookie中的Token,如果有效,则允许访问,否则重定向回认证中心。 2. **统一异常处理**: - ...

    MyBatis+SpringBoot+Redis

    例如,我们可以将经常访问但更新不频繁的数据存储在Redis中,减少对数据库的直接访问,提升应用性能。这通常通过在Mapper方法上添加缓存注解来实现,SpringBoot会自动处理缓存的加载、更新和淘汰。 具体步骤如下: ...

    Springboot+redis+mybatisplus实例

    Spring Boot提供`RedisTemplate`和`StringRedisTemplate`用于操作Redis,也可以使用` lettuce`或`Jedis`客户端库。此外,Spring Session可以利用Redis来实现会话共享,提高分布式应用的用户体验。 **Spring Boot...

    基于SpringBoot的Rabbitmq和Redis调用示例

    例如,当用户访问一个页面时,如果数据已经在Redis中,那么直接从Redis读取,而无需查询数据库,从而减少数据库压力。 在本示例的压缩包文件"spring-boot-test"中,可能包含了以下内容: 1. `pom.xml`:项目依赖...

    SpringBoot 使用 Redis 分布式锁解决并发问题.docx

    在SpringBoot应用中集成Redis分布式锁,可以创建一个`RedisLock`工具类,包含加锁和解锁的方法。加锁操作需要确保原子性,即同时设置键和过期时间,这在SpringBoot 2.x版本以上可以通过`opsForValue().setIfAbsent()...

    springboot整合redis

    在本文中,我们将深入探讨如何在SpringBoot项目中集成Redis,并利用其作为缓存来优化数据访问性能。 首先,让我们了解SpringBoot和Redis的基本概念。SpringBoot是由Pivotal团队开发的轻量级框架,它简化了创建独立...

    springBoot2.0+redis3.2.1实例demo

    在本实例中,我们主要探讨的是如何在Spring Boot 2.0框架中集成并使用Redis 3.2.1作为缓存系统。Redis是一个高性能的键值存储系统,常用于数据库、缓存和消息中间件等场景。Spring Boot是Spring框架的微服务开发工具...

    新建文件夹 - redis + springboot + mysql.zip

    在压缩包的文件列表中提到的"新建文件夹"可能包含的是一系列配置文件、源代码、示例或者教程文档,这些文件将详细展示如何在SpringBoot项目中配置和使用Redis及MySQL。开发者可以通过这些资源学习如何整合这三个技术...

Global site tag (gtag.js) - Google Analytics