上一篇笔记Reddis集成,操作Redis使用的是RedisTemplate,但实际中还是有一大部分人习惯使用JedisPool和Jedis来操作Redis, 下面使用Jedis集成示例。

修改RedisConfig类如下:

  1. package com.vic.config;
  2. import org.apache.log4j.Logger;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.boot.context.properties.ConfigurationProperties;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import redis.clients.jedis.JedisPool;
  8. import redis.clients.jedis.JedisPoolConfig;
  9. /**
  10. *
  11. * @author vic
  12. * @desc redis config bean
  13. *
  14. */
  15. @Configuration
  16. @EnableAutoConfiguration
  17. @ConfigurationProperties(prefix = "spring.redis", locations = "classpath:application.properties")
  18. public class RedisConfig {
  19. private static Logger logger = Logger.getLogger(RedisConfig.class);
  20. private String hostName;
  21. private int port;
  22. private String password;
  23. private int timeout;
  24. @Bean
  25. public JedisPoolConfig getRedisConfig(){
  26. JedisPoolConfig config = new JedisPoolConfig();
  27. return config;
  28. }
  29. @Bean
  30. public JedisPool getJedisPool(){
  31. JedisPoolConfig config = getRedisConfig();
  32. JedisPool pool = new JedisPool(config,hostName,port,timeout,password);
  33. logger.info("init JredisPool ...");
  34. return pool;
  35. }
  36. public String getHostName() {
  37. return hostName;
  38. }
  39. public void setHostName(String hostName) {
  40. this.hostName = hostName;
  41. }
  42. public int getPort() {
  43. return port;
  44. }
  45. public void setPort(int port) {
  46. this.port = port;
  47. }
  48. public String getPassword() {
  49. return password;
  50. }
  51. public void setPassword(String password) {
  52. this.password = password;
  53. }
  54. public int getTimeout() {
  55. return timeout;
  56. }
  57. public void setTimeout(int timeout) {
  58. this.timeout = timeout;
  59. }
  60. }

因为JedisPool实例化对象,是将host,password等参数通过构造传入,所以在这里将整个RedisConfig定义为一个配置类,定义host,password等配置属性,通过spring boot属性文件自动注入。

接下来看看Service中如何使用:

修改IRedisService接口:

  1. /**
  2. *
  3. * @author vic
  4. * @desc redis service
  5. */
  6. public interface IRedisService {
  7. public Jedis getResource();
  8. public void returnResource(Jedis jedis);
  9. public void set(String key, String value);
  10. public String get(String key);
  11. }

RedisService实现类代码:

  1. package com.vic.service.impl;
  2. import org.apache.log4j.Logger;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import com.vic.service.IRedisService;
  6. import redis.clients.jedis.Jedis;
  7. import redis.clients.jedis.JedisPool;
  8. /**
  9. *
  10. * @author vic
  11. * @desc resdis service
  12. *
  13. */
  14. @Service
  15. public class RedisServiceImpl implements IRedisService {
  16. private static Logger logger = Logger.getLogger(RedisServiceImpl.class);
  17. @Autowired
  18. private JedisPool jedisPool;
  19. @Override
  20. public Jedis getResource() {
  21. return jedisPool.getResource();
  22. }
  23. @SuppressWarnings("deprecation")
  24. @Override
  25. public void returnResource(Jedis jedis) {
  26. if(jedis != null){
  27. jedisPool.returnResourceObject(jedis);
  28. }
  29. }
  30. @Override
  31. public void set(String key, String value) {
  32. Jedis jedis=null;
  33. try{
  34. jedis = getResource();
  35. jedis.set(key, value);
  36. logger.info("Redis set success - " + key + ", value:" + value);
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + value);
  40. }finally{
  41. returnResource(jedis);
  42. }
  43. }
  44. @Override
  45. public String get(String key) {
  46. String result = null;
  47. Jedis jedis=null;
  48. try{
  49. jedis = getResource();
  50. result = jedis.get(key);
  51. logger.info("Redis get success - " + key + ", value:" + result);
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. logger.error("Redis set error: "+ e.getMessage() +" - " + key + ", value:" + result);
  55. }finally{
  56. returnResource(jedis);
  57. }
  58. return result;
  59. }
  60. }

