首页 > 代码库 > redis简单示例
redis简单示例
package com.chauvet.utils.redis;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.apache.commons.lang.StringUtils;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public final class RedisClient { private static String ADDR = "127.0.0.1"; //Redis服务器IP private static int PORT = 6379; //Redis的端口号 private static String AUTH = null;//"admin";//访问密码 private static int MAX_ACTIVE = 1024;//可用连接实例的最大数目,默认值为8;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 private static int MAX_IDLE = 200; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_WAIT = 10000;//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException; private static int TIMEOUT = 10000; private static boolean TEST_ON_BORROW = true;//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static JedisPool jedisPool = null; /** * 初始化Redis连接池 */ static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); config.setMaxWait(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); } catch (Exception e) { e.printStackTrace(); } } /** * 获取Jedis实例 * @return */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); return resource; } return null; } catch (Exception e) { e.printStackTrace(); return null; } } private static Jedis jedis = getJedis(); /** * 释放jedis资源 * @param jedis */ public static void returnResource(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); } } /*** * 清空所有db */ public static void flushAll(){ jedis.flushAll(); RedisClient.returnResource(jedis); } /*** * 清空当前db */ public static void flushDb(){ jedis.flushDB(); RedisClient.returnResource(jedis); } /*** * 模糊查询所有的key * 例如 所有 包含‘name’的key * @param key * 用法说明: *key* 包含key, key* 以key开头, *key 以key结尾 * @return * 返回的是key集合 不是 value */ public static Set<String> getAllKeySetByParrten(String key){ Set<String> keySet = new HashSet<String>(); if(StringUtils.isNotBlank(key)){ keySet = jedis.keys(key); } RedisClient.returnResource(jedis); return keySet; } /*** * 判断当前key是否已经存在于redis中 * @param key * @return */ public static boolean isExistsKey(String key){ boolean isExists = false; if(StringUtils.isNotBlank(key)){ isExists = jedis.exists(key); } RedisClient.returnResource(jedis); return isExists; } /*** * 存key并且有超时时间 * @param key * @param seconds * @param value */ public static void setKeyByTimeout(String key,int seconds,String value){ if(StringUtils.isNotBlank(key) && StringUtils.isNotBlank(value)){ jedis.setex(key, seconds, value); RedisClient.returnResource(jedis); } } /*** * 获取key的剩余超时时间 * @param key * @return */ public static long gettime(String key){ long time = 0; if(StringUtils.isNotBlank(key)){ time = jedis.ttl(key); } RedisClient.returnResource(jedis); return time; } /*** * 取消超时时间的设置 * @param key */ public static void cancleTime(String key){ if(StringUtils.isNotBlank(key)){ jedis.persist(key); } RedisClient.returnResource(jedis); } /*** * int类型 递增/递减:incr()/decr() * @param key * key * @param type * 0递增/1递减 */ public static void valueIncrOrDecr(String key,int type){ if(StringUtils.isNotBlank(key)){ switch (type) { case 0: jedis.incr(key); // 递增 break; case 1: jedis.decr(key); ///递减 break; } } RedisClient.returnResource(jedis); } /*** * 存单个string类型 * @param key * @param value */ public static void setStringVal(String key,String value){ if(StringUtils.isNotBlank(key)&&StringUtils.isNotBlank(value)){// Jedis jedis = RedisClient.getJedis(); jedis.set(key, value); RedisClient.returnResource(jedis); } } /*** * 根据key获取单个value * @param key * @return */ public static String getStringVal(String key){ String value = null; if(StringUtils.isNotBlank(key)){// Jedis jedis = RedisClient.getJedis(); value =http://www.mamicode.com/ jedis.get(key); RedisClient.returnResource(jedis); } return value; } /*** * 根据key 给value后面拼加 * @param key * @param appendVal */ public static void appendStringVal(String key,String appendVal){ if(StringUtils.isNotBlank(key)&&StringUtils.isNotBlank(appendVal)){ jedis.append(key, appendVal); RedisClient.returnResource(jedis); } } /*** * 根据key删除单个 * @param key */ public static void delStringVal(String key){ if(StringUtils.isNotBlank(key)){ jedis.del(key); RedisClient.returnResource(jedis); } } /*** * 存多个String * @param keys * @param values */// public static void mSetStringVal(String[] keys,String[] values){// if((null != keys && keys.length > 0) && (null != values && values.length > 0)){// for (String str : keys) {// // }// }// // } /*** * 存Map * @param key * @param map */ public static void setMapValue(String key,Map<String, String> map){ if(StringUtils.isNotBlank(key) && null != map){ jedis.hmset(key, map); RedisClient.returnResource(jedis); } } /*** * 根据key获取map中的值 * @param key * redis里面的key * @param mapKeys * map里面的key 可以传多个 * @return */ public static List<String> getMapValue(String key,String ... mapKeys){ List<String> strList = new ArrayList<String>(); if(StringUtils.isNotBlank(key) && (null != mapKeys && mapKeys.length > 0)){ strList = jedis.hmget(key, mapKeys); RedisClient.returnResource(jedis); } return strList; } /*** * 删除map中的某个键值 * @param key * redis里面的key * @param mapKey * map里面的key */ public static void delMapKey(String key,String... mapKey){ if(StringUtils.isNotBlank(key) && (null != mapKey && mapKey.length > 0)){ jedis.hdel(key, mapKey); RedisClient.returnResource(jedis); } } /*** * 获取map里面的所有的key * @param key */ public static void getMapKey(String key){ Iterator<String> iter=jedis.hkeys(key).iterator(); while (iter.hasNext()){ String mapKey = iter.next(); System.out.println(mapKey+":"+jedis.hmget(key,mapKey)); } RedisClient.returnResource(jedis); } /*** * 存List * lpush方式存入,先进后出 * @param key * @param value */ public static void setListValueByLpush(String key,String... values){ if(StringUtils.isNotBlank(key) && (null != values && values.length > 0)){ jedis.lpush(key, values); } RedisClient.returnResource(jedis); } /*** * 存List * rpush方式存入,先进先出 * @param key * @param value */ public static void setListValueByRpush(String key,String... values){ if(StringUtils.isNotBlank(key) && (null != values && values.length > 0)){ jedis.rpush(key, values); } RedisClient.returnResource(jedis); } /*** * 对List排序 * @param key */ public static void sortList(String key){ if(StringUtils.isNotBlank(key)){ jedis.sort(key); } } /*** * 获取redis中的list * lrange是按范围取出 * @param key * key * @param beginIndex * 起点位置 * @param endIndex * 是结束位置, -1表示取得所有 ,jedis.llen获取长度 * * @return */ public static List<String> getListValue(String key,long beginIndex,long endIndex){ List<String> listStr = new ArrayList<String>(); if(StringUtils.isNotBlank(key)){ listStr = jedis.lrange(key, beginIndex, endIndex); } RedisClient.returnResource(jedis); return listStr; } /*** * 清空指定key存放的list * @param key */ public static void flushListValue(String... keys){ if(null != keys && keys.length > 0){ jedis.del(keys); RedisClient.returnResource(jedis); } } /*** * 将Set存入redis * @param key * @param value */ public static void setSetValue(String key,String... values){ if(StringUtils.isNotBlank(key) && (null != values && values.length > 0)){ jedis.sadd(key, values); } RedisClient.returnResource(jedis); } /*** * 获取redis存放的set * 无序 * @param key * @return */ public static Set<String> getSetListByKey(String key){ Set<String> valSet = new HashSet<String>(); if(StringUtils.isNotBlank(key)){ valSet = jedis.smembers(key); RedisClient.returnResource(jedis); } return valSet; } /*** * 移除set中的key * @param key * @param setKeys */ public static void removeSetValue(String key,String... setKeys){ if(StringUtils.isNotBlank(key) && (null != setKeys && setKeys.length > 0)){ jedis.srem(key,setKeys); RedisClient.returnResource(jedis); } } /*** * 判断setKey是否是key的元素 * @param key * @param setKey * @return */ public static boolean isKeyInSet(String key,String setKey){ boolean isExists = false; if(StringUtils.isNotEmpty(key) && StringUtils.isNotBlank(setKey)){ isExists = jedis.sismember(key,setKey); } RedisClient.returnResource(jedis); return isExists; } /*** * 获取set中元素的个数 * @param key * @return */ public static long getSetValueCount(String key){ long count = 0; if(StringUtils.isNotBlank(key)){ count = jedis.scard(key); } RedisClient.returnResource(jedis); return count; } /*** * 随机获取一个set元素 * @param key * @return */ public static String getSetValueByRandem(String key){ String value = null; if(StringUtils.isNotBlank(key)){ value = jedis.srandmember(key); } RedisClient.returnResource(jedis); return value; } public static void main(String[] args) { /*Jedis jedis = RedisClient.getJedis(); jedis.set("name", "wxw"); System.out.println(jedis.get("name")); RedisClient.returnResource(jedis);*/ /*RedisClient.flushAll(); RedisClient.setStringVal("name","wxw"); System.out.println(RedisClient.getStringVal("name")); RedisClient.appendStringVal("name", " is me!"); System.out.println(RedisClient.getStringVal("name"));*/ /*Map<String,String> mapStr = new HashMap<String, String>(); mapStr.put("1", "11"); mapStr.put("2", "22"); mapStr.put("3", "33"); mapStr.put("4", "44"); RedisClient.setMapValue("wxwMap", mapStr); RedisClient.getMapValue("wxwMap", "1","3");*/ /*RedisClient.setStringVal("age", "22"); RedisClient.jedis.incr("age"); // 值 递增/递减:incr()/decr() System.out.println(RedisClient.getStringVal("age"));*/ /*jedis.lpush("wxw", "my"); jedis.lpush("wxw", "name"); jedis.lpush("wxw", "is"); jedis.lpush("wxw", "chauvet"); System.out.println(jedis.lrange("wxw",0,-1)); */ /*jedis.del("wxw"); jedis.rpush("wxw", "my"); jedis.rpush("wxw", "name"); jedis.rpush("wxw", "is"); jedis.rpush("wxw", "chauvet"); System.out.println(jedis.lrange("wxw",0,-1));*/ // jedis.srem("user","w","x","w","a","s","1","2","3","4","5");// jedis.sadd("user", "w","x","w","a","s","1","2","3","4","5");// System.out.println(jedis.smembers("user"));// System.out.println(jedis.srandmember("user")); // 随机获取一个元素// System.out.println(jedis.sismember("user", "a"));//判断 who 是否是user集合的元素 /* Jedis jedis = RedisClient.getJedis(); jedis.set("name", "wxw"); System.out.println(jedis.keys("*am*")); RedisClient.returnResource(jedis);*/ /*5. 事务支持: @ 获取事务: Transaction tx = jedis.multi(); @ 批量操作:tx采用和jedis一致的API接口 for(int i = 0;i < 10;i ++) { tx.set("key" + i, "value" + i); System.out.println("--------key" + i); Thread.sleep(1000); } @ 执行事务:针对每一个操作,返回其执行的结果,成功即为Ok List<Object> results = tx.exec();*/ }}
redis简单示例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。