springboot集成redis

先简单介绍下redis:

redis以字典结构存储数据,允许其他应用通过TCP协议读写字典中的内容。作为一个高性能的key-value数据库具有多样的数据模型、持久化与主从同步的特征。

redis有个很重要的特点是它可以实现持久化数据,能通过使用rdb快照或者aof的日志方式两种方式实现数据持久化。前者是将内存中的数据不断写入磁盘,性能较高,但可能引起一定程度的数据丢失;后者则是记录每次更新的日志,性能较低,但无数据丢失情况发生。

目前,redis支持包含字符串类型、散列类型、列表类型、集合类型、有序集合类型在内的键值数据类型。如今,越来越多的人将redis用作缓存、队列系统等。

以下是springboot集成redis的java代码实现,希望对你有所帮助:

//application.properties
//添加redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
#redis配置
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接超时时间(毫秒)
spring.redis.timeout=5000

 

//一个类加上@Service注解后,将自动注册到Spring容器;

//@Component、@Repository、@Controller注解也有类似功能

@Service
public class RedisService {

    private final RedisDao redisDao;
    @Autowired
    public RedisService(RedisDao redisDao) {
        this.redisDao = redisDao;
    }

    public Boolean add(String id,String name) {
        return redisDao.cacheValue(id, name,-1);
    }

    public Boolean del(String id) {
        return redisDao.removeValue(id);
    }

    public String find(String id) {
        return redisDao.getValue(id);
    }
}
//dao层,记得加上@Repository注解,将RedisDao注入给Service
@Repository
public class RedisDao {
    /**
     * 日志记录
     */
    private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());

    private final RedisTemplate<String, String> redisTemplate;
    @Autowired
    public RedisDao(RedisTemplate<String,String> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    /**
     * 缓存数据
     * @param id 不为空
     * @param name
     * @param time 设置过期时间
     * @return
     */
    public boolean cacheValue(String id, String name, long time) {
        try {
            ValueOperations<String, String> ops = redisTemplate.opsForValue();
            ops.set(id, name);
            if (time > 0) {
                redisTemplate.expire(id, time, TimeUnit.SECONDS);
            }
            return true;
        } catch (Throwable t) {
            LOGGER.error("缓存[" + id + "]失败, value[" + name + "]", t);
        }
        return false;
    }

    /**
     * 判断缓存数据是否存在
     * @param id
     * @return
     */
    public boolean containsKey(String id) {
        try {
            return redisTemplate.hasKey(id);
        } catch (Throwable t) {
            LOGGER.error("不存在该key[" + id + ", Codeor[" + t + "]");
        }
        return false;
    }

    /**
     * 查询缓存数据
     *
     * @param id
     * @return string
     */
    public String getValue(String id) {
        try {
            ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
            return valueOps.get(id);
        } catch (Throwable t) {
            LOGGER.error("查询失败[" + id + ", Codeor[" + t + "]");
        }
        return null;
    }

    /**
     * 删除缓存数据
     *
     * @param id
     * @return boolean
     */
    public boolean removeValue(String id) {
        try {
            redisTemplate.delete(id);
            return true;
        } catch (Throwable t) {
            LOGGER.error("删除失败id[" + id + ", Codeor[" + t + "]");
        }
        return false;
    }
}
//@RestController为@ResponseBody和@Controller的组合注解
@RestController
public class RedisController {
    @Autowired
    private RedisService redisService;

    @RequestMapping(value = "/hey", method = RequestMethod.GET)
    public String hello() {
        return "morning";
    }

    @RequestMapping(value = "/add/{id}/{name}", method = RequestMethod.GET)
    public Boolean add( @PathVariable("id") String id,@PathVariable("name") String name) {
        return redisService.add(id,name);
    }

    @RequestMapping(value = "/del/{id}", method = RequestMethod.GET)
    public Boolean del(@PathVariable("id") String id) {
        return redisService.del(id);
    }

    @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
    public String find(@PathVariable("id") String id) {
        return redisService.find(id);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值