Spring整合redis

1.环境

  需要spring.jar、common-pool.jar.jedisjar

2.简介

  分片(shardedjedis)将不同的key分配到不同的redis server上,达到横向扩展的目的。

3.配置application.xml


<!-- 加载redis配置文件 --><context:property-placeholder location="classpath:redis.properties"/>
<!-- 连接池配置 --><bean id="poolCfg" class="redis.clients.jedis.JedisPoolConfig">
        <property
            name="maxTotal"
            value="${redis.pool.maxActive}" />
        <property
            name="maxIdle"
            value="${redis.pool.maxIdle}" />
        <property name="minIdle" value="1"/>
        <property
            name="maxWaitMillis"
            value="${redis.pool.maxWait}" />
        <property name="testOnBorrow" value="true"/>
        <property name="testOnReturn" value="true"/>
    </bean><!-- port记得指定为int类型 -->
<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
        <constructor-arg index="0" ref="poolCfg"></constructor-arg>
        <constructor-arg index="1">
            <list>
                <bean name="master" class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg index="0" value="${redis1.ip}"></constructor-arg>
                    <constructor-arg index="1" value="${redis1.port}" type="int"></constructor-arg>
                    <property name="password" value="${redis2.auth}"/>
                </bean>
                <bean name="slaver" class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg index="0" value="${redis2.ip}"></constructor-arg>
                    <constructor-arg index="1" value="${redis2.port}" type="int"></constructor-arg>
                    <property name="password"  value="${redis2.auth}"/>
                </bean>
            </list>
        </constructor-arg>
</bean>

4.获取资源,释放资源

@Repository("jedisDataResource")
public class JedisDataResourceImpl implements JedisDataResource{

    @Resource(name="shardedJedisPool")
    private ShardedJedisPool sharededJedisPool;

    @Override
    public ShardedJedis getResource() {
        ShardedJedis shardedJedis=null;
        try {
            shardedJedis =sharededJedisPool.getResource();
            return shardedJedis;
        } catch (Exception e) {
            if(null != sharededJedisPool)
                sharededJedisPool.close();
        }
        return null;
    }

    @Override
    public void returnResource(ShardedJedis shardedJedis) {
        if(shardedJedis!=null)
            shardedJedis.close();
    }

}

5.dao层

public interface UserRedisDao {

    /**获取用户名*/
    double getUserName(String key);

}
@Repository("userRedisDao")
public class UserRedisDaoImpl implements UserRedisDao{

    @Resource
    private JedisDataResource jedisDataResource;

    @Override
    public String getUserName(String key) {
        ShardedJedis shardedJedis = jedisDataResource.getResource();
        if (null == shardedJedis)
            return null;
        try {
            return shardedJedis.get(key);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedisDataResource.returnResource(shardedJedis);
        }
    }}

6.service

public interface CommodityRedisService {

    String getUserName(String key);

}
@Service("userRedisService")
public class UserRedisServiceImpl implements UserRedisService{

        @Autowired
        private UserRedisDao UserRedisDao;

        @Override
        public String increaseCollectNum(String key) {
            return userRedisDao.getUserName(key);
        }
}
时间: 2024-10-29 19:10:55

Spring整合redis的相关文章

网站性能优化小结和spring整合redis

现在越来越多的地方需要非关系型数据库了,最近网站优化,当然从页面到服务器做了相应的优化后,通过在线网站测试工具与之前没优化对比,发现有显著提升. 服务器优化目前主要优化tomcat,在tomcat目录下的server.xml文件配置如下内容: <Connector port="1818" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minS

Spring整合Redis做数据缓存(Windows环境)

当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是用java开发的缓存组件,和java结合良好,直接在jvm虚拟机中运行,不需要额外安装什么东西,效率也很高:但是由于和java结合的太紧密了,导致缓存共享麻烦,分布式集群应用不方便,所以比较适合单个部署的应用. Redis需要额外单独安装,是通过socket访问到缓存服务,效率比Ehcache低,但

(转)Spring整合Redis作为缓存

采用Redis作为Web系统的缓存.用Spring的Cache整合Redis. 一.关于redis的相关xml文件的写法 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:cache="http://www.springframework.org/schema/c

【原】Spring整合Redis(第一篇)—SDR简述

1.SDR说明 Spring Data Redis(SDR),是SpringFramework提供的一套简化访问Redis的API,是对Jedis的又一层封装. SDR集成了Jedis,JRedis,SRP,Lettuce这四种开源的Redis Connector,这些Connector都是针对于Redis的开源Java库.其中,JRedis和SRP从spring-data-redis1.7开始,就不支持了. 2.RedisTemplate说明 RedisTemplate是SDR的一个核心Hel

【原】Spring整合Redis(第三篇)—SDR搭建中易出现的错误

易错点01:Spring版本过低导致的错误[环境参数]Redis版本:redis-2.4.5-win32-win64Spring原来的版本:4.1.7.RELEASESpring修改后的版本:4.2.6.RELEASE [障碍描述]Question:NoSuchMethodErrorInvocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.

spring整合redis客户端及缓存接口设计(转)

一.写在前面 缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存.有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器.但是无论使用哪种缓存,接口中的方法都是差不多.笔者最近的项目使用的是memcached作为缓存服务器,由于memcached的一些限制,现在想换redis作为缓存服务器.思路就是把memached的客户端换成redis客户端,接口依然是原来的接口,这样对系统可以无损替换,接口不变,功能不变,只是客户端变了.本文不介绍缓存的用法,不介绍redis

spring整合redis客户端及缓存接口设计

一.写在前面 缓存作为系统性能优化的一大杀手锏,几乎在每个系统或多或少的用到缓存.有的使用本地内存作为缓存,有的使用本地硬盘作为缓存,有的使用缓存服务器.但是无论使用哪种缓存,接口中的方法都是差不多.笔者最近的项目使用的是memcached作为缓存服务器,由于memcached的一些限制,现在想换redis作为缓存服务器.思路就是把memached的客户端换成redis客户端,接口依然是原来的接口,这样对系统可以无损替换,接口不变,功能不变,只是客户端变了.本文不介绍缓存的用法,不介绍redis

spring 整合redis

用的是最新的jedis-2.6.2.jar这个包,这个和以前的有点不同.还需要添加spring-data-redis-1.2.1.RELEASE.jar和commons-pool2-2.3.jar. 在类路径下创建spring-redis-config.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

Spring整合Redis(spring-data-redis)

历经几天看了大量的博客资料,差不多算是搞定了,目前只是针对单个数据源,集群暂时没研究 maven依赖 <properties> <!-- redis 版本 --> <redis.version>2.9.0</redis.version> <spring.redis.version>1.8.4.RELEASE</spring.redis.version> <mybatis.version>3.4.4</mybatis.