SpringBoot中使用Redis的完整实例

网友投稿 408 2023-04-16

SpringBoot中使用Redis的完整实例

一.在SpringBoot中使用Redis的一套军体拳

1.导包

org.springframework.boot

spring-boot-starter-data-redis

2.2.0.RELEASE

2.导入工具类

package com.cbsd.util;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.HashOperations;

import org.springframework.data.redis.core.ListOperations;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.core.SetOperations;

import org.springframework.data.redis.core.ValueOperations;

import org.springframework.data.redis.core.ZSetOperations;

import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;

/**

* redisTemplate封装

*

* @author gxp

*/

@Component

public class RedisUtil {

// private Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired

private RedisTemplate redisTemplate;

@Autowired

private ValueOperations valueOperations;

@SuppressWarnings("unused")

@Autowired

private HashOperations hashOperations;

@SuppressWarnings("unused")

@Autowired

private ListOperations listOperations;

@SuppressWarnings("unused")

@Autowired

private SetOperations setOperations;

@SuppressWarnings("unused")

@Autowired

private ZSetOperations zSetOperations;

/** 默认过期时长,单位:秒 */

public final static long DEFAULT_EXPIRE = 60 * 60 * 24;

/** 不设置过期时长 */

public final static long NOT_EXPIRE = -1;

public void set(String key, Object value, long expire){

valueOperations.set(key, toJson(value));

if(expire != NOT_EXPIRE){

redisTemplate.expire(key, expire, TimeUnit.SECONDS);

}

}

public void set(String key, Object value){

set(key, value, DEFAULT_EXPIRE);

}

public T get(String key, Class clazz, long expire) {

String value = valueOperations.get(key);

if(expire != NOT_EXPIRE){

redisTemplate.expire(key, expire, TimeUnit.SECONDS);

}

return value == null ? null : fromJson(value, clazz);

}

public T get(String key, Class clazz) {

return get(key, clazz, NOT_EXPIRE);

}

public String get(String key, long expire) {

String value = valueOperations.get(key);

if(expire != NOT_EXPIRE){

redisTemplate.expire(key, expire, TimeUnit.SECONDS);

}

return value;

}

public String get(String key) {

return get(key, NOT_EXPIRE);

}

public void delete(String key) {

redisTemplate.delete(key);

}

/**

* Object转成JSON数据

*/

private String toJson(Object object){

if(object instanceof Integer || object instanceof Long || object instanceof Float ||

object instanceof Double || object instanceof Boolean || object instanceof String){

return String.valueOf(object);

}

return JSON.toJSONString(object);

}

/**

* JSON数据,转成Object

*/

private T fromJson(String json, Class clazz){

return JSON.parseObject(json, clazz);

}

}

3.在SpringBoot的配置文件中配置redis的服务器

(1).yml配置文件中

spring:

redis:

open: true # 是否开启redis缓存 true开启 false关闭

database: 0

host: redis服务器地址

port: redis服务器端口号

password: redis服务器密码 # 密码(默认为空)

timeout: 15000 # 连接超时时长(毫秒)

jedis:

pool:

max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)

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

max-idle: 10 # 连接池中的最大空闲连接

min-idle: 5 # 连接池中的最小空闲连接

(2).properties配置文件中

#### 连接redis非关系型数据库配置

spring.redis.host=redis服务器地址

spring.redis.password=redis服务器密码,默认为空

spring.redis.port=redis服务器端口号

spring.redis.timeout=20000 //超时时间

spring.redis.database=6

spring.redis.lettuce.pool.min-idle=0

spring.redis.lettuce.pool.max-idle=3000

spring.redis.lettuce.pool.max-wait=10000

spring.redis.lettuce.pool.max-active=3000

4.使用

还是补上使用的方法吧

1.存入数据的方法

/**

*

* @param key 同理map的key,可以根据对应的key取到对应的值

* @param value 要存入redis的数据

* @param expire 超时时间,就是数据会在redis里面存多久,可以不传,就是永不超时

*/

public void set(String key, Object value, long expire){

valueOperations.set(key, toJson(value));

if(expire != NOT_EXPIRE){

redisTemplate.expire(key, expire, TimeUnit.SECONDS);

}

}

2.取出数据的方法

/**

*

* @param key 存入数据时,设置的key,根据可以取到对应的数据

* @return

*/

public String get(String key) {

return get(key, NOT_EXPIRE);

}

3.还有个删除

就是调用delete方法,跟get方法一样传一个key过去,就可以删除对应的数据了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:uniapp开发app框架:一站式跨平台开发解决方案
下一篇:一站式平台,助力app开发者快速搭建开发环境
相关文章

 发表评论

暂时没有评论,来抢沙发吧~