spring boot 自学笔记(四) Redis集成—Jedis
上一篇笔记Reddis集成,操作Redis使用的是RedisTemplate,但实际中还是有一大部分人习惯使用JedisPool和Jedis来操作Redis, 下面使用Jedis集成示例。
修改RedisConfig类如下:
- package com.vic.config;
- import org.apache.log4j.Logger;
- import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- /**
- *
- * @author vic
- * @desc redis config bean
- *
- */
- @Configuration
- @EnableAutoConfiguration
- @ConfigurationProperties(prefix = "spring.redis", locations = "classpath:application.properties")
- public class RedisConfig {
- private static Logger logger = Logger.getLogger(RedisConfig.class);
- private String hostName;
- private int port;
- private String password;
- private int timeout;
- @Bean
- public JedisPoolConfig getRedisConfig(){
- JedisPoolConfig config = new JedisPoolConfig();
- return config;
- }
- @Bean
- public JedisPool getJedisPool(){
- JedisPoolConfig config = getRedisConfig();
- JedisPool pool = new JedisPool(config,hostName,port,timeout,password);
- logger.info("init JredisPool ...");
- return pool;
- }
- public String getHostName() {
- return hostName;
- }
- public void setHostName(String hostName) {
- this.hostName = hostName;
- }
- public int getPort() {
- return port;
- }
- public void setPort(int port) {
- this.port = port;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getTimeout() {
- return timeout;
- }
- public void setTimeout(int timeout) {
- this.timeout = timeout;
- }
- }
因为JedisPool实例化对象,是将host,password等参数通过构造传入,所以在这里将整个RedisConfig定义为一个配置类,定义host,password等配置属性,通过spring boot属性文件自动注入。
接下来看看Service中如何使用:
修改IRedisService接口:
- /**
- *
- * @author vic
- * @desc redis service
- */
- public interface IRedisService {
- public Jedis getResource();
- public void returnResource(Jedis jedis);
- public void set(String key, String value);
- public String get(String key);
- }
RedisService实现类代码:
- package com.vic.service.impl;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.vic.service.IRedisService;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- /**
- *
- * @author vic
- * @desc resdis service
- *
- */
- @Service
- public class RedisServiceImpl implements IRedisService {
- private static Logger logger = Logger.getLogger(RedisServiceImpl.class);
- @Autowired
- private JedisPool jedisPool;
- @Override
- public Jedis getResource() {
- return jedisPool.getResource();
- }
- @SuppressWarnings("deprecation")
- @Override
- public void returnResource(Jedis jedis) {
- if(jedis != null){
- jedisPool.returnResourceObject(jedis);
- }
- }
- @Override
- public void set(String key, String value) {
- Jedis jedis=null;
- try{
- jedis = getResource();
- jedis.set(key, value);
- logger.info("Redis set success - " + key + ", value:" + value);
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + value);
- }finally{
- returnResource(jedis);
- }
- }
- @Override
- public String get(String key) {
- String result = null;
- Jedis jedis=null;
- try{
- jedis = getResource();
- result = jedis.get(key);
- logger.info("Redis get success - " + key + ", value:" + result);
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + result);
- }finally{
- returnResource(jedis);
- }
- return result;
- }
- }
JedisPool对象使用自动注入,手动获取Jedis对象进行Redis操作,ExampleController进行测试:
- @RequestMapping("/redis/set")
- public ResponseModal redisSet(@RequestParam("value")String value){
- redisService.set("name", value);
- return new ResponseModal(200, true, "success", null);
- }
- @RequestMapping("/redis/get")
- public ResponseModal redisGet(){
- String name = redisService.get("name");
- return new ResponseModal(200, true,"success",name);
- }
测试URL:http://localhost:8080/redis/set?value=vic 响应结果:
{"code":200,"success":true,"message":"success","response":null}
测试URL:http://localhost:8080/redis/get 响应结果:
{"code":200,"success":true,"message":"success","response":"vic"}
spring boot 自学笔记(四) Redis集成—Jedis的更多相关文章
- Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是 ...
- Spring Boot 学习笔记--整合Redis
1.新建Spring Boot项目 添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springfra ...
- Spring Boot 2.x 整合 Redis最佳实践
一.前言 在前面的几篇文章中简单的总结了一下Redis相关的知识.本章主要讲解一下 Spring Boot 2.0 整合 Redis.Jedis 和 Lettuce 是 Java 操作 Redis 的 ...
- Spring Boot 学习笔记(六) 整合 RESTful 参数传递
Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法
spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...
- Spring Boot 2.0 图文教程 | 集成邮件发送功能
文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...
- Spring Boot 2.x整合Redis
最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...
- Spring Boot 2.X 如何快速集成单元测试?
本文将详细介绍下使用Spring Boot 2.X 集成单元测试,对API(Controller)测试的过程. 一.实现原理 使用MockMvc发起请求,然后执行API中相应的代码,在执行的过程中使m ...
- Spring Boot学习笔记2——基本使用之最佳实践[z]
前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...
随机推荐
- Android学习系列(4)--App自适应draw9patch不失真背景
做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也是如此,代码要扩展,界面也要考虑自适应.这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1. ...
- C#实现相似QQ的隐藏浮动窗口、消息闪动
功能简单介绍 当语音客服系统登录成功进入主界面时,本聊天工具将会自己主动隐藏在左下角位置,当鼠标移动到左下角时,自己主动弹出,当鼠标移开聊天窗口时,自己主动隐藏.假设想让聊天窗口固定在桌面.仅仅要拖动 ...
- struts2 页面标签或ognl表达式取值--未完待续
一.加#号取值和不加#号取值的解说 1.s:property 标签——value属性使用事项 1)涉及问题:取值时什么时候该加#,什么时候不加? 2)介绍 <s:property value=& ...
- Servlet和Android网络交互基础(3)
在上一章中採用了最简单的创建service端代码方式,但在实际开发中一般都会採用比較成熟的框架.以下是完整的maven+spring mvc 创建service的方式 下载安装Eclipse 和jdk ...
- 了不起的 “filter(NULL IS NOT NULL)”
经常会在执行计划中看到很奇怪的"FILTER"操作,然后看对应的执行信息是"filter(NULL IS NOT NULL)". 其实这是优化器非常聪明的“短 ...
- 【Android】4.2 资源限定符和可视化选项
分类:C#.Android.VS2015:创建日期:2016-02-06 在设计界面中,所有资源都可以被限定为使用哪个国家或地区的语言.例如,将字符串资源限定为默认使用中文等. 将字符串资源限定为默认 ...
- webpack 利用Code Splitting 分批打包、按需下载
webpack中的解决方案——Code Splitting,简单来说就是按需加载(下载),如果是requireJS对应的AMD的方案中这本是在正常不过了.但是在webpack中All in one的思 ...
- 认识k_BackingField,微软自己的序列化和反序列化
事情从Json的序列化和反序列化说起. 在C#2.0的项目中,以前经常使用Json.Net实现序列化和反序列化.后来从c#3.0中开始使用新增的DataContractJsonSerializer进行 ...
- nodejs字符串操作
nodejs的字符串操作需要引入querystring对象,querystring对象的方法有: 1:querystring.stringify(“对象”,“分隔符”,“分配符”),用来将一个json ...
- GNU风格 ARM汇编语法2
.GNU汇编程序中的标号symbol(或label) 标号只能由a-z,A-Z,-,".",_等(由点.字母.数字.下划线等组成,除局部标号外,不能以数字开头)字符组成. Symb ...