Redis客户端之Jedis

Redis客户端之Jedis

package com.jredis.demo;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;

public class JedisDemo {


	
    public static void Hello() {  
        Jedis jedis = new Jedis("localhost", 6379);  
        try {  
            // 向key-->name中放入了value-->Hello 
            jedis.set("name", "Hello");  
            String ss = jedis.get("name");  
            System.out.println("---开始-----"+ss);  
  
            // 很直观,类似map 将HinsChan append到已经有的value之后  
            jedis.append("name", ",HinsChan");  
            ss = jedis.get("name");  
            System.out.println("---拼接-----"+ss);  
  
            // 2、直接覆盖原来的数据  
            jedis.set("name", "Navigation");  
            System.out.println("---覆盖-----"+jedis.get("name"));  
  
            // 删除key对应的记录  
            jedis.del("name");  
            System.out.println("---已删除-----"+jedis.get("name"));// 执行结果:null  
  
            /** 
             * mset相当于 jedis.set("key1","minxr"); jedis.set("key2","aaa");
             * MSET key value [key value ...]
				同时设置一个或多个 key-value 对。
				如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
				MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。 
             */  
            jedis.mset("key1", "张三", "key2", "李四");
            System.out.println(); 
            System.out.println(jedis.mget("key2")); 
            System.out.println(jedis.mget("key1", "key2"));  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
           // RedisUtil.getPool().returnResource(jedis); 
        	System.out.println("00");
        }  
  
    } 
    
    //jedis ----key
    public static void testKey() {  
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        System.out.println("=============key==========================");  
        // 清空数据  
        System.out.println("------清空数据--------"+jedis.flushDB());  
        System.out.println(jedis.echo("-------打印---------"+"foo"));//ECHO message 打印一个特定的信息 message ,测试时使用。  
        // 判断key否存在  
        System.out.println("-----判断key否存在----------"+jedis.exists("foo"));  
        jedis.set("key", "values");  
        System.out.println("-----判断key否存在----------"+jedis.exists("key"));  
    }
    
    ///jedis字符串
    public static void testString() {  
        System.out.println("==String==");  
        Jedis jedis =  new Jedis("127.0.0.1", 6379);  
        try {  
            // String  
            jedis.set("key", "Hello World!");  
            String value = jedis.get("key");  
            System.out.println(value);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
           // jedis.flushDB();  
        }  
  
        System.out.println("=============String==========================");  
        // 清空数据  
        System.out.println(jedis.flushDB());  
        // 存储数据  
        jedis.set("foo", "bar");  
        System.out.println(jedis.get("foo"));  
        // 若key不存在,则存储  
        jedis.setnx("foo", "foo not exits");  
        System.out.println(jedis.get("foo"));  
        // 覆盖数据  
        jedis.set("foo", "foo update");  
        System.out.println(jedis.get("foo"));  
        // 追加数据  
        jedis.append("foo", " hello, world");  
        System.out.println(jedis.get("foo"));  
        // 设置key的有效期,并存储数据  ,有效时间为2秒
        jedis.setex("foo", 2, "foo not exits");  
        System.out.println(jedis.get("foo"));  
        try {  
            Thread.sleep(3000);  
        } catch (InterruptedException e) {  
        }  
        System.out.println(jedis.get("foo"));  
        // 获取并更改数据  
        jedis.set("foo", "foo update");  
        System.out.println(jedis.getSet("foo", "foo modify"));//先获取,再更新
        System.out.println("--------"+jedis.get("foo"));
        // 截取value的值  
        System.out.println(jedis.getrange("foo", 1, 3)); 
        
        //一次性设置多个值
        System.out.println(jedis.mset("mset1", "mvalue1", "mset2", "mvalue2",  
                "mset3", "mvalue3", "mset4", "mvalue4"));  
        System.out.println(jedis.mget("mset1", "mset2", "mset3", "mset4")); 
        
        //删除,参数可以是一个字符串数组
        System.out.println(jedis.del(new String[] { "foo", "foo1", "foo3" }));  
    }
    
