• Java使用Jedis操作Redis大全


    Java操作Redis需要导入两个jar:
    •   commons-pool2-2.4.2.jar
    •   jedis-2.1.0.jar
    package com.chinasofti.test;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.logging.Logger;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import redis.clients.jedis.Jedis;
    
    /**
     * Java连接Redis测试
     * @author liuhl
     *
     */
    public class ConnRedis {
    
        Jedis jedis;
    
        @Before
        public void init(){
            jedis = new Jedis("localhost", 6379, 30);
            jedis.auth("admin");
        }
        
        /**
         * 测试Redis对字符串的操作
         * set():添加一个新字符串
         * append():向已有的key所对应的value上面追加值
         * del():删除某个键
         * mset():设置多个键值对
         * incr(k):对该可以进行+1操作
         * @author liuhl
         */
        @Test
        public void testRedisString(){
            jedis.set("username", "sMith kevens");
            jedis.append("username", "是Redis开发者");
            System.out.println(jedis.get("username")+"------------");
            //删除某个键
            jedis.del("date");
            System.out.println(jedis.get("date")+"======");
            //设置多个键值对
            jedis.mset("nicheng","shubiao","QAge","3","QQnumber","906058683","sex","man");
            jedis.incr("QAge");//进行+1操作
            System.out.println(jedis.get("nicheng")+":"+jedis.get("QAge")+":"+jedis.get("QQnumber")+":"+jedis.get("sex"));
        }
        
        /**
         * Redis对List的操作
         * llen():获取列表size
         * lpush():向列表左侧插入元素
         * rpush():向列表右侧插入元素
         * lrange("",0,-1):获取列表所有元素
         * @author liuhl
         */
        @Test
        public void testRedisList(){
            //开始前先移除所有的内容
            jedis.del("javaframe work");
            System.out.println(jedis.lrange("java framework", 0, -1));
            //定义列表frame work,并向其中添加三条数据
            jedis.lpush("javaframe work", "struts2");
            jedis.lpush("javaframe work", "spring");
            jedis.lpush("javaframe work", "hibernate");
            System.out.println(jedis.llen("javaframe work")+"个");
            System.out.println(jedis.lrange("javaframe work", 0, -1));
            
            //向列表右侧添加元素
            jedis.rpush("javaframe work", "ibatis");
            jedis.rpush("javaframe work", "mybatis");
            jedis.rpush("javaframe work", "springmvc");
            System.out.println(jedis.lrange("javaframe work", 0, -1));
        }
        
        /**
         *Jedis操作无序列表(Set) 
         *sadd():向无序列表插入元素
         *smembers():获取所有加入的value
         *srem():移除
         *sismember():判断一个值是不是某个集合的元素,返回boolean
         *scard():返回集合元素的个数
         *srandmember():返回集合中的一个随机元素
         *@author liuhl
         *@return void 
         *@category 
         */
        @Test
        public void testRedisSet(){
            //向无序集合插入元素
            jedis.sadd("user", "yanbao");
            jedis.sadd("user", "chengyi");
            jedis.sadd("user", "fanwei");
            //移除
            jedis.srem("user", "chengyi");
            System.out.println(jedis.smembers("user"));
            System.err.println(jedis.sismember("user", "yunfei"));
            System.out.println(jedis.scard("user"));
            System.out.println(jedis.srandmember("user"));
        }
        
        /**
         * 测试列表排序sort
         * redis:Lists是双向链表
         * 排序前先清掉列表,后添加数据测试
         * @exception  InterruptedException:检查异常
         * @author liuhl
         */
        @Test
        public void testListSort() throws InterruptedException{
            jedis.del("arr");
            jedis.lpush("arr", "4");
            jedis.lpush("arr", "78");
            jedis.lpush("arr", "2");
            jedis.lpush("arr", "9");
            jedis.lpush("arr", "7");
            jedis.rpush("arr", "120");
            jedis.rpush("arr", "91");
            jedis.rpush("arr", "88");
            jedis.rpush("arr", "31");
            jedis.rpush("arr", "10");
            System.out.println("排序前:"+jedis.lrange("arr", 0, -1));
            System.out.println("排序后:"+jedis.sort("arr"));
            
            
        }
        
        /**
         * 
         * 测试redis有序集合
         * com.chinasofti.test
         * 方法名:testRedisShortZset
         * 创建人:liuhl
         * 时间:2017-4-5-上午10:15:33
         * return: void
         * @exception
         * @since  1.0.0
         * zadd():向有序集合(sorts zsets)中插入一个元素
         * zrange():仅列出所有的元素值。
         */
        @Test
        public void testRedisShortZset(){
            //向有序集合sorts sets插入元素
            jedis.zadd("lhlzset", 6, "http://localhost:8080");
            jedis.zadd("lhlzset", 6, "sort");
            //只列出有序集合的元素
            System.out.println(jedis.zrange("lhlzset", 0, -1));
            System.out.println(jedis.zrangeByScore("lhlzset", 0, 6));
            
        }
        
        /**
         * 
         * 测试hashs哈希
         * com.chinasofti.test
         * 方法名:testHashs
         * 创建人:liuhl
         * 时间:2017-4-6-上午9:46:04
         * return: void
         * @exception
         * @since  1.0.0
         * hmset():建立hashs并赋值
         * hmget():列出hashs相关
         */
        @Test
        public void testHashs(){
            //建立hashs并赋值
            Map<String, String> map = new HashMap<>();
            map.put("首都", "北京");map.put("河南", "洛阳");map.put("陕西", "西安");
            jedis.hmset("china", map);
            //列出hashs的内容
            System.out.println(jedis.hmget("china", "河南"));
            
            
        }
    }
    package com.chinasofti.test;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * Redis连接池
     * 
     * @author Administrator
     * 
     */
    public class RedisUtils {
    
        // Redis服务器IP
        private static String ADDR = "127.0.0.1";
        // redis端口号
        private static int PORT = 6379;
        // 访问密码
        private static String AUTH = "admin";
        /**
         * 可用连接实例的最大数目,默认为8,如果赋值为-1,则表示不限制,
         * 如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
         */
        private static int MAX_ACTIVE = 1024;
        // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
        private static int MAX_IDLE = 200;
        // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
        private static int MAX_WAIT = 10000;
        private static int TIMEOUT = 10000;
        // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
        private static boolean TEST_ON_BORROW = true;
        private static JedisPool jedisPool = null;
        // 初始化连接池
        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);
                // 注释的这两行为jdk版本问题导致,可忽略
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取redis实例
         */
        public synchronized static Jedis getJedis() {
            try {
                if (jedisPool != null) {
                    Jedis jedis = jedisPool.getResource();
                    return jedis;
                } else {
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        /**
         * 
         * @param jedis
         */
        public static void returnResource(final Jedis jedis) {
            if (jedis != null) {
                jedisPool.returnResource(jedis);// 关闭操作已经在此处处理了
            }
        }
        
    }
  • 相关阅读:
    很好很強大..
    [草稿]初次接触RoR+MySQL之资源收集篇
    我的首页收藏链接之07年前的LIST
    生成不重复随机数
    The C# Programming Language(Third Edition) Part I
    The C# Programming Language(Third Edition) Part III
    The C# Programming Language(Third Edition) Part II
    求职技术题目收集② 算法
    求职路姊妹篇 笔试
    求职技术题目收集① 数据结构
  • 原文地址:https://www.cnblogs.com/lhl-shubiao/p/Redis.html
Copyright © 2020-2023  润新知