Spring 整合 Redis

本贴最后更新于 2885 天前,其中的信息可能已经渤澥桑田
接口
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>

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 3 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 1 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 634 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 565 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖 • 1 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 255 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 35 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 3 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 2 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖 • 1 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 401 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    67 引用 • 114 回帖 • 186 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 250 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 2 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 608 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 657 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • 职场

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

    127 引用 • 1708 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    64 引用 • 134 回帖 • 734 关注
  • OneDrive
    2 引用 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 80 关注