首页 > 编程知识 正文

Springboot redis,java实现redis

时间:2023-05-03 17:21:48 阅读:43507 作者:1027

愿你像阳光一样,明亮而不悲伤。

目的1. Redis概述使用Redis2.1, 2.2部署依赖spring boot的Redis配置3. redisTemplate、stringredistemplate 3.1 stringredistemplate和redistemplate的区别3 plate数据结构操作3.3 stringredredis

1. Redis配置文件3358 www.Sina.com/(remotedictionaryserver )为Redis数据库) NoSQL ),NoSQL为3358 www . 此类数据库主要具有以下特点: 非关系型、分布式、开源、水平可扩展性。

NoSQL的使用场景包括:读写数据非关系型、有效存储和访问数据key-value、高数据高并发和3http://

我以前写过,但是很少介绍了 Redis下载和安装Redis入门教程命令大全

使用Redis 2.1部署相关的依赖pom.xml

Spring Boot与redis集成方便,只需引入一个redis的启动程序依赖项。 ependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-data-redis/artifact id/使用从属2.2 spring boot的Redis配置应用程序. yml spring : # Redis相关配置redis: #数据库号database: 5 #配置redis的主机地址写localhost时,host :192.168.* * *.* * port :6379 password 3360123456 time out :5000 jedis 3360 pool 3360 #连接池中的最大aa 默认值为0。 min-idle: 50 #赋值为-1时,无限制; 如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(exhausted ) max-active: 1000 #,是等待可用连接的最长时间、单位如果超过等待时间,则直接抛出jedisconnectionexceptionmax-wait :2000

3. redisTemplate和stringredistemplateredistemplate访问的所有数据都是字节数组。 如果存储在redis中的数据是可读格式而不是字节数组,则使用redisTemplate取值将无法检索导出的数据,并生成空值。

StringRedisTemplate主要为我们提供字符串操作。 也可以将实体类等转换为json字符串,检索后将其转换为相应的对象。

3.1 StringRedisTemplate和RedisTemplate的区别两者的关系是StringRedisTemplate继承RedisTemplate。 两者的数据不一致; 这意味着StringRedisTemplate只能管理StringRedisTemplate中的数据,而RedisTemplate只能管理RedisTemplate中的数据。 RedisTemplate使用jdkserializationredisserializer,存储数据时,数据先序列化为字节数组,然后再存储在redis数据库中。 StringRedisTemplate使用StringRedisSerializer。 如果dydcjl redis数据库本来就包含字符串数据,或者要访问的数据是字符串类型数据,请使用StringRedisTemplate。

但是,如果数据是复杂的对象类型,并且不想在检索时进行任何数据转换,而希望直接从Redis检索对象,则建议使用RedisTemplate。

3.2 RedisTemplate数据结构操作redisTemplate.opsForValue (; //操作字符串redisTemplate.opsForHa

sh();//操作hashredisTemplate.opsForList();//操作listredisTemplate.opsForSet(); //操作setredisTemplate.opsForZSet();//操作有序set 3.3 StringRedisTemplate 数据结构操作 stringRedisTemplate.opsForValue().set("test", "100", 60 * 10, TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间stringRedisTemplate.boundValueOps("test").increment(-1);//val-1stringRedisTemplate.opsForValue().get("test");//根据key获取缓存中的valstringRedisTemplate.boundValueOps("test").increment(1);//val+1stringRedisTemplate.getExpire("test");//根据key获取过期时间stringRedisTemplate.getExpire("test", TimeUnit.SECONDS);//根据key获取过期时间并换算成指定单位stringRedisTemplate.delete("test");//根据key删除缓存stringRedisTemplate.hasKey("test");//检查key是否存在,返回boolean值stringRedisTemplate.opsForSet().add("test_set", "1", "2", "3");//向指定key中存放set集合stringRedisTemplate.expire("test", 1000, TimeUnit.MILLISECONDS);//设置过期时间stringRedisTemplate.opsForSet().isMember("test_set", "1");//根据key查看集合中是否存在指定数据stringRedisTemplate.opsForSet().members("test_set");//根据key获取set集合

 

4. 使用案例 4.1 redis:string RedisService.java
新建一个 RedisService,注入 StringRedisTemplate,使用 stringRedisTemplate.opsForValue() 可以获取 ValueOperations<String, String> 对象,通过该对象即可读写 redis 数据库。 @Servicepublic class RedisService { @Resource private StringRedisTemplate stringRedisTemplate; public void setString(String key, String value) { ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); valueOperations.set(key, value); } public String getString(String key) { return stringRedisTemplate.opsForValue().get(key); }} RedisController.java
编写测试类 @RestController@RequestMapping("/redis")public class RedisController { @Resource private RedisService redisService; @RequestMapping("/string") public String redisString(String key) { redisService.setString(key, "SpringBoot集成Redis"); return redisService.getString(key); }}

浏览器访问:http://localhost:8080/redis/string?key=ITGodRoad


4.2 redis:hash RedisService.java
hash 类型其实原理和 string 一样的,但是有两个 key,使用 stringRedisTemplate.opsForHash() 可以获取 HashOperations<String, Object, Object> 对象。比如我们要存储订单信息,所有订单信息都放在 order 下,针对不同用户的订单实体,可以通过用户的 id 来区分,这就相当于两个 key 了。 @Servicepublic class RedisService { @Resource private StringRedisTemplate stringRedisTemplate; public void setHash(String key, String filedKey, String value) { HashOperations<String, Object, Object> hashOperations = stringRedisTemplate.opsForHash(); hashOperations.put(key, filedKey, value); } public String getHash(String key, String filedKey) { return (String) stringRedisTemplate.opsForHash().get(key, filedKey); }} RedisController.java
编写测试类 @RestController@RequestMapping("/redis")public class RedisController { @Resource private RedisService redisService; @RequestMapping("/hash") public String redisHash(String key, String filedKey) { redisService.setHash(key, filedKey, "SpringBoot集成Redis-Hash"); return redisService.getHash(key, filedKey); }}

浏览器访问:http://localhost:8080/redis/hash?key=ITGodRoadHash&filedKey=RedisHash


4.3 redis:list RedisService.java
使用 stringRedisTemplate.opsForList() 可以获取 ListOperations<String, String> listOperations redis 列表对象,该列表是个简单的字符串列表,可以支持从左侧添加,也可以支持从右侧添加,一个列表最多包含 2 ^ 32 -1 个元素。 @Servicepublic class RedisService { @Resource private StringRedisTemplate stringRedisTemplate; public Long setList(String key, String value) { ListOperations<String, String> listOperations = stringRedisTemplate.opsForList(); return listOperations.leftPush(key, value); } public List<String> getList(String key, Long start, Long end) { return stringRedisTemplate.opsForList().range(key, start, end); }} RedisController.java
编写测试类 @RestController@RequestMapping("/redis")public class RedisController { @Resource private RedisService redisService; @RequestMapping("/list") public String redisList(String key) { redisService.setList(key, "SpringBoot集成Redis-List1"); redisService.setList(key, "SpringBoot集成Redis-List2"); redisService.setList(key, "SpringBoot集成Redis-List3"); return redisService.getList(key,0L,-1L).toString(); }}

浏览器访问:http://localhost:8080/redis/list?key=ITGodRoadList


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。