zoukankan      html  css  js  c++  java
  • RedisService

    package com.sprucetec.bone.common.redis;

    import com.alibaba.fastjson.JSON;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import redis.clients.jedis.Jedis;
    import redis.clients.util.Pool;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;

    @Service
    public class RedisService {
    @Autowired
    private Pool<Jedis> pool;

    public Pool<Jedis> getPool() {
    return pool;
    }

    /**
    * 判断指定key是否存在
    *
    * @param key key
    * @return 如果存在,返回true,否则返回false
    */
    public boolean exists(final String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.exists(key);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    //删除指定的Keys
    public long delete(final String... keys) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.del(keys);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    // 重命名指定的Key,如果参数中的两个Keys的命令相同,
    // 或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。
    public String rename(final String oldkey, final String newkey) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.rename(oldkey, newkey);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    // 设置某个key的过期时间(单位:秒),在超过该时间后,Key被自动的删除。
    // 如果该Key在超时之前被修改,与该键关联的超时将被移除。
    public long expire(final String key, final int seconds) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.expire(key, seconds);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    // #将指定Key的Value原子性的递增1。如果该Key不存在,其初始值为0,在incr之后其值为1,返回递增后的值。
    public long incrBy(final String key, final long integer) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.incrBy(key, integer);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public long incr(final String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.incr(key);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    // #将指定Key的Value原子性的递减1。如果该Key不存在,其初始值为-1,在incr之后其值为1,返回递减后的值。

    public long decrBy(final String key, final long integer) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.decrBy(key, integer);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public long decr(final String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.decr(key);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    @SuppressWarnings("unchecked")
    public <T> T getJSONToObject(Class<?> clazz, String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    String value = jedis.get(key);
    return (T) JSON.toJavaObject((JSON) JSON.parse(value), clazz);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public String getString(String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.get(key);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    @SuppressWarnings("unchecked")
    public <T> List<T> mget(Class<?> clazz, final String... keys) {
    List<T> list = new ArrayList<T>();
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    List<String> values = jedis.mget(keys);
    for (String value : values) {
    list.add((T) JSON.toJavaObject((JSON) JSON.parse(value), clazz));
    }
    return list;
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public <T> String setObjectToJSON(String key, T value) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    String str = JSON.toJSONString(value);
    return jedis.set(key, str);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public String set(String key, String value) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.set(key, value);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }


    public <T> String setex(final String key, final int seconds, final T value) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    String str = JSON.toJSONString(value);
    return jedis.setex(key, seconds, str);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    public <T> String mset(final Map<String, T> map) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    String[] keyValues = new String[map.size() * 2];
    int i = 0;
    for (String key : map.keySet()) {
    keyValues[2 * i] = key;
    keyValues[2 * i + 1] = JSON.toJSONString(map.get(key));
    i++;
    }
    return jedis.mset(keyValues);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    // #该命令原子性的完成参数中所有key/value的设置操作,
    // 如果在这一批Keys中有任意一个Key已经存在了,那么该操作将全部回滚,
    // 即所有的修改都不会生效。
    public <T> Long msetnx(final Map<String, T> map) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    String[] keyValues = new String[map.size() * 2];
    int i = 0;
    for (String key : map.keySet()) {
    keyValues[2 * i] = key;
    keyValues[2 * i + 1] = JSON.toJSONString(map.get(key));
    i++;
    }
    return jedis.msetnx(keyValues);
    } finally {
    if (jedis != null) {
    jedis.close();
    }
    }
    }

    /**
    * 插入Map类型的某key对应的值
    */
    public int hset(String key, String field, String value) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.hset(key, field, value).intValue();
    } finally {
    if (jedis != null)
    jedis.close();
    }
    }

    /**
    * 查询Map类型的某key对应的值
    */
    public String hget(String key, String field) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.hget(key, field);
    } finally {
    if (jedis != null)
    jedis.close();
    }
    }

    /**
    * 查询Map类型的值
    */
    public Map<String, String> hgetAll(String key) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.hgetAll(key);
    } finally {
    if (jedis != null)
    jedis.close();
    }
    }

    /**
    * 删除hash中的一条记录
    */
    public long hdel(String hashKey, String taskId) {
    Jedis jedis = null;
    try {
    jedis = pool.getResource();
    return jedis.hdel(hashKey, taskId);
    } finally {
    if (jedis != null)
    jedis.close();
    }
    }

    }
  • 相关阅读:
    网站SEO优化问答精选
    用eclipse怎样将本地的项目打成jar包上传到maven仓库
    查询linux机器的公网ip
    Srping mvc mabatis 报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件(转载)
    苹果手机如何减少后台流量
    《图解CSS3——第4章 CSS3背景-2》
    《图解CSS3——第4章 CSS3背景-1》
    《图解CSS3——第3章 CSS3边框-4》
    《图解CSS3——第3章 CSS3边框-3》
  • 原文地址:https://www.cnblogs.com/duyinqiang/p/5946147.html
Copyright © 2011-2022 走看看