    ///redis ---list
    public static void testList() {  
        System.out.println("==List==");  
        Jedis jedis =  new Jedis("127.0.0.1", 6379); 
        try {  
            // 开始前,先移除所有的内容  
            jedis.del("messages");  
            jedis.rpush("messages", "Hello how are you?");  
            jedis.rpush("messages", "Fine thanks. I'm having fun with redis.");  
            jedis.rpush("messages", "I should look into this NOSQL thing ASAP");  
  
            // 再取出所有数据jedis.lrange是按范围取出,  
            // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有  
            List<String> values = jedis.lrange("messages", 0, -1);  
            System.out.println(values);  
  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
           // RedisUtil.getPool().returnResource(jedis);  
        }  
  
        // 清空数据  
        System.out.println(jedis.flushDB());  
        // 添加数据  
        jedis.lpush("lists", "vector");
        jedis.lpush("lists", "ArrayList");
        jedis.lpush("lists", "LinkedList");
        // 数组长度  
        System.out.println("------长度---------"+jedis.llen("lists"));  
        // 排序  
        /*
         * list中存字符串时必须指定参数为alpha,如果不使用SortingParams,而是直接使用sort("list"),
         * 会出现"ERR One or more scores can't be converted into double"
         */
        SortingParams sortingParameters = new SortingParams();
        sortingParameters.alpha();
        sortingParameters.limit(0, 3);
        System.out.println("------排序---------"+jedis.sort("lists",sortingParameters));
        // 字串   数组[0]、[1]
        System.out.println("------指定输出的个数---------"+jedis.lrange("lists", 0, 1));  
        // 修改列表中单个值  
        jedis.lset("lists", 0, "hello list!"); 
        System.out.println("------修改列表中单个值 ---------"+jedis.lrange("lists", 0, -1)); 
        // 获取列表指定下标的值  
        System.out.println("------获取第二个---------"+jedis.lindex("lists", 1));  
        // 删除列表指定下标的值  
        System.out.println("------删除第一个---------"+jedis.lrem("lists", 1, "vector"));  
        // 删除区间以外的数据  
        System.out.println("------删除区间以外的数据  ---------"+jedis.ltrim("lists", 0, 1));  
        // 列表出栈  
        System.out.println("------列表出栈  ---------"+jedis.lpop("lists"));  
        // 整个列表值  
        System.out.println("------输出list的值---------"+jedis.lrange("lists", 0, -1));  
    }  
    
    ----jedis-set
    public static void testSet() {  
        System.out.println("==Set==");  
        Jedis jedis =  new Jedis("127.0.0.1", 6379);
        try {  
            jedis.sadd("myset", "1");  
            jedis.sadd("myset", "2");  
            jedis.sadd("myset", "3");  
            jedis.sadd("myset", "4");  
            Set<String> setValues = jedis.smembers("myset");  
            System.out.println(setValues);  
  
            // 移除noname  
            jedis.srem("myset", "4");  
            System.out.println(jedis.smembers("myset"));// 获取所有加入的value  
            System.out.println(jedis.sismember("myset", "4"));// 判断 minxr  
                                                                // 是否是sname集合的元素  
            System.out.println(jedis.scard("sname"));// 返回集合的元素个数  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            //RedisUtil.getPool().returnResource(jedis);  
        }  
  
        // 清空数据  
        System.out.println(jedis.flushDB());  
        // 添加数据  
        jedis.sadd("sets", "HashSet");  
        jedis.sadd("sets", "SortedSet");  
        jedis.sadd("sets", "TreeSet");  
        // 判断value是否在列表中  
        System.out.println(jedis.sismember("sets", "TreeSet"));  
        ;  
        // 整个列表值  
        System.out.println(jedis.smembers("sets"));  
        // 删除指定元素  
        System.out.println(jedis.srem("sets", "SortedSet"));  
        // 出栈  
        System.out.println(jedis.spop("sets"));  
        System.out.println(jedis.smembers("sets"));  
        //  
        jedis.sadd("sets1", "HashSet1");  
        jedis.sadd("sets1", "SortedSet1");  
        jedis.sadd("sets1", "TreeSet");  
        jedis.sadd("sets2", "HashSet2");  
        jedis.sadd("sets2", "SortedSet1");  
        jedis.sadd("sets2", "TreeSet1");  
        // 交集  
        System.out.println(jedis.sinter("sets1", "sets2"));  
        // 并集  
        System.out.println(jedis.sunion("sets1", "sets2"));  
        // 差集  
        System.out.println(jedis.sdiff("sets1", "sets2"));  
    }  
    
	public static void main(String args[]){
		/** 
	     * 在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接, 
	     * 也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, 
	     * JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。 
	     * 这种方式可以解决那些问题并且会实现高效的性能 
	     */ 
		//Hello();
		//testKey();
		//testString();
		//testList();
		testSet();
		
	}
    
}//


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值