JedisPool对象使用自动注入,手动获取Jedis对象进行Redis操作,ExampleController进行测试:

  1. @RequestMapping("/redis/set")
  2. public ResponseModal redisSet(@RequestParam("value")String value){
  3. redisService.set("name", value);
  4. return new ResponseModal(200, true, "success", null);
  5. }
  6. @RequestMapping("/redis/get")
  7. public ResponseModal redisGet(){
  8. String name = redisService.get("name");
  9. return new ResponseModal(200, true,"success",name);
  10. }

测试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的更多相关文章

  1. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

    一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是 ...

  2. Spring Boot 学习笔记--整合Redis

    1.新建Spring Boot项目 添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springfra ...

  3. Spring Boot 2.x 整合 Redis最佳实践

    一.前言 在前面的几篇文章中简单的总结了一下Redis相关的知识.本章主要讲解一下 Spring Boot 2.0 整合 Redis.Jedis 和 Lettuce 是 Java 操作 Redis 的 ...

  4. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  5. spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法

    spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud ...

  6. Spring Boot 2.0 图文教程 | 集成邮件发送功能

    文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...

  7. Spring Boot 2.x整合Redis

    最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...

  8. Spring Boot 2.X 如何快速集成单元测试?

    本文将详细介绍下使用Spring Boot 2.X 集成单元测试,对API(Controller)测试的过程. 一.实现原理 使用MockMvc发起请求,然后执行API中相应的代码,在执行的过程中使m ...

  9. Spring Boot学习笔记2——基本使用之最佳实践[z]

    前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...

随机推荐

  1. Spring MVC+Mybatis 执行存储过程,使用Map进行参数的传递

    研究了一天mybatis如何执行存储过程,基本了解了ORM的设计思想,在map层面进行对象关系映射有两种思路. 根据不同的业务使用不同的思路: 一.实体类和数据库映射,就是将数据库中的字段和java实 ...

  2. 转multicast vs broadcast

    转自:http://blog.csdn.net/bloghome/article/details/4682984 一.multicast概述:   多媒体应用集成了声音.图形.动画.文本以及视频,这种 ...

  3. PS_Form个性化选择Block自动查询和查询条件排序实现(案例)

    2014-06-01 BaoXinjian

  4. C/S程序的一般流程和基本socket函数

    一.基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的 ...

  5. sql server中bit字段实现取反操作

    update Fct_StockMove set Disabled=Disabled^1 WHERE MoveId='DCE268E0-2CB3-4D17-AC4E-0046FB459CAD'; 1. ...

  6. NPOI之Excel——自动筛选、数字格式

    设置Excel的自动筛选功能 最新导出数据需要使用Excel的筛选功能,网上多方查找,终于在一个繁体的网站上找到了方法,呃,这个网站还是Java的,讲的是POI,不过.NET的NPOI也就一样用了. ...

  7. windows环境下VS2008编译程序在有些电脑上执行不了的问题

    近期遇到一种情况,在windows下.用vs2008编译程序,在本机(XP系统)能够执行,但放在别的系统上执行不了.这样的情况是因为执行库在别的系统上没有,或许能够安装执行库能解决问题.可是,这样似乎 ...

  8. GNU的strong symbol和weak symbol

    首先,同样的原型的两个函数在连个不同的c文件中都有定义,把这两个c文件编译.连接在一起,也没有什么错误.原因就是因为,gcc中有一个strong symbol和weak symbol的概念.默认函数定 ...

  9. [k8s]通过svc来访问集群podhttp://api:8080/api/v1/namespaces/default/services/mynginx/proxy/

    以往的套路是,安装完成k8s集群后-->安装dns-->安装ingress以便外面访问(或者映射nodeport方式) 如果你不想做任何关于ingress/nodeport一些操作.想通过 ...

  10. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...