文档章节

redis使用

yabushan
 yabushan
发布于 2016/04/16 15:02
字数 505
阅读 17
收藏 0
点赞 1
评论 0
package yabushan.Redis;

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


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

public class RedisClient {
	

	private Jedis jedis;// 非切片额客户端连接
	private JedisPool jedisPool;// 非切片连接池
	private ShardedJedis shardedJedis;// 切片额客户端连接
	private ShardedJedisPool shardedJedisPool=null;// 切片连接池
	private int MaxTotal = 300;
	private int maxIdle = 100;
	private long maxWait = 3000;
	private final int ONE_MONTH=2592000;
	private final int ONE_WEEK=7*24*60*60*1000;
	
	private static RedisClient redisClient;

	public static RedisClient getInstance() {
		if (redisClient == null) {
			redisClient = new RedisClient();
		}
		return redisClient;
	}

	public RedisClient() {
		initialPool();
		initialShardedPool();
		shardedJedis = shardedJedisPool.getResource();
		jedis = jedisPool.getResource();

	}

	/**
	 * 初始化非切片池
	 */
	private void initialPool() {
		// 池基本配置
		JedisPoolConfig config = new JedisPoolConfig();
		// config.setMaxActive(20);
		// config.setMaxIdle(5);
		// config.setMaxWait(1000l);
		// 设置最大连接数
		config.setMaxTotal(MaxTotal);
		// 设置最大空闲数
		config.setMaxIdle(maxIdle);
		// 设置超时时间
		config.setMaxWaitMillis(maxWait);
		config.setTestOnBorrow(false);

		jedisPool = new JedisPool(config, "127.0.0.1", 6379);
	}

	/**
	 * 初始化切片池
	 */
	private void initialShardedPool() {
		// 池基本配置
		JedisPoolConfig config = new JedisPoolConfig();
		// 设置最大连接数
		config.setMaxTotal(MaxTotal);
		// 设置最大空闲数
		config.setMaxIdle(maxIdle);
		// 设置超时时间
		config.setMaxWaitMillis(maxWait);
		config.setTestOnBorrow(false);
		// slave链接
		List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
		shards.add(new JedisShardInfo("127.0.0.1", 6379));

		// 构造池
		shardedJedisPool = new ShardedJedisPool(config, shards);
	}
	
	  public ShardedJedis getJedis(){
	        return this.shardedJedisPool.getResource();
	    }
	    
	    public void returnBrokenResource(ShardedJedis jedis){
	    	this.shardedJedisPool.returnBrokenResource(jedis);
	    }
	    
	    public void returnJedis(ShardedJedis jedis){
	        this.shardedJedisPool.returnResource(jedis);
	    }

	
	
	
	
	
	public void cloes() {
		jedisPool.returnResource(jedis);
		shardedJedisPool.returnResource(shardedJedis);
		//System.out.println("show");
	}

	public void setString(String phoneNum, String code) {
		jedis.set(phoneNum, code);
		jedis.expire(phoneNum, 600);

	}
	
	public  void setToken(String userId,String refleshtoken){
		Map<String, String> tokenMap=new HashMap<String, String>();
		tokenMap.put("retoken", refleshtoken);
		tokenMap.put("retime", String.valueOf(System.currentTimeMillis()));
		jedis.hmset(userId, tokenMap);
		jedis.expire(refleshtoken,ONE_WEEK);
		
	}
	
	//检查验证码是否过期
	public boolean outDate(String phoneNum){
		return jedis.exists(phoneNum);
	}

	public boolean isExist(String phoneNum, String code) {
		if (jedis.exists(phoneNum) && jedis.get(phoneNum).equals(code)) {
			jedis.del(phoneNum);
			
			return true;
		}
		return false;
	}
	
	
	public boolean setHashMap(String key,Map<String , String> map){
		
		try {
			
			jedis.hmset(key, map);
			jedis.expire(key, ONE_MONTH);
			return true;
		} catch (Exception e) {
			
			return false;
		}
	
	}
	
	public Map<String, String> hget(String key){
		
		Map<String, String> map=new HashMap<String, String>();
		try {
		map=jedis.hgetAll(key);
		} catch (Exception e) {
			map=null;
		}
		
		return map;
	}
	
	public boolean Hset(String key,String field,String value){
		
		boolean result=false;
		try {
			jedis.hset(key, field, value);
			
			result= true;
			
		} catch (Exception e) {
			
			
		}
		
		return result;
	}
	
	
	
	
	public List<Map<String, String>> gethashMaplist(Map<String, String> map){
		List<String> keyList=new ArrayList<String>();
		for(String key:map.keySet()){
			keyList.add(key);
		}
		List<Map<String, String>> maps=new ArrayList<Map<String,String>>();
		for(String keyString:keyList){
			Map<String, String> mpaMap=new HashMap<String, String>();
		mpaMap=	jedis.hgetAll(keyString);
		maps.add(mpaMap);
		}
		
		return maps;
	}
	
	
	public boolean deleteSuccssCheackShop(String key,String filed){
		boolean result=true;
		try {
			jedis.del(filed);//此处的filed为shopId
			jedis.hdel(key, filed);
			
		} catch (Exception e) {
			
			result=false;
		}
		
		return result;
	}
	
}


© 著作权归作者所有

共有 人打赏支持
yabushan
粉丝 1
博文 37
码字总数 34355
作品 0

暂无相关文章

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 39分钟前 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部