redis与spring整合使用的步骤实例教程

前言

做过大型软件系统的同学都知道,随着系统数据越来越庞大,越来越复杂,随之带来的问题就是系统性能越来越差,尤其是频繁操作数据库带来的性能损耗更为严重。很多业绩大牛为此提出了众多的解决方案和开发了很多框架以优化这种频繁操作数据库所带来的性能损耗,其中,尤为突出的两个缓存服务器是Memcached和Redis。今天,我们不讲Memcached和Redis本身,这里主要为大家介绍Spring与Redis整合使用的相关内容,下面话不多说了,来一起看看详细的介绍吧。

方法如下

第一步,在项目中加入redis的pom代码:

<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.6.0</version>
 </dependency>

第二步,spring中加载redis配置文件:applicationContext-redis.xml,内容如下

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
 <property name="maxTotal" value="${redis.maxTotal}" />
</bean>

 <bean class="redis.clients.jedis.ShardedJedisPool">
 <constructor-arg index="0" ref="poolConfig" />
 <constructor-arg index="1">
  <list>
  <bean class="redis.clients.jedis.JedisShardInfo">
   <constructor-arg index="0" value="${redis.node1.host}" />
   <constructor-arg index="1" value="${redis.node1.port}" />
  </bean>
  </list>
 </constructor-arg>
 </bean>
</beans>

第三步,编写连接redis服务端的属性文件:redis.properties

redis.maxTotal=100
redis.node1.host=127.0.0.1
redis.node1.port=6379

第四步,编写redis的相关操作方法类,Function类和RedisService类:

Funcrion类:

package xx.service;
/**
 * 为了抽取相同的操作代码
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017年12月5日 下午9:02:44
 */
public interface Function<T,E> {
 public T callback(E e);
}

RedisService类:

package com.taotao.common.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * redis的相关操作
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017年12月3日 下午2:11:47
 */
@Service
public class RedisService {

 @Autowired(required=false) //需要再注入进去
 private ShardedJedisPool shardedJedisPool;

 private <T> T execute(Function<T, ShardedJedis> fun){
 ShardedJedis shardedJedis = null;
 try {
  // 从连接池中获取到jedis分片对象
  shardedJedis = shardedJedisPool.getResource();
  // 从redis中获取数据
  return fun.callback(shardedJedis);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (null != shardedJedis) {
  // 关闭,检测连接是否有效,有效则放回到连接池中,无效则重置状态
  shardedJedis.close();
  }
 }
 return null;
 }

 /**
 * 执行set操作
 * @param key
 * @param value
 * @return
 */
 public String set(final String key,final String value){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.set(key, value);
  }
 });
 }

 /**
 * 执行set操作,并设置生存时间,单位为秒
 * @param key
 * @param value
 * @param seconds
 * @return
 */
 public String set(final String key,final String value,final Integer seconds){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  String str =e.set(key, value);
  e.expire(key, seconds);
  return str;
  }
 });
 }

 /**
 * 执行get操作
 * @param key
 * @return
 */
 public String get(final String key){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.get(key);
  }
 });
 }

 /**
 * 执行set操作
 * @param key
 * @return
 */
 public Long del(final String key){
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.del(key);
  }
 });
 }

 /**
 * 设置生存时间,单位为秒
 * @param key
 * @param seconds
 * @return
 */
 public Long expire(final String key, final Integer seconds) {
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.expire(key, seconds);
  }
 });
 }
}

