spring 、Redis緩存配置

102niu 8年前發布 | 20K 次閱讀 Spring JEE框架

來自: http://my.oschina.net/u/2317118/blog/607397


在spring配置文件中加入如下配置:

<!-- redis -->  
    <bean id="redisDataSource" class="redis.clients.jedis.JedisPoolConfig"
        p:maxIdle="300" p:maxWaitMillis="1000" p:testOnBorrow="true"
        p:maxTotal="600">
    </bean>

    <bean id="redisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
        p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pwd}"
        p:pool-config-ref="redisDataSource" />

    <bean id="stringRedisSerializer"
        class="org.springframework.data.redis.serializer.StringRedisSerializer" />

    <bean id="jdkSerializationRedisSerializer"
        class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />

    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"
        p:keySerializer-ref="stringRedisSerializer" p:valueSerializer-ref="jdkSerializationRedisSerializer"
        p:connectionFactory-ref="redisConnectionFactory" />

java代碼中的使用:

import org.springframework.data.redis.core.RedisTemplate;

public class RedisService {
        @Resource(name = "redisTemplate")
    private RedisTemplate<String, Object> redisTemplate;

/**
     * 保存數據
     * 
     * @param key
     * @param obj
     * @return false :失敗,true:成功
     */
    public boolean insertObject(final String key, final Object obj) {

        return redisTemplate.execute(new RedisCallback<Boolean>() {

            @Override
            public Boolean doInRedis(RedisConnection connection)
                    throws DataAccessException {
                RedisSerializer<String> serializer = getRedisSerializer();
                byte[] keys = serializer.serialize(key);

                if (null != connection.get(keys)) {
                    return false;
                }
                byte[] values = serializer.serialize(toJson(obj));
                return connection.setNX(keys, values);
            }
        });
    }
    /**
     * 修改數據
     * 
     * @param key
     * @param obj
     * @return false :失敗,true:成功
     */
    public boolean updateObject(final String key, final Object obj) {
        return redisTemplate.execute(new RedisCallback<Boolean>() {
            @Override
            public Boolean doInRedis(RedisConnection connection)
                    throws DataAccessException {
                RedisSerializer<String> serializer = getRedisSerializer();
                byte[] keys = serializer.serialize(key);
                if (null != connection.get(keys)) {
                    if (1 == connection.del(keys)) {
                        byte[] values = serializer.serialize(toJson(obj));
                        return connection.setNX(keys, values);
                    }
                    return false;
                }
                return false;
            }
        });
    }
    /**
     * 刪除數據
     * 
     * @param key
     * @return false :失敗,true:成功
     */
    public boolean deleteObject(final String key) {
        return redisTemplate.execute(new RedisCallback<Boolean>() {
            @Override
            public Boolean doInRedis(RedisConnection connection)
                    throws DataAccessException {
                RedisSerializer<String> serializer = getRedisSerializer();
                byte[] keys = serializer.serialize(key);
                if (1 == connection.del(keys)) {
                    return true;
                }
                return false;
            }
        });

    }
    /**
     * 按Key查詢
     * @param key
     * @return
     */
    private String queryDataFromRedis(final String key) {
        return redisTemplate.execute(new RedisCallback<String>() {
            public String doInRedis(RedisConnection connection)
                    throws DataAccessException {
                RedisSerializer<String> serializer = getRedisSerializer();
                byte[] keys = serializer.serialize(key);
                byte[] values = connection.get(keys);
                if (values == null) {
                    return null;
                }
                return serializer.deserialize(values);
            }
        });
    }
    private RedisSerializer<String> getRedisSerializer() {
        return redisTemplate.getStringSerializer();
    }
    }


 本文由用戶 102niu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!