`

redis 整合开发三(Java 开发)

 
阅读更多

一、封装redis的操作。编写RedisUtil.java,也可以不做封装直接使用redisTemplate对象。

package com.mywind.eemp.utils.database;

import org.apache.log4j.Logger;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;

import java.io.Serializable;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * Created by A03742 on 2017-07-17.
 */

public class RedisUtil {

    //redis 操作属性
public RedisTemplate redisTemplate;

    public void setRedisTemplate(RedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

    public Logger log = Logger.getLogger(RedisUtil.class.getName());

    /**
     * 设置字符串到Redis缓存
     *
     * @param key        * @param value      */
public boolean setStringValue(String key, String value) {
        return setStringValue(key, value, -1);
    }

    /**
     * 设置字符串到Redis缓存,设置过期时间
     *
     * @param key        * @param value      * @param time  失效时间
     */
public boolean setStringValue(String key, String value, long time) {
        try {
            ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
            valueOps.set(key, value);
            if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS);
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + value + "]", t);
        }
        return false;

    }

    /**
     * 从redis 缓存获取字符串值
     *
     * @param key      * @return String值
     */
public String getStringValue(String key) {
        try {
            ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
            return valueOps.get(key);
        } catch (Throwable t) {
            log.error("获取缓存失败key[" + key + ", error[" + t + "]");
        }
        return null;
    }


    /**
     * 设置字符串到Redis缓存
     *
     * @param key        * @param value      */
public boolean setIntValue(String key, int value) {
        return setIntValue(key, value, -1);
    }

    /**
     * 设置字符串到Redis缓存,设置过期时间
     *
     * @param key        * @param value      * @param time  失效时间 单位:秒
     */
public boolean setIntValue(String key, int value, long time) {
        try {
            ValueOperations<String, Integer> valueOps = redisTemplate.opsForValue();
            valueOps.set(key, value);
            if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS);
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + value + "]", t);
        }
        return false;
    }

    /**
     * 从redis 缓存获取字符串值
     *
     * @param key      * @return String值
     */
public Integer getIntValue(String key) {
        try {
            ValueOperations<String, Integer> valueOps = redisTemplate.opsForValue();
            return valueOps.get(key);
        } catch (Throwable t) {
            log.error("获取缓存失败key[" + key + ", error[" + t + "]");
        }
        return null;
    }


    /**
     * 设置double到Redis缓存
     *
     * @param key        * @param value      */
public boolean setDoubleValue(String key, double value) {
        return setDoubleValue(key, value, -1);
    }

    /**
     * 设置double到Redis缓存,设置过期时间
     *
     * @param key        * @param value      * @param time  失效时间 单位:秒
     */
public boolean setDoubleValue(String key, double value, long time) {
        try {
            ValueOperations<String, Double> valueOps = redisTemplate.opsForValue();
            valueOps.set(key, value);
            if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS);
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + value + "]", t);
        }
        return false;
    }

    /**
     * 从redis 缓存获取Double值
     *
     * @param key      * @return String值
     */
public Double getDoubleValue(String key) {
        try {
            ValueOperations<String, Double> valueOps = redisTemplate.opsForValue();
            return valueOps.get(key);
        } catch (Throwable t) {
            log.error("获取缓存失败key[" + key + ", error[" + t + "]");
        }
        return null;
    }

    /**
     * 设置 list到缓存
     *
     * @param key       * @param list      * @return 布尔型 true:成功 false:失败
     */
public boolean setList(String key, List list) {
        return setList(key, list, -1);
    }

    /**
     * 设置 list到缓存
     *
     * @param key        * @param value      * @param time  失效时间 秒
     * @return 布尔型 true:成功 false:失败
     */
public boolean setList(String key, List value, long time) {

        try {
            ListOperations listOps = redisTemplate.opsForList();
            listOps.rightPushAll(key, value);
            if (time > 0) {
                redisTemplate.expire(key, time, TimeUnit.SECONDS);
            }
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + value + "]", t);
        }
        return false;
    }


    /**
     * 获取list 的大小
     *
     * @param key      * @return long list大小
     */
public long getListSize(String key) {
        try {
            ListOperations<String, String> listOps = redisTemplate.opsForList();
            return listOps.size(key);
        } catch (Throwable t) {
            log.error("获取list长度失败key[" + key + "], error[" + t + "]");
        }
        return 0;
    }

    /**
     * 获取List 对象
     *
     * @param key        * @param start 开始下标
     * @param end   结束下标
     * @return List
     */
public List getList(String key, long start, long end) {
        try {
            ListOperations<String, Serializable> listOps = redisTemplate.opsForList();
            return listOps.range(key, start, end);
        } catch (Throwable t) {
            log.error("获取list缓存失败key[" + key + ", error[" + t + "]");
        }
        return null;
    }

    /**
     * 缓存set操作
     *
     * @param key       * @param v         * @param time 失效时间,秒
     * @return 布尔型 true:成功 false:失败
     */
protected boolean cacheSet(String key, String v, long time) {
        try {
            SetOperations<String, String> valueOps = redisTemplate.opsForSet();
            valueOps.add(key, v);
            if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS);
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + v + "]", t);
        }
        return false;
    }

    /**
     * 缓存set
     *
     * @param k      * @param v      * @return 布尔型 true:成功 false:失败
     */
protected boolean cacheSet(String k, String v) {
        return cacheSet(k, v, -1);
    }

    /**
     * 缓存set
     *
     * @param key       * @param v         * @param time 失效时间
     * @return 布尔型 true:成功 false:失败
     */
protected boolean cacheSet(String key, Set<String> v, long time) {

        try {
            SetOperations<String, String> setOps = redisTemplate.opsForSet();
            setOps.add(key, v.toArray(new String[v.size()]));
            if (time > 0) redisTemplate.expire(key, time, TimeUnit.SECONDS);
            return true;
        } catch (Throwable t) {
            log.error("缓存[" + key + "]失败, value[" + v + "]", t);
        }
        return false;
    }

    /**
     * 缓存set
     *
     * @param key      * @param v        * @return 布尔型 true:成功 false:失败
     */
protected boolean cacheSet(String key, Set<String> v) {
        return cacheSet(key, v, -1);
    }

    /**
     * 获取缓存set数据
     *
     * @param key      * @return Set
     */
protected Set<String> getSet(String key) {
        try {
            SetOperations<String, String> setOps = redisTemplate.opsForSet();
            return setOps.members(key);
        } catch (Throwable t) {
            log.error("获取set缓存失败key[" + key + ", error[" + t + "]");
        }
        return null;
    }


    /**
     * 判断缓存是否存在
     *
     * @param key      * @return boolean true:key存在 false:key 不存在
     */
public boolean containsKey(String key) {
        try {
            return redisTemplate.hasKey(key);
        } catch (Throwable t) {
            log.error("判断缓存存在失败key[" + key + ", error[" + t + "]");
        }
        return false;
    }

    /**
     * 移除缓存
     *
     * @param key      * @return boolean true:移除成功 false:移除失败
     */
public boolean remove(String key) {
        try {
            redisTemplate.delete(key);
            return true;
        } catch (Throwable t) {
            log.error("获取缓存失败key[" + key + ", error[" + t + "]");
        }
        return false;
    }


}

 

二、在应用代码中使用。

 

//设置值到redis 指定60秒后过期
redisUtil.setDoubleValue(RedisKeyEnum.DEFAULT_KEY.getKey() + doubleData.getId(), doubleData.getValue(), 60);
//从redis中获取指定key的值
redisUtil.getDoubleValue(RedisKeyEnum.DEFAULT_KEY.getKey() + doubleData.getId());

 

 

分享到:
评论

相关推荐

    spring 和redis整合,java代码操作redis,java代码中选择redis制定数据库

    在Java开发中,Spring框架与Redis的整合是一个常见的需求,特别是在构建高性能、高并发的应用时。Redis是一款开源的、基于键值对的数据存储系统,它提供了高速的数据读写能力,适用于缓存、消息队列等多种场景。而...

    redis整合tomcat8

    标题“redis整合tomcat8”涉及的是在Java Web开发中,如何将Redis缓存系统与Tomcat应用服务器集成,以优化session管理。Redis通常用于缓解服务器内存压力,提高Web应用程序的性能,特别是处理大量并发用户时。以下是...

    Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现.rar

    Java EE互联网轻量级框架整合开发,主要集中在SSM框架的使用上,即Spring MVC、Spring和MyBatis的集成,以及Redis缓存技术的引入。这个主题旨在提高Web应用的开发效率,优化性能,同时降低项目的复杂度。 首先,...

    springmvc整合redis需要的三个jar包.zip

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、高性能的Web应用程序。Redis则是一个高性能的键值数据存储系统,常被用作缓存和消息代理,以提高应用程序的性能。Spring Data Redis是Spring Framework的...

    SpringBoot项目SSM+Redis整合

    **SpringBoot项目SSM+Redis整合** 在现代Web开发中,SpringBoot因其便捷的配置、快速的开发体验而被广泛采用。本项目是基于SpringBoot框架进行构建的,旨在实现SSM(Spring、SpringMVC、Mybatis)的经典组合与Redis...

    redis整合tomcat7

    "redis整合tomcat7"的主题涉及到如何将流行的开源缓存系统Redis与Java Web容器Tomcat结合,以便实现更高效的session管理。这是一项常见的优化策略,因为Redis可以提供高可用性和可扩展性,同时减轻了传统session存储...

    ssm_redis整合

    SSM Redis整合是一个常见的Java Web开发中的集成方案,它涵盖了Spring、Spring MVC、MyBatis以及Redis这四个关键组件。在此项目中,开发者选择的是Spring 5.1.1、MyBatis 3.4.1和Druid作为数据源管理工具,与MySQL...

    springboot与redis整合

    SpringBoot与Redis整合是现代Java开发中常见的技术组合,尤其适用于构建高性能、高并发的Web应用。SpringBoot简化了配置和集成第三方库的过程,而Redis则作为内存数据存储,提供了高速的数据读写能力。以下是对这个...

    ssm整合redis开发

    基于ssm整合redis的工具类编写,内容详细。

    微服务SpringBoot整合Redis基于Redis的Stream消息队列实现异步秒杀下单

    【微服务SpringBoot整合Redis基于Redis的Stream消息队列实现异步秒杀下单】这篇文章主要讲解了如何在微服务环境中,使用SpringBoot框架与Redis相结合,通过Redis的Stream功能来构建一个高效的消息队列,以实现异步...

    redis和java整合运动的jar包--免费

    在Java与Redis整合中,对象池(如连接池)是非常重要的优化手段。Redis客户端Jedis使用连接池来复用已建立的网络连接,避免频繁创建和销毁连接带来的性能开销。Apache Commons Pool提供了基础的池化逻辑,包括对象的...

    Spring+Struts2+hibernate+Redis整合

    在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...

    详解SSH框架和Redis的整合

    SSH框架指的是Struts、Spring和Hibernate三个开源项目的组合,它们分别负责表现层、控制层和持久层,是Java Web开发中常用的三大框架。而Redis是一种高性能的键值存储系统,常用于缓存数据,提高应用性能。 整合SSH...

    spring+redis整合demo

    本文将详细解析"spring+redis整合demo"中的关键知识点,帮助你理解如何将Spring与Redis结合使用。 1. **Spring框架**:Spring是一个开源的Java平台,它简化了开发过程,提供了全面的编程和配置模型。Spring的核心...

    springboot+shiro+redis整合

    SpringBoot以其快速启动和低耦合的特性,已经成为现代Java Web开发的首选。 Shiro是Apache基金会的一个开源项目,主要用于解决应用程序的安全问题,包括认证、授权、会话管理和加密等。它的设计目标是简单易用,...

    SpringBoot + Mybatis + Redis 整合

    总的来说,SpringBoot、Mybatis和Redis的整合为Java开发者提供了一个强大、灵活且高效的开发环境,它可以帮助我们构建出高可用、高性能的Web应用。通过深入理解这三个组件以及它们之间的协同工作,开发者可以更好地...

    ssm框架整合redis源码

    整合SSM和Redis的过程涉及到Java Web开发、Spring框架、SpringMVC、MyBatis以及Redis缓存等多个技术领域,对于提升系统的可扩展性和性能有着显著的作用。同时,这也要求开发者对这些技术有深入的理解,以便更好地...

    Spring mvc整合redis实例(redis连接池)

    在Maven项目中,可以在pom.xml文件中添加`spring-data-redis`和`jedis`库,这两个库分别提供了Spring对Redis的支持和Jedis,一个Java客户端连接Redis。 ```xml &lt;groupId&gt;org.springframework.data &lt;artifactId&gt;...

    java-redis jar

    Java Redis Jar 指的是Java语言与Redis数据库交互所使用的库文件,主要包含Spring框架整合Redis所需的依赖。Redis是一款高性能的键值存储系统,常用于数据缓存、消息队列等场景,而Java作为广泛使用的编程语言,通过...

    springboot+redis整合rabbitmq

    Spring Boot以其便捷的配置和快速的应用开发而受到广泛欢迎,Redis是高性能的内存数据结构存储,常用于缓存和消息中间件,而RabbitMQ则是一个稳定且功能丰富的消息队列系统,能够实现异步处理和解耦应用程序。...

Global site tag (gtag.js) - Google Analytics