第五步,启动redis服务,redis-server.exe,双击打开:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Redis整合Spring结合使用缓存实例

    一.Redis介绍 什么是Redis?       redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是

  • spring整合redis缓存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用

    maven项目中在pom.xml中依赖2个jar包,其他的spring的jar包省略: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>org.springfra

  • 详解redis与spring的整合(使用缓存)

    1.实现目标 通过redis缓存数据.(目的不是加快查询的速度,而是减少数据库的负担) 2.所需jar包 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错.因为commons-pooljar的目录根据版本的变化,目录结构会变.前面的版本是org.apache.pool,而后面的版本是org.apache.pool2... 3.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的val

  • 详解java之redis篇(spring-data-redis整合)

    1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma

  • Spring与Mybatis基于注解整合Redis的方法

    基于这段时间折腾redis遇到了各种问题,想着整理一下.本文主要介绍基于Spring+Mybatis以注解的形式整合Redis.废话少说,进入正题. 首先准备Redis,我下的是Windows版,下载后直接启动redis-server就行了,见下图: 一,先上jar包 二,创建实体类 package com.sl.user.vo; import java.io.Serializable; import com.fasterxml.jackson.databind.PropertyNamingSt

  • Spring整合Redis完整实例代码

    做过大型软件系统的同学都知道,随着系统数据越来越庞大,越来越复杂,随之带来的问题就是系统性能越来越差,尤其是频繁操作数据库带来的性能损耗更为严重.很多业绩大牛为此提出了众多的解决方案和开发了很多框架以优化这种频繁操作数据库所带来的性能损耗,其中,尤为突出的两个缓存服务器是Memcached和Redis.今天,我们不讲Memcached和Redis本身,这里主要为大家介绍如何使spring与Redis整合. 1.pom构建 <project xmlns="http://maven.apach

  • spring整合redis以及使用RedisTemplate的方法

    需要的jar包 spring-data-Redis-1.6.2.RELEASE.jar jedis-2.7.2.jar(依赖 commons-pool2-2.3.jar) commons-pool2-2.3.jar spring-redis.xml 配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/sc

  • Spring基于注解整合Redis完整实例

    在<Redis之--Spring整合Redis>一文中,向大家介绍了如何将spring与Redis整合起来,但不是基于注解的形式,很多同学都希望能够通过注解的形式来简单的将Spring与Redis整合起来,这样,在使用的时候,只需要在相应的方法上加上注解,便可以使方法轻松的调用Redis的缓存.那么今天就来向大家介绍如何用基于注解的形式来整合Spring与Redis. 一.项目搭建 今天,我们不使用hibernate来操作数据库了,我们今天选择的框架是: Spring4(包括mvc.conte

  • redis与spring整合使用的步骤实例教程

    前言 做过大型软件系统的同学都知道,随着系统数据越来越庞大,越来越复杂,随之带来的问题就是系统性能越来越差,尤其是频繁操作数据库带来的性能损耗更为严重.很多业绩大牛为此提出了众多的解决方案和开发了很多框架以优化这种频繁操作数据库所带来的性能损耗,其中,尤为突出的两个缓存服务器是Memcached和Redis.今天,我们不讲Memcached和Redis本身,这里主要为大家介绍Spring与Redis整合使用的相关内容,下面话不多说了,来一起看看详细的介绍吧. 方法如下 第一步,在项目中加入red

  • Spring整合Mybatis详细步骤

    一.基本介绍 所谓的Spring整合Mybatis其实说白了就是将mybatis的加载过程全权交给Spring托管,不再需要加载配置工具等一些操作,而具体的dao层操作依旧是使用mybatis去操作数据库. 1.1 mybatis使用步骤: 1.首先要写一个mybatis-config.xml核心配置文件,配置基本的环境支持:数据源.驱动.url.username.password- 2.然后编写mybatisUtil工具类,先以IO流的形式加载mybatis-config.xml资源Resou

  • Spring整合Quartz开发代码实例

    我们使用Spring整合Quartz开发,本实例采用数据库模式的demo. 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" xmlns

  • Spring整合CXF webservice restful实例详解

    webservice restful接口跟soap协议的接口实现大同小异,只是在提供服务的类/接口的注解上存在差异,具体看下面的代码,然后自己对比下就可以了. 用到的基础类 User.java @XmlRootElement(name="User") public class User { private String userName; private String sex; private int age; public User(String userName, String s

  • Yii2 rbac权限控制操作步骤实例教程

    本篇的主题是 rbac权限控制的详细操作步骤,注意是操作步骤哦,关于配置与rbac的搭建,我们在yii2搭建完美后台并实现rbac权限控制实例教程说的再清楚不过了. 但是,在很多人的反馈下,说是完全按照本主的步骤来的,丝毫不差,为啥菜单不显示,为啥不显示呢不显示?艾玛,最终在群里帮人调试的时候找到原因了,si分的不容易啊.原因就是你学会了搭建没学会操作啊,啊,啊,我们今天就来详细的说说这rbac的权限控制具体怎么操作!当然,大前提下是你已经按照我们上文成功搭建一套完美的后台并实现了rbac权限控

  • spring boot集成rabbitmq的实例教程

    一.RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿里巴巴公司的,现已经转让给apache). 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息.具体过程如下: 从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息

  • spring整合redis消息监听通知使用的实现示例

    目录 问题引入 1.1 过期问题描述 1.2 常用解决方案分析 1.3.整合SpringData Redis开发 spring整合redis监听消息 1. 配置监听redis消息 2 测试消息 结合redis的key失效机制和消息完成过期优惠券处理 1 模拟过期代金卷案例 2 配置redis中key失效的消息监听 3 接收失效消息完成过期代金卷处理 问题引入 在电商系统中,秒杀,抢购,红包优惠卷等操作,一般都会设置时间限制,比如订单15分钟不付款自动关闭,红包有效期24小时等等.那对于这种需求最

  • spring整合redis实现数据缓存的实例代码

    数据缓存原因:有些数据比较多,如果每次访问都要进行查询,无疑给数据库带来太大的负担,将一些庞大的查询数据并且更新次数较少的数据存入redis,能为系统的性能带来良好的提升. 业务逻辑思路:登入系统,访问数据时,检查redis是否有缓存,有则直接从redis中提取,没有则从数据库查询出,并存入redis中做缓存. 为什么要用redis做缓存: (1)异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录. (2)支持丰富的数据类型:Redis支持最大多数开发人员已经知道

  • springboot与redis的简单整合实例

    前言 Redis是一个缓存.消息代理和功能丰富的键值存储.StringBoot提供了基本的自动配置.本文记录一下springboot与redis的简单整合实例 官方文档:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/ 前期准备 首先我们要有一个Redis服务,由于我没有Linux环境,为了方便搭建项目,直接在Windows下安装,参考这篇博客:Windows下安装Redis服务 安装步骤:一直

随机推荐