设为首页 收藏本站
查看: 1369|回复: 0

[经验分享] nginx+redis缓存微信的token数据

[复制链接]
发表于 2017-12-22 07:43:14 | 显示全部楼层 |阅读模式
package wonyen.mall.dao;  

  

import java.io.IOException;  

import java.io.InputStream;  

import java.util.HashMap;  

import java.util.Iterator;  

import java.util.List;  

import java.util.Map;  

import java.util.Properties;  

import java.util.Set;  

  

import org.springframework.dao.DataAccessException;  

import org.springframework.data.redis.connection.RedisConnection;  

import org.springframework.data.redis.core.RedisCallback;  

import org.springframework.data.redis.serializer.RedisSerializer;  

  

import redis.clients.jedis.Jedis;  

import wonyen.mall.constant.SystemConstant;  

  

public>AbstractBaseRedisDao<String, HashMap<String, Object>> {/**  * 新增键值对
  *
  *
@param key  *
@param value  *
@return  */
  public boolean addString(final String key, final String value) {
boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {public Boolean doInRedis(RedisConnection connection)throws DataAccessException {  RedisSerializer
<String> serializer = getRedisSerializer();byte[] jkey = serializer.serialize(key);byte[] jvalue = serializer.serialize(value);return connection.setNX(jkey, jvalue);  }
  });
return result;  }
  

/**  * 新增(拼接字符串)
  *
  *
@param key  *
@param value  *
@return  */
  public boolean appendString(final String key, final String value) {
  boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
  public Boolean doInRedis(RedisConnection connection)
  throws DataAccessException {
  RedisSerializer<String> serializer = getRedisSerializer();
  byte[] jkey = serializer.serialize(key);
  byte[] jvalue = serializer.serialize(value);
  if (connection.exists(jkey)) {
  connection.append(jkey, jvalue);
  return true;
  } else {
  return false;
  }
  }
  });
  return result;
  }
  

  /**
  * 新增(存储Map)
  *
  * @param key
  * @param value
  * @return
  */
  public String addMap(String key, Map<String, String> map) {
  Jedis jedis = getJedis();
  String result = jedis.hmset(key, map);
  jedis.close();
  return result;
  }
  

  /**
  * 获取map
  *
  * @param key
  * @return
  */
  public Map<String, String> getMap(String key) {
  Jedis jedis = getJedis();
  Map<String, String> map = new HashMap<String, String>();
  Iterator<String> iter = jedis.hkeys(key).iterator();
  while (iter.hasNext()) {
  String ikey = iter.next();
  map.put(ikey, jedis.hmget(key, ikey).get(0));
  }
  jedis.close();
  return map;
  }
  

  /**
  * 新增(存储List)
  *
  * @param key
  * @param pd
  * @return
  */
  public void addList(String key, List<String> list) {
  Jedis jedis = getJedis();
  jedis.del(key); // 开始前,先移除所有的内容
  for (String value : list) {
  jedis.rpush(key, value);
  }
  jedis.close();
  }
  

  /**
  * 获取List
  *
  * @param key
  * @return
  */
  public List<String> getList(String key) {
  Jedis jedis = getJedis();
  List<String> list = jedis.lrange(key, 0, -1);
  jedis.close();
  return list;
  }
  

  /**
  * 新增(存储set)
  *
  * @param key
  * @param set
  */
  public void addSet(String key, Set<String> set) {
  Jedis jedis = getJedis();
  jedis.del(key);
  for (String value : set) {
  jedis.sadd(key, value);
  }
  jedis.close();
  }
  

  /**
  * 获取Set
  *
  * @param key
  * @return
  */
  public Set<String> getSet(String key) {
  Jedis jedis = getJedis();
  Set<String> set = jedis.smembers(key);
  jedis.close();
  return set;
  }
  

  /**
  * 删除 (non-Javadoc)
  *
  * @see com.fh.dao.redis.RedisDao#delete(java.lang.String)
  */
  public boolean delete(final String key) {
  boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
  public Boolean doInRedis(RedisConnection connection)
  throws DataAccessException {
  RedisSerializer<String> serializer = getRedisSerializer();
  byte[] jkey = serializer.serialize(key);
  if (connection.exists(jkey)) {
  connection.del(jkey);
  return true;
  } else {
  return false;
  }
  }
  });
  return result;
  }
  

  /**
  * 删除多个 (non-Javadoc)
  *
  * @see com.fh.dao.redis.RedisDao#delete(java.util.List)
  */
  public void delete(List<String> keys) {
  redisTemplate.delete(keys);
  }
  

  /**
  * 修改 (non-Javadoc)
  *
  * @see com.fh.dao.redis.RedisDao#eidt(java.lang.String, java.lang.String)
  */
  public boolean eidt(String key, String value) {
  if (delete(key)) {
  addString(key, value);
  return true;
  }
  return false;
  }
  /**
  * 先删除后添加
  * @param key
  * @param value
  */
  public void del_add(String key, String value){
  delete(key);
  addString(key, value);
  }
  

  /**
  * 通过key获取值 (non-Javadoc)
  *
  *
  */
  public String get(final String keyId) {
  String result = redisTemplate.execute(new RedisCallback<String>() {
  public String doInRedis(RedisConnection connection)
  throws DataAccessException {
  RedisSerializer<String> serializer = getRedisSerializer();
  byte[] jkey = serializer.serialize(keyId);
  byte[] jvalue = connection.get(jkey);
  if (jvalue == null) {
  return null;
  }
  return serializer.deserialize(jvalue);
  }
  });
  return result;
  }
  

  /**
  * 获取Jedis
  *
  * @return
  */
  public Jedis getJedis() {
  Properties pros = getPprVue();
  String isopen = pros.getProperty("redis_isopen"); // 地址
  String host = pros.getProperty("redis_hostName"); // 地址
  String port = pros.getProperty("redis_port"); // 端口
  String pass = pros.getProperty("redis_password"); // 密码
  if ("yes".equals(isopen)) {
  Jedis jedis = new Jedis(host, Integer.parseInt(port));
  jedis.auth(pass);
  return jedis;
  } else {
  return null;
  }
  }
  

  /**
  * 读取redis.properties 配置文件
  *
  * @return
  * @throws IOException
  */
  public Properties getPprVue() {
  InputStream inputStream = SystemConstant.class.getClassLoader()
  .getResourceAsStream("redis.properties");
  Properties p = new Properties();
  try {
  p.load(inputStream);
  inputStream.close();
  } catch (IOException e) {
  // 读取配置文件出错
  
            e.printStackTrace();
  }
  return p;
  }
  

  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-426701-1-1.html 上篇帖子: 京东分布式缓存redis应用实战 下篇帖子: Redis的EXPIRE过期机制介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表