Redis的工具类(RedisUtil),内含多种往redis中存放的方法

内含多种往redis中存放的方法
指定数据失效时间
指定过期日期
删除数据
取数据

import java.util.Date;

import javax.annotation.Resource;

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;

/**
 * redis的工具类 里面全部存放json
 * 
 * @author 
 */
@Component("redisUtil")
public class RedisUtil
{
	/* Rediskey的一些常量 */
	public static final String KEY_USERS_TOKEN = "users_token_";
	public static final String KEY_ADMINS_TOKEN = "admins_token_";

	@Resource
	private RedisTemplate redisTemplate;

	/**
	 * 往redis里面放东西
	 * @param key	要合理规划
	 * @param valueJSON	json,里面必须包含创建时间
	 * @return
	 */
	public boolean put(final String key,final String valueJSON)
	{
		try
		{
			return (Boolean)this.redisTemplate.execute(new RedisCallback() {

				@Override
				public Object doInRedis(RedisConnection connection) throws DataAccessException {
					byte[] keyByte = redisTemplate.getStringSerializer().serialize(key) ; 
					connection.set(keyByte, redisTemplate.getStringSerializer().serialize(valueJSON));
					return true;
				}
			});
		} catch (Exception e)
		{
			ConstatFinalUtil.SYS_LOGGER.error("从redis中存储数据报错了,键为:" + key,e);
		}
		return false ;
	}

	/**
	 * 往redis里面放东西
	 * 
	 * @param key       要合理规划
	 * @param valueJSON json,里面必须包含创建时间
	 * @param timeout   过期时间,单位是秒
	 * @return
	 */
	public boolean put(final String key, final String valueJSON, final int timeout)
	{
		try
		{
			return (Boolean) this.redisTemplate.execute(new RedisCallback()
			{

				@Override
				public Object doInRedis(RedisConnection connection) throws DataAccessException
				{
					byte[] keyByte = redisTemplate.getStringSerializer().serialize(key);
					connection.set(keyByte, redisTemplate.getStringSerializer().serialize(valueJSON));
					// 设置一下过期时间
					boolean flag = connection.expire(keyByte, timeout);
					if (!flag)
					{
						ConstatFinalUtil.SYS_LOGGER.error(key + "--" + timeout + ",redis设置过时时间(毫秒)失败了--" + valueJSON);
					}
					return flag;
				}
			});
		} catch (Exception e)
		{
			ConstatFinalUtil.SYS_LOGGER.error("从redis中存储数据报错了,键为:" + key, e);
		}
		return false;
	}

	/**
	 * 往redis里面放东西
	 * 
	 * @param key       要合理规划
	 * @param valueJSON json,里面必须包含创建时间
	 * @param expDate   旋转的是指定的日期过期
	 * @return
	 */
	public boolean put(final String key, final String valueJSON, final Date expDate)
	{
		try
		{
			return (Boolean) this.redisTemplate.execute(new RedisCallback()
			{

				@Override
				public Object doInRedis(RedisConnection connection) throws DataAccessException
				{
					byte[] keyByte = redisTemplate.getStringSerializer().serialize(key);
					connection.set(keyByte, redisTemplate.getStringSerializer().serialize(valueJSON));
					// 设置一下过期时间,单位是秒,所以要除上1000
					boolean flag = connection.expireAt(keyByte, expDate.getTime() / 1000);
					if (!flag)
					{
						ConstatFinalUtil.SYS_LOGGER
								.error(key + "--" + expDate.toLocaleString() + ",redis设置过时间点失败了--" + valueJSON);
					}
					return flag;
				}
			});
		} catch (Exception e)
		{
			ConstatFinalUtil.SYS_LOGGER.error("从redis中存储数据报错了,键为:" + key, e);
		}
		return false;
	}

	/**
	 * 从redis里面取数据
	 * 
	 * @param key 会返回null
	 * @return
	 */
	public Object get(final String key)
	{
		try
		{
			return this.redisTemplate.execute(new RedisCallback()
			{

				@Override
				public Object doInRedis(RedisConnection connection) throws DataAccessException
				{
					byte[] keyByte = redisTemplate.getStringSerializer().serialize(key);
					if (connection.exists(keyByte))
					{
						byte[] valueByte = connection.get(keyByte);
						return redisTemplate.getStringSerializer().deserialize(valueByte);
					}
					return null;
				}
			});
		} catch (Exception e)
		{
			ConstatFinalUtil.SYS_LOGGER.error("从redis中读取数据报错了,键为:" + key, e);
		}
		return null;
	}

	/**
	 * 删除数据
	 * 
	 * @param key
	 * @return 返回删除的条数 -1 为键不存在
	 */
	public boolean delete(final String key)
	{
		try
		{
			return (boolean) this.redisTemplate.execute(new RedisCallback()
			{

				@Override
				public Object doInRedis(RedisConnection connection) throws DataAccessException
				{
					byte[] keyByte = redisTemplate.getStringSerializer().serialize(key);
					if (connection.exists(keyByte))
					{
						long keylon = connection.del(keyByte);
						return true;
					}
					return false;
				}
			});
		} catch (Exception e)
		{
			ConstatFinalUtil.SYS_LOGGER.error("从redis中删除数据报错了,键为:" + key, e);
		}
		return false;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

散装程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值