Spring 整合 Redis

本贴最后更新于 2948 天前,其中的信息可能已经渤澥桑田
接口
package com.util.redis; /** _Redis工具接口_ */ public interface RedisUtils { /** _保存_ _ @param key _ 键 _ @param value _ 值 _/ public void set(String key, String value); /*_ _保存并设置存活时间_ _ @param key _ 键 _ @param value _ 值 _ @param seconds _ 存活时间,单位为秒 _/ public void set(String key, String value, Integer seconds); /*_ _根据key查询_ _ @param key _ 键 _@return 值_ / public String get(String key); /** _删除_ _ @param key _ 键 */ public void del(String key); /** _根据key设置存活时间_ _ @param key _ 键 _ @param seconds _ 存活时间,单位为秒 */ public void expire(String key, Integer seconds); } ###### 单机版实现类 package com.util.redis.impl; import org.springframework.beans.factory.annotation.Autowired; import com.util.redis.RedisUtils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; /** _Redis连接池工具类_ */ public class RedisPool implements RedisUtils { @Autowired private JedisPool jedisPool; @Override public void set(String key, String value) { Jedis jedis = this.getJedis(); jedis.set(key, value); this.releaseJedis(jedis); } @Override public void set(String key, String value, Integer seconds) { Jedis jedis = this.getJedis(); jedis.set(key, value); jedis.expire(key, seconds); this.releaseJedis(jedis); } @Override public String get(String key) { Jedis jedis = this.getJedis(); String result = jedis.get(key); this.releaseJedis(jedis); return result; } @Override public void del(String key) { Jedis jedis = this.getJedis(); jedis.del(key); this.releaseJedis(jedis); } @Override public void expire(String key, Integer seconds) { Jedis jedis = this.getJedis(); jedis.expire(key, seconds); this.releaseJedis(jedis); } /** _获取Jedis连接_ _@return Jedis连接_ / public Jedis getJedis() { return this.jedisPool.getResource(); } /_* _ 释放Jedis连接 @param jedis _jedis连接_ / public void releaseJedis(Jedis jedis) { jedis.close(); } } ###### 集群版实现类 package com.util.redis.impl; import org.springframework.beans.factory.annotation.Autowired; import com.util.redis.RedisUtils; import redis.clients.jedis.JedisCluster; /** _Redis集群工具类_ */ public class RedisCluster implements RedisUtils { @Autowired private JedisCluster jedisCluster; @Override public void set(String key, String value) { this.jedisCluster.set(key, value); } @Override public void set(String key, String value, Integer seconds) { this.jedisCluster.set(key, value); this.jedisCluster.expire(key, seconds); } @Override public String get(String key) { return this.jedisCluster.get(key); } @Override public void del(String key) { this.jedisCluster.del(key); } @Override public void expire(String key, Integer seconds) { this.jedisCluster.expire(key, seconds); } /** _ 获取JedisCluster对象 _ 可以直接使用它来进行redis操作 @return JedisCluster对象 */ public JedisCluster getJedisCluster() { return jedisCluster; } } ###### redis.properties #redis单机版信息 redis.host=192.168.37.131 redis.port=6379 #redis集群版信息 cluster.host1=192.168.37.131 cluster.port1=7001 cluster.host2=192.168.37.131 cluster.port2=7002 cluster.host3=192.168.37.131 cluster.port3=7003 cluster.host4=192.168.37.131 cluster.port4=7004 cluster.host5=192.168.37.131 cluster.port5=7005 cluster.host6=192.168.37.131 cluster.port6=7006

applicationContext-redis.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 两种方案:使用jedis连接池(单机版)和jedis集群 --> <!-- 注意:如果在注入工具类的时候是按类型注入的话,那么不使用的工具类必须注释掉--> <!-- 配置 读取外部properties文件 --> <context:property-placeholder location="classpath:resource/*.properties" /> <!-- 单机版 --> <!-- 配置jedis连接池 --> <bean class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="${redis.host}" /> <constructor-arg name="port" value="${redis.port}" /> </bean> <!-- 配置单机版工具类 --> <bean class="com.util.redis.impl.RedisPool" /> <!-- 集群版 --> <!-- 配置jedis集群 --> <bean class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host1}" /> <constructor-arg name="port" value="${cluster.port1}" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host2}" /> <constructor-arg name="port" value="${cluster.port2}" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host3}" /> <constructor-arg name="port" value="${cluster.port3}" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host4}" /> <constructor-arg name="port" value="${cluster.port4}" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host5}" /> <constructor-arg name="port" value="${cluster.port5}" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${cluster.host6}" /> <constructor-arg name="port" value="${cluster.port6}" /> </bean> </set> </constructor-arg> </bean> <!-- 配置集群版工具类 --> <bean class="com.util.redis.impl.RedisCluster" /> </beans>

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    89 引用 • 150 回帖 • 1 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 3 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 686 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 7 关注
  • OneDrive
    2 引用
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 184 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 367 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 5 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    186 引用 • 1021 回帖 • 1 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 31 回帖
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖
  • 自由行
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 5 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 34 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    301 引用 • 768 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10211 引用 • 46388 回帖 • 63 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 649 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2389 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 8 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    100 引用 • 905 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