1. 程式人生 > >redisUtils封裝類工具一

redisUtils封裝類工具一

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import redis.clients.jedis.ShardedJedis;

import redis.clients.jedis.ShardedJedisPool;

@Service

publicclass RedisService {

@Autowired

private ShardedJedisPool shardedJedisPool;

private <T> T execute(Function<T, ShardedJedis>

fun) {

        ShardedJedis shardedJedis = null;

try {

// 從連線池中獲取到jedis分片物件

shardedJedis = shardedJedisPool.getResource();

returnfun.callback(shardedJedis);

        } catch (Exception e) {

e.printStackTrace();

        } finally {

if (null != shardedJedis) {

// 關閉,檢測連線是否有效,有效則放回到連線池中,無效則重置狀態

shardedJedis.close();

            }

        }

returnnull;

    }

/**

     * 執行set操作

     *

     * @param key

     * @param value

     * @return

     */

public String set(final String key, final String value) {

returnthis.execute(new Function<String, ShardedJedis>() {

@Override

public String callback(ShardedJedis e) {

returne.set(key, value);

            }

        });

    }

/**

     * 執行GET操作

     *

     * @param key

     * @return

     */

public String get(final String key) {

returnthis.execute(new Function<String, ShardedJedis>() {

@Override

public String callback(ShardedJedis e) {

returne.get(key);

            }

        });

    }

/**

     * 執行DEL操作

     *

     * @param key

     * @return

     */

public Long del(final String key) {

returnthis.execute(new Function<Long, ShardedJedis>() {

@Override

public Long callback(ShardedJedis e) {

returne.del(key);

            }

        });

    }

/**

     * 設定生存時間,單位為秒

     *

     * @param key

     * @param seconds

     * @return

     */

public Long expire(final String key, final Integer seconds) {

returnthis.execute(new Function<Long, ShardedJedis>() {

@Override

public Long callback(ShardedJedis e) {

returne.expire(key, seconds);

            }

        });

    }

/**

     * 執行set操作並且設定生存時間,單位為秒

     *

     * @param key

     * @param value

     * @return

     */

publicString set(final String key, final String value, final Integer seconds) {

returnthis.execute(new Function<String, ShardedJedis>() {

@Override

public String callback(ShardedJedis e) {

                String str = e.set(key, value);

e.expire(key, seconds);

returnstr;

            }

        });

    }

}