博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis部分数据结构方法小结
阅读量:5134 次
发布时间:2019-06-13

本文共 8946 字,大约阅读时间需要 29 分钟。

package com.practice.util;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class RedisUtil {	private static final Log log = LogFactory.getLog(RedisUtil.class);     private static JedisPool jedisPool;//非切片连接池        private static final Object lock = new Object();        private static final int DEFAULT_TIME_OUT = 30000;        private static String redisIp = "192.168.77.153";        private static Integer redisPort = 7000;        /**	 * 构建redis切片连接池	 * 	 * @param ip	 * @param port	 * @return JedisPool	 */    public static JedisPool getJedisPool() {        if (jedisPool == null) {            synchronized (lock) {            	if (jedisPool == null) {                    JedisPoolConfig config = new JedisPoolConfig();                    //设置连接池初始化大小和最大容量                                        // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;                    // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。                    config.setMaxTotal(-1);                                        // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。                    config.setMaxIdle(1000);                    // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;                    config.setMaxWaitMillis(1000 * 30);                    // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;                    config.setTestOnBorrow(true);                    // 写                    jedisPool = new JedisPool(config, redisIp, redisPort,DEFAULT_TIME_OUT);                                    }            }        }        return jedisPool;    }        /**     * 返还到连接池     *      * @param pool      * @param redis     */    public static void returnJedisResource(Jedis redis) {        if (redis != null) {            redis.close();        }    }        //直接set key-value    public static void setStructure(String key,String value){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.set(key, value);        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        public static void getSetStructure(String key){    	JedisPool pool = null;        Jedis jedis = null;        String value = "";        try {            pool = getJedisPool();            jedis = pool.getResource();            value = jedis.get(key);            System.out.println(value);        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //通过key删除数据    public static void delKey(String key){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.del(key);            System.out.println("del key success");        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //mset相当于 jedis.set("key1","value1");jedis.set("key2","value2")    public static void msetData(String key1,String value1,String key2,String value2){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.mset(key1,value1,key2,value2);        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        public static void flushData(){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.flushAll();            System.out.println("flushAll success");        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //判断key是否存在,如果存在则返回1,否则则返回0     public static boolean booleanExsit(String key){    	JedisPool pool = null;        Jedis jedis = null;        Boolean exsit = false;        try {            pool = getJedisPool();            jedis = pool.getResource();            exsit =  jedis.exists(key);        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }		return exsit;    }        public static void appendData(String key,String data){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.append(key, data);        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //截取value的值    public static void getRange(String key){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            String value = jedis.getrange(key, 0, 1);            System.out.println(value);            System.out.println();        } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //列表操作 用于将一个或多个值插入到列表的尾部(最右边), 如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。    public static void rpush(String key){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            jedis.rpush(key, "Hello how are you?");              jedis.rpush(key, "Fine thanks. I'm having fun with redis.");              jedis.rpush(key, "I should look into this NOSQL thing ASAP");                     } catch (Exception e) {            log.error(e);        } finally {            //返还到连接池        	  returnJedisResource(jedis);        }    }        //取出列表中相应位置的值    public static void getPushValue(String key){    	JedisPool pool = null;        Jedis jedis = null;        try {            pool = getJedisPool();            jedis = pool.getResource();            //第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有              List
values = jedis.lrange(key, 0, -1); System.out.println(values); } catch (Exception e) { log.error(e); } finally { //返还到连接池 returnJedisResource(jedis); } } public static void Set(String key){ JedisPool pool = null; Jedis jedis = null; try { pool = getJedisPool(); jedis = pool.getResource(); jedis.sadd("myset", "1"); jedis.sadd("myset", "2"); jedis.sadd("myset", "3"); jedis.sadd("myset", "4"); Set
setValues = jedis.smembers("myset"); System.out.println(setValues); } catch (Exception e) { log.error(e); } finally { //返还到连接池 returnJedisResource(jedis); } } public static void srem(String key){ JedisPool pool = null; Jedis jedis = null; try { pool = getJedisPool(); jedis = pool.getResource(); jedis.srem(key, "4"); Set
setValues = jedis.smembers("myset"); System.out.println(setValues); } catch (Exception e) { log.error(e); } finally { //返还到连接池 returnJedisResource(jedis); } } public static void hmset(){ JedisPool pool = null; Jedis jedis = null; try { pool = getJedisPool(); jedis = pool.getResource(); Map
pairs = new HashMap
(); pairs.put("name", "Akshi"); pairs.put("age", "2"); pairs.put("sex", "Female"); jedis.hmset("kid", pairs); List
name = jedis.hmget("kid", "name"); System.out.println(name); } catch (Exception e) { log.error(e); } finally { //返还到连接池 returnJedisResource(jedis); } } public static void increment(){ JedisPool pool = null; Jedis jedis = null; try { pool = getJedisPool(); jedis = pool.getResource(); jedis.hset("hashs", "entryKey", "1"); jedis.hset("hashs", "entryKey1", "entryValue1"); jedis.hset("hashs", "entryKey2", "entryValue2"); // 判断某个值是否存在 jedis.hexists("hashs", "entryKey"); System.out.println(jedis.hincrBy("hashs", "entryKey", 1)); } catch (Exception e) { log.error(e); } finally { //返还到连接池 returnJedisResource(jedis); } }

  

Redis在工程开发中还是比较常用的Nosql内存数据库,简单巩固一下它的各种数据类型与用法~

转载于:https://www.cnblogs.com/yangsy0915/p/5562110.html

你可能感兴趣的文章
Windows 8实例教程系列 - 布局控制
查看>>
章节2:SQL之多表连接
查看>>
silverlight下多线程处理
查看>>
如何使用ITEXTSHARP将HTML代码字符串写进PDF
查看>>
git bash 出现vim的时候怎么退出
查看>>
React Native开发之IDE(Atom+Nuclide)安装,运行,调试
查看>>
[10月4日的脚本] 获取Office365邮箱文件夹的权限
查看>>
PHP压缩文件操作
查看>>
PHP curl扩展实现数据抓取
查看>>
生成随机密钥
查看>>
falsk 请求钩子
查看>>
8-过滤器Filter和监听器Listener
查看>>
从头开始学JavaScript (十三)——Date类型
查看>>
spring mvc 解决csrf跨站请求攻击
查看>>
linux syslog 3
查看>>
PLSQL Developer 特点
查看>>
C#datagridview 合并数据相同的行
查看>>
LINUX环境并发服务器的三种实现模型
查看>>
理解闭包 js回收机制
查看>>
Mac - 如何安全地还原 Mac 的默认字体
查看>>