spring boot redis工具类RedisUtils示例

引入redis依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
			<version>2.1.5.RELEASE</version>
		</dependency>

application.properties配置

#RedisProperties
spring.redis.database=1
spring.redis.host=<ip>
spring.redis.port=6379
spring.redis.password=<密码>

直接上工具类源码

package com.nowcoder.community.util;

import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.time.FastDateFormat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.io.Closeable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
import java.util.concurrent.TimeUnit;

@Component
public class RedisUtils {
	public static final FastDateFormat DATE_HHmmss = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
	private static final String lockPrefix = "LOCK:";


    @Autowired  
    private StringRedisTemplate redisTemplate;
    public StringRedisTemplate redisTemplate() {
    	return this.redisTemplate;
    }
    /**
     * 缓存是否存在
     * @param key 
     * @return 
     */  
    public boolean exists(final String key) {  
        return redisTemplate.hasKey(key);
    }

    /** 
     * 读取缓存 
     * @param key 
     * @return 
     */  
    public String get(final String key) {
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        return operations.get(key);
    }

	public List<String> mget(final String... keys) {
		ValueOperations<String, String> operations = redisTemplate.opsForValue();
		return operations.multiGet(Arrays.asList(keys));
	}

	public <T> T get(final String key, Class<T>clazz) {
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        return fromString(operations.get(key), clazz);
    }
    /**
     * 读取缓存 
     * @param key 
     * @return 
     */  
    public Long incAndGet(final String key) {  
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        return operations.increment(key, 1);
    }
    
    /** 
     * 读取缓存 
     * @param key 
     * @return 
     */  
    public Long incAndGet(final String key, long delta) {  
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        return operations.increment(key, delta);
    }

    /** 
     * 写入缓存 
     *  
     * @param key 
     * @param value 
     * @return 
     */  
    public void set(final String key, Object value) {  
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        operations.set(key, toString(value));
    }
    
    /** 
     * 写入缓存 
     *  
     * @param key 
     * @param value 
     * @return 
     */  
    public void set(final String key, Object value, long expireTime) {
        ValueOperations<String, String> operations = redisTemplate.opsForValue();
        operations.set(key, toString(value), expireTime, TimeUnit.SECONDS);
    }

    public boolean setIfAbsent(final String key, Object value, long expireTime) {
		ValueOperations<String, String> operations = redisTemplate.opsForValue();
		return operations.setIfAbsent(key, toString(value), expireTime, TimeUnit.SECONDS);
	}

	public Cursor<String> scan(String pattern, int limit) {
		ScanOptions options = ScanOptions.scanOptions().match(pattern).count(limit).build();
		RedisSerializer<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer();
		return (Cursor) redisTemplate.executeWithStickyConnection(new RedisCallback<Closeable>() {
			@Override
			public Closeable doInRedis(RedisConnection connection) throws DataAccessException {
				return new ConvertingCursor<>(connection.scan(options), redisSerializer::deserialize);
			}
		});
	}

    /** 
     * 批量删除对应的value 
     *  
     * @param keys 
     */  
    public void remove(final String... keys) {  
        for (String key : keys) {  
            remove(key);
        }
    }

    /** 
     * 批量删除key 
     *  
     * @param pattern 
     */  
    public void removePattern(final String pattern) {  
        Set<String> keys = redisTemplate.keys(pattern);
        if (keys.size() > 0)  
            redisTemplate.delete(keys);
    }

    /** 
     * 删除对应的value 
     * @param key 
     */  
    public void remove(final String key) {  
    	redisTemplate.delete(key);
    }

	public void delete(final Collection<String> keys) {
		redisTemplate.delete(keys);
	}


	public void delete(final String... keys) {
		redisTemplate.delete(Arrays.asList(keys));
	}

    public void delete(final String key) {
    	this.remove(key);
    }

    
    /** 
     *  
     * @param key 
     * @param hashKey 
     * @return 
     */  
    public Object hashGet(final String key, final String hashKey){  
        HashOperations<String, Object, Object> operations = redisTemplate.opsForHash();
        return operations.get(key, hashKey);
    }
    
