Redis操作

6 篇文章 0 订阅

redisCache.getCache(AdminRedisEnum.SYS_USER_PREFIX.getKey(), SysUserModel.class);
redisCache.putCacheWithExpireTime(AdminRedisEnum.SYS_USER_PREFIX.getKey(), sysUserModel, 3600 * 24 * 3);
以上存入redis以类存入则取出也要以类取出

如果以redisCache.putCacheWithExpireTime(AdminRedisEnum.SYS_USER_PREFIX.getKey() + token, JSONObject.toJSONString(sysUserModel), 3600 * 24 * 3);
String类型,则取出时也要以String形式取出

package com.xiaocaimi.admin.cache;

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.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Set;

/**

  • redis缓存
  • @author yingjun

*/
@Component
public class RedisCache {

public final static String CAHCENAME="cache";//缓存名
public final static int CAHCETIME=3600;//默认缓存时间

@Autowired
private RedisTemplate<String, String> redisTemplate;

public <T> boolean putCache(String key, T obj) {
	final byte[] bkey = key.getBytes();
	final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
	boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
		@Override
		public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
			connection.setEx(bkey, CAHCETIME, bvalue);
			return true;
		}
	});
	return result;
}

public <T> void putCacheWithExpireTime(String key, T obj, final long expireTime) {
	final byte[] bkey = key.getBytes();
	final byte[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
	redisTemplate.execute(new RedisCallback<Boolean>() {
		@Override
		public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
			connection.setEx(bkey, expireTime, bvalue);
			return true;
		}
	});
}

public <T> boolean putListCache(String key, List<T> objList) {
	final byte[] bkey = key.getBytes();
	final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
	boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
		@Override
		public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
			return connection.setNX(bkey, bvalue);
		}
	});
	return result;
}

public <T> boolean putListCacheWithExpireTime(String key, List<T> objList, final long expireTime) {
	final byte[] bkey = key.getBytes();
	final byte[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
	boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
		@Override
		public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
			connection.setEx(bkey, expireTime, bvalue);
			return true;
		}
	});
	return result;
}

public <T> T getCache(final String key, Class<T> targetClass) {
	byte[] result = redisTemplate.execute(new RedisCallback<byte[]>() {
		@Override
		public byte[] doInRedis(RedisConnection connection) throws DataAccessException {
			return connection.get(key.getBytes());
		}
	});
	if (result == null) {
		return null;
	}
	return ProtoStuffSerializerUtil.deserialize(result, targetClass);
}

public <T> List<T> getListCache(final String key, Class<T> targetClass) {
	byte[] result = redisTemplate.execute(new RedisCallback<byte[]>() {
		@Override
		public byte[] doInRedis(RedisConnection connection) throws DataAccessException {
			return connection.get(key.getBytes());
		}
	});
	if (result == null) {
		return null;
	}
	return ProtoStuffSerializerUtil.deserializeList(result, targetClass);
}

/**
 * 功能描述: 数字自增
 *
 * @Author:xiaojian
 * @Date: 2019/1/26 9:51
 * @since: v1.0
 */
public Long increment(final String key, Long data){
    return redisTemplate.opsForValue().increment(key, data);
}

/**
 * 精确删除key
 * 
 * @param key
 */
public void deleteCache(String key) {
	redisTemplate.delete(key);
}

/**
 * 模糊删除key
 * 
 * @param pattern
 */
public void deleteCacheWithPattern(String pattern) {
	Set<String> keys = redisTemplate.keys(pattern);
	redisTemplate.delete(keys);
}

/**
 * 清空所有缓存
 */
public void clearCache() {
	deleteCacheWithPattern(RedisCache.CAHCENAME+"|*");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值