java 集成redis_Springboot集成Redis看这篇就够了

前言

小编最近打算在新的项目里面使用redis的功能,网上查了很多资料,最后集成了一个通俗易懂,并且可以任意类型value的功能。以下是思路

首先,需要导入的依赖,大家自己看着加

org.springframework.boot

spring-boot-starter-data-redis

org.springframework.boot

spring-boot-starter-web

com.alibaba

fastjson

1.2.38

org.springframework.boot

spring-boot-starter-test

test

依赖导入后需要配置下application.properties文件,个人觉得yml文件很乱,看不习惯,使用采用properties文件

#Redis

#spring.redis.host=127.0.0.1

redis.host=127.0.0.1

## Redis服务器连接端口

redis.port=6379

## 连接超时时间(毫秒)

redis.timeout=3

## Redis服务器连接密码(默认为空)

redis.password=135246

## 连接池中的最大连接数

redis.poolMaxTotal=10

## 连接池中的最大空闲连接

redis.poolMaxIdle=10

## 连接池最大阻塞等待时间(使用负值表示没有限制)

redis.poolMaxWait=3

这里需要设计下redis的密码,打开客户端

redis 127.0.0.1:6379> config set requirepass “你的密码”

验证密码

redis 127.0.0.1:6379> auth “你的密码”

这一步很重要,不设密码在后面的程序会抛个没有密码的异常,导致失败

然后 就可以直接实现RedisTemple这个类来操作Redis了,但是这里我们使用的是SringRedisTemple来操作Redis,大家可以认为这个是RedisTemple的实现类,表示都是类型;

@Autowired

StringRedisTemplate stringRedisTemplate;

@Test

public void test() {

// 保存字符串

stringRedisTemplate.opsForValue().set("aaa", "111");

}

打开redis的客户端,查看aaa这个key,可以确认看到111这个value。表示我们存入的key已经成功了。

fd65156ff630

image.png

接下来,redis有一个问题,就是在存对象的时候,会序列化成2进制文件。但是我们需要的是存的json格式的文件,这样方便我们测试,调试。而一般解决这个问题的方法,是需要在配置类中对这个类进行一些相关的配置,但是这样对每个类都要配置比较麻烦。

这里我们采用别的方法,存的时候采用阿里巴巴的json对对象转化成json的String类型,然后存进去,取得时候需要传入转换成的类类型。具体方法看下面

RedusTempleService.java

@Service

public class RedisTemplateService {

@Autowired

StringRedisTemplate stringRedisTemplate;

public boolean set(String key ,T value){

try {

//任意类型转换成String

String val = beanToString(value);

if(val==null||val.length()<=0){

return false;

}

stringRedisTemplate.opsForValue().set(key,val);

return true;

}catch (Exception e){

return false;

}

}

public T get(String key,Class clazz){

try {

String value = stringRedisTemplate.opsForValue().get(key);

return stringToBean(value,clazz);

}catch (Exception e){

return null ;

}

}

@SuppressWarnings("unchecked")

private T stringToBean(String value, Class clazz) {

if(value==null||value.length()<=0||clazz==null){

return null;

}

if(clazz ==int.class ||clazz==Integer.class){

return (T)Integer.valueOf(value);

}

else if(clazz==long.class||clazz==Long.class){

return (T)Long.valueOf(value);

}

else if(clazz==String.class){

return (T)value;

}else {

return JSON.toJavaObject(JSON.parseObject(value),clazz);

}

}

/**

*

* @param Every T values

* @param T 任意类型

* @return String

*/

private String beanToString(T value) {

if(value==null){

return null;

}

Class > clazz = value.getClass();

if(clazz==int.class||clazz==Integer.class){

return ""+value;

}

else if(clazz==long.class||clazz==Long.class){

return ""+value;

}

else if(clazz==String.class){

return (String)value;

}else {

return JSON.toJSONString(value);

}

}

}

测试代码

@Autowired

RedisTemplateService redisTemplateService;

@Test

public void redisTest(){

User user = new User();

user.setId(11);

user.setUsername("test");

user.setPassword("hello redis");

redisTemplateService.set("key1",user);

User us = redisTemplateService.get("key1",User.class);

System.out.println(us.getUsername()+": "+us.getPassword());

}

测试结果如下

fd65156ff630

image.png

fd65156ff630

image.png

这样,我们就很方便的对redis进行操作,当然这也只是入门级别的应用,后续会持续更新。

fd65156ff630

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值