    /** 
     *  
     * @param key 
     * @param hashKeys
     * @return 
     */  
    public List<String> hashGet(final String key, final List<String> hashKeys){  
        HashOperations<String, String, String> operations = redisTemplate.opsForHash();
        return operations.multiGet(key, hashKeys);
    }
    
    
    /** 
     *  
     * @param key 
     * @param hashKey 
     * @return 
     */  
    public Long hashIncAndGet(final String key, final String hashKey){  
        HashOperations<String, String, Object> operations = redisTemplate.opsForHash();
        return operations.increment(key, hashKey, 1);
    }
    
    /** 
     *  
     * @param key 
     * @param hashKey 
     * @return 
     */  
    public Long hashIncAndGet(final String key, final String hashKey, long delta){  
        HashOperations<String, String, Object> operations = redisTemplate.opsForHash();
        return operations.increment(key, hashKey, delta);
    }

    /** 
     *  
     * @param key 
     * @param hashKey 
     * @param value 
     * @return 
     */  
    public void hashSet(final String key, final String hashKey, Object value) {  
        HashOperations<String, String, String> operations = redisTemplate.opsForHash();
        operations.put(key, hashKey, toString(value));
    }

    public void hashSet(final String key, final Map<String, Object>kvs) {  
        HashOperations<String, String, Object> operations = redisTemplate.opsForHash();
        operations.putAll(key, kvs);
    }

	public long hashDelete(final String key, final String hashKey){
		HashOperations<String, Object, Object> operations = redisTemplate.opsForHash();
		return operations.delete(key, hashKey);
	}

	public void setAdd(String key, List<String> values) {
        SetOperations<String, String> operations = redisTemplate.opsForSet();
        operations.add(key, (String[])values.toArray());
	}
	
	public void setAdd(String key, String... values) {
        SetOperations<String, String> operations = redisTemplate.opsForSet();
        operations.add(key, values);
	}

	public Cursor<String> setScan(String key, int limit) {
		ScanOptions options = ScanOptions.scanOptions().match("*").count(limit).build();
		SetOperations<String, String> operations = redisTemplate.opsForSet();
		return operations.scan(key, options);
	}

	public long setDelete(String key, String member) {
		SetOperations<String, String> operations = redisTemplate.opsForSet();
		return operations.remove(key, member);
	}

	public Boolean isMember(String key, String values) {
        SetOperations<String, String> operations = redisTemplate.opsForSet();
		return operations.isMember(key, values);
	}
	
	public void expire(String key, long expire) {
		if (expire != -1) {
			redisTemplate.expire(key, expire, TimeUnit.SECONDS);
		}
	}

	public void zsetAdd(String key, String member, double score) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		operations.add(key, member, score);
	}

	/**
	 *
	 * @param key
	 * @param start 0-based included
	 * @param end 0-based included
	 */
	public void zsetRemoveByRange(String key, long start, long end) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		operations.removeRange(key, start, end);
	}

	/**
	 *
	 * @param key
	 * @param min min score, included
	 * @param max max score, included
	 */
	public void zsetRemoveByScore(String key, double min, double max) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		operations.removeRangeByScore(key, min, max);
	}

	/**
	 *
	 * @param key
	 * @param min min score, included
	 * @param max max score, included
	 */
	public Set<String> zsetRangeByScore(String key, double min, double max) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		return operations.rangeByScore(key, min, max);
	}

	public Set<String> zsetRange(String key, long start, long end) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		return operations.range(key, start, end);
	}

	public long zsetCard(String key) {
		ZSetOperations<String, String> operations = redisTemplate.opsForZSet();
		return operations.zCard(key);
	}
}

测试


    @Autowired
    RedisUtils redisUtils;

    @Test
    public void test(){
        String redisKey="test:user";
        redisUtils.hashDelete(redisKey,"男");
        redisUtils.hashSet(redisKey,"sex","男");
        System.out.println(redisUtils.hashGet(redisKey,"sex"));
    }

发布了18 篇原创文章 · 获赞 0 · 访问量 2001

猜你喜欢

转载自blog.csdn.net/rye1009/article/details/104156738