Jedis的简单使用
来源:互联网 发布:淘宝客怎样才能赚钱 编辑:程序博客网 时间:2024/05/20 13:09
Redis 是一款开源的,遵守BSD协议的高性能key-value 数据库.
有以下特点:
1,支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash 等数据结构的存储
3,支持数据的备份,及master-slave 模式的数据备份
优势:
1,性能极高,读速度110000次/s,写速度81000次/s
2, 丰富的数据类型支持二进制案例的String,lists,hashes,Sets及OrderedSets 数据类型操作
3,原子Redis 的所有操作都是原子性,同时还支持对几个操作全并后的原子性执行
4,丰富的特性,Redis 还支持pushlish/subscribe。通知,key过期等特性
Jedis 是Redis 官方首选的Java客户端开发包。
下面是jedis的一些使用
列表内容
首先需要在Maven中添加依赖
<!-- redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
初始化Redis 连接池
JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(redisMaxIdle);//最大空闲连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数 config.setMaxTotal(redisMaxTotal);//最大连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数 config.setTestOnBorrow(false); config.setTestOnReturn(false); if ("".equals(redisPassword)) { this.jedisPool = new JedisPool(config, redisServer, 6379, 3000); //参数:config,host,port,timeout } else { this.jedisPool = new JedisPool(config, redisServer, 6379, 3000, redisPassword); //参数:config,host,port,timeout,password }//此段代码需要进行异常处理
获取jedis 实例
jedisPool.getResource()
一般在进行redis 操作时需要按照以下模式,以便及时释放资源
try { //.... } catch (Exception ex) { //... } finally { if (jedis != null) { jedis.close(); } }
也可以和Spring 结合使用,applicationContext.xml 配置如下
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 加载redis配置文件 --> <context:property-placeholder location="classpath:redis.properties"/> <!-- redis连接池的配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxActive" value="${redis.pool.maxActive}"/> <property name="maxIdle" value="${redis.pool.maxIdle}"/> <property name="minIdle" value="${redis.pool.minIdle}"/> <property name="maxWait" value="${redis.pool.maxWait}"/> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/> <property name="testOnReturn" value="${redis.pool.testOnReturn}"/> </bean> <!-- redis的连接池pool,不是必选项:timeout/password --> <bean id = "jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg index="0" ref="jedisPoolConfig"/> <constructor-arg index="1" value="${redis.host}"/> <constructor-arg index="2" value="${redis.port}" type="int"/> <constructor-arg index="3" value="${redis.timeout}" type="int"/> <constructor-arg index="4" value="${redis.password}"/> </bean> </beans>
从Spring 容器中获取JedisPool
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); JedisPool pool = (JedisPool) context.getBean("jedisPool"); Jedis jedis = pool.getResource(); //... pool.returnResource(jedis);
一些常用的方法:
参考:http://blog.csdn.net/u013256816/article/details/51125842
@Test public void test() { Jedis jedis = null; try { jedis = MyConfig.config.getJedisPool().getResource(); //键相关操作 System.out.println("清空数据:" + jedis.flushDB()); System.out.println("判断某个键是否存在:" + jedis.exists("username")); System.out.println("新增<'username','zzh'>的键值对:" + jedis.set("username", "nzs")); System.out.println(jedis.exists("name")); System.out.println("新增<'password','password'>的键值对:" + jedis.set("password", "password")); System.out.print("系统中所有的键如下:"); Set<String> keys = jedis.keys("*"); System.out.println(keys); System.out.println("删除键password:" + jedis.del("password")); System.out.println("判断键password是否存在:" + jedis.exists("password")); System.out.println("设置键username的过期时间为5s:" + jedis.expire("username", 5)); TimeUnit.SECONDS.sleep(2); System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username")); System.out.println("移除键username的生存时间:" + jedis.persist("username")); System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username")); System.out.println("查看键username所存储的值的类型:" + jedis.type("username")); System.out.println("重新设置username(类似set,包含过期时间):" + jedis.setex("username", 10, "nzs")); System.out.println("重新设置username,如果已有,则失败:" + jedis.setnx("username", "nzs")); /* 清空数据:OK 判断某个键是否存在:false 新增<'username','zzh'>的键值对:OK false 新增<'password','password'>的键值对:OK 系统中所有的键如下:[password, username] 删除键password:1 判断键password是否存在:false 设置键username的过期时间为5s:1 查看键username的剩余生存时间:3 移除键username的生存时间:1 查看键username的剩余生存时间:-1 查看键username所存储的值的类型:string 重新设置username(类似set,包含过期时间):OK 重新设置username,如果已有,则失败:0 */ //列表相关 jedis.flushDB(); System.out.println("===========添加一个list==========="); jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap"); jedis.lpush("collections", "HashSet"); jedis.lpush("collections", "TreeSet"); jedis.lpush("collections", "TreeMap"); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));//-1代表倒数第一个元素,-2代表倒数第二个元素 System.out.println("collections区间0-3的元素:" + jedis.lrange("collections", 0, 3)); System.out.println("==============================="); // 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈 System.out.println("删除指定元素个数:" + jedis.lrem("collections", 2, "HashMap")); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("删除下表0-3区间之外的元素:" + jedis.ltrim("collections", 0, 3)); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("collections列表出栈(左端):" + jedis.lpop("collections")); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("collections添加元素,从列表右端,与lpush相对应:" + jedis.rpush("collections", "EnumMap")); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("collections列表出栈(右端):" + jedis.rpop("collections")); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("修改collections指定下标1的内容:" + jedis.lset("collections", 1, "LinkedArrayList")); System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1)); System.out.println("==============================="); System.out.println("collections的长度:" + jedis.llen("collections")); System.out.println("获取collections下标为2的元素:" + jedis.lindex("collections", 2)); System.out.println("==============================="); jedis.lpush("sortedList", "3", "6", "2", "0", "7", "4"); System.out.println("sortedList排序前:" + jedis.lrange("sortedList", 0, -1)); System.out.println(jedis.sort("sortedList")); //排序是取出数据时排序,用lrange 取到的仍是原来的数据 System.out.println("sortedList排序后:" + jedis.lrange("sortedList", 0, -1)); /* ===========添加一个list=========== collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap, WeakHashMap, HashMap, Stack, Vector, ArrayList] collections区间0-3的元素:[TreeMap, TreeSet, HashSet, LinkedHashMap] =============================== 删除指定元素个数:1 collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap, WeakHashMap, Stack, Vector, ArrayList] 删除下表0-3区间之外的元素:OK collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap] collections列表出栈(左端):TreeMap collections的内容:[TreeSet, HashSet, LinkedHashMap] collections添加元素,从列表右端,与lpush相对应:4 collections的内容:[TreeSet, HashSet, LinkedHashMap, EnumMap] collections列表出栈(右端):EnumMap collections的内容:[TreeSet, HashSet, LinkedHashMap] 修改collections指定下标1的内容:OK collections的内容:[TreeSet, LinkedArrayList, LinkedHashMap] =============================== collections的长度:3 获取collections下标为2的元素:LinkedHashMap =============================== sortedList排序前:[4, 7, 0, 2, 6, 3] [0, 2, 3, 4, 6, 7] sortedList排序后:[4, 7, 0, 2, 6, 3] */ //字符串操作 jedis.flushDB(); System.out.println("===========增加数据==========="); System.out.println(jedis.set("key1", "value1")); System.out.println(jedis.set("key2", "value2")); System.out.println(jedis.set("key3", "value3")); System.out.println("删除键key2:" + jedis.del("key2")); System.out.println("获取键key2:" + jedis.get("key2")); System.out.println("修改key1:" + jedis.set("key1", "value1Changed")); System.out.println("获取key1的值:" + jedis.get("key1")); System.out.println("在key3后面加入值:" + jedis.append("key3", "End")); System.out.println("key3的值:" + jedis.get("key3")); System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03")); System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03")); System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03", "key04")); System.out.println("删除多个键值对:" + jedis.del(new String[]{"key01", "key02"})); System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03")); jedis.flushDB(); System.out.println("===========新增键值对防止覆盖原先值=============="); System.out.println(jedis.setnx("key1", "value1")); System.out.println(jedis.setnx("key2", "value2")); System.out.println(jedis.setnx("key2", "value2-new")); System.out.println(jedis.get("key1")); System.out.println(jedis.get("key2")); System.out.println("===========新增键值对并设置有效时间============="); System.out.println(jedis.setex("key3", 2, "value3")); System.out.println(jedis.get("key3")); TimeUnit.SECONDS.sleep(3); System.out.println(jedis.get("key3")); System.out.println("===========获取原值,更新为新值==========");//GETSET is an atomic set this value and return the old value command. System.out.println(jedis.getSet("key2", "key2GetSet")); System.out.println(jedis.get("key2")); System.out.println("获得key2的值的字串:" + jedis.getrange("key2", 2, 4)); /* ===========增加数据=========== OK OK OK 删除键key2:1 获取键key2:null 修改key1:OK 获取key1的值:value1Changed 在key3后面加入值:9 key3的值:value3End 增加多个键值对:OK 获取多个键值对:[value01, value02, value03] 获取多个键值对:[value01, value02, value03, null] 删除多个键值对:2 获取多个键值对:[null, null, value03] ===========新增键值对防止覆盖原先值============== 1 1 0 value1 value2 ===========新增键值对并设置有效时间============= OK value3 null ===========获取原值,更新为新值========== value2 key2GetSet 获得key2的值的字串:y2G */ //整数浮点数 jedis.flushDB(); jedis.set("key1", "1"); jedis.set("key2", "2"); jedis.set("key3", "2.3"); System.out.println("key1的值:"+jedis.get("key1")); System.out.println("key2的值:"+jedis.get("key2")); System.out.println("key1的值加1:"+jedis.incr("key1")); System.out.println("获取key1的值:"+jedis.get("key1")); System.out.println("key2的值减1:"+jedis.decr("key2")); System.out.println("获取key2的值:"+jedis.get("key2")); System.out.println("将key1的值加上整数5:"+jedis.incrBy("key1", 5)); System.out.println("获取key1的值:"+jedis.get("key1")); System.out.println("将key2的值减去整数5:"+jedis.decrBy("key2", 5)); System.out.println("获取key2的值:"+jedis.get("key2")); System.out.println("key3加2.5:"+jedis.incrByFloat("key3",2.5)); System.out.println("获取key3的值:"+jedis.get("key3")); System.out.println("key3加2.5:"+jedis.incrByFloat("key3",2.5)); System.out.println("获取key3的值:"+jedis.get("key3")); /* key1的值:1 key2的值:2 key1的值加1:2 获取key1的值:2 key2的值减1:1 获取key2的值:1 将key1的值加上整数5:7 获取key1的值:7 将key2的值减去整数5:-4 获取key2的值:-4 key3加2.5:4.8 获取key3的值:4.8 key3加2.5:7.3 获取key3的值:7.3 */ //集合 jedis.flushDB(); System.out.println("============向集合中添加元素============"); System.out.println(jedis.sadd("eleSet", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5")); System.out.println(jedis.sadd("eleSet", "e6")); System.out.println(jedis.sadd("eleSet", "e6")); System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet")); System.out.println("删除一个元素e0:" + jedis.srem("eleSet", "e0")); System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet")); System.out.println("删除两个元素e7和e6:" + jedis.srem("eleSet", "e7", "e6")); System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet")); System.out.println("随机的移除集合中的一个元素:" + jedis.spop("eleSet")); System.out.println("随机的移除集合中的一个元素:" + jedis.spop("eleSet")); System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet")); System.out.println("eleSet中包含元素的个数:" + jedis.scard("eleSet")); System.out.println("e3是否在eleSet中:" + jedis.sismember("eleSet", "e3")); System.out.println("e1是否在eleSet中:" + jedis.sismember("eleSet", "e1")); System.out.println("e1是否在eleSet中:" + jedis.sismember("eleSet", "e5")); System.out.println("================================="); System.out.println(jedis.sadd("eleSet1", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5")); System.out.println(jedis.sadd("eleSet2", "e1", "e2", "e4", "e3", "e0", "e8")); System.out.println("将eleSet1中删除e1并存入eleSet3中:" + jedis.smove("eleSet1", "eleSet3", "e1")); System.out.println("将eleSet1中删除e2并存入eleSet3中:" + jedis.smove("eleSet1", "eleSet3", "e2")); System.out.println("eleSet1中的元素:" + jedis.smembers("eleSet1")); System.out.println("eleSet3中的元素:" + jedis.smembers("eleSet3")); System.out.println("============集合运算================="); System.out.println("eleSet1中的元素:" + jedis.smembers("eleSet1")); System.out.println("eleSet2中的元素:" + jedis.smembers("eleSet2")); System.out.println("eleSet1和eleSet2的交集:" + jedis.sinter("eleSet1", "eleSet2")); System.out.println("eleSet1和eleSet2的并集:" + jedis.sunion("eleSet1", "eleSet2")); //eleSet1中有,eleSet2中没有 System.out.println("eleSet1和eleSet2的差集:" + jedis.sdiff("eleSet1", "eleSet2")); /* ============向集合中添加元素============ 8 1 0 eleSet的所有元素为:[e2, e8, e5, e7, e4, e3, e1, e6, e0] 删除一个元素e0:1 eleSet的所有元素为:[e8, e5, e7, e4, e3, e1, e6, e2] 删除两个元素e7和e6:2 eleSet的所有元素为:[e4, e3, e1, e8, e2, e5] 随机的移除集合中的一个元素:e4 随机的移除集合中的一个元素:e2 eleSet的所有元素为:[e1, e8, e5, e3] eleSet中包含元素的个数:4 e3是否在eleSet中:true e1是否在eleSet中:true e1是否在eleSet中:true ================================= 8 6 将eleSet1中删除e1并存入eleSet3中:1 将eleSet1中删除e2并存入eleSet3中:1 eleSet1中的元素:[e0, e8, e5, e7, e4, e3] eleSet3中的元素:[e1, e2] ============集合运算================= eleSet1中的元素:[e0, e8, e5, e7, e4, e3] eleSet2中的元素:[e2, e4, e3, e1, e0, e8] eleSet1和eleSet2的交集:[e0, e8, e4, e3] eleSet1和eleSet2的并集:[e8, e5, e7, e4, e3, e1, e0, e2] eleSet1和eleSet2的差集:[e5, e7] */ //hash jedis.flushDB(); Map<String,String> map = new HashMap<>(); map.put("key1","value1"); map.put("key2","value2"); map.put("key3","value3"); map.put("key4","value4"); jedis.hmset("hash",map); jedis.hset("hash", "key5", "value5"); System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));//return Map<String,String> System.out.println("散列hash的所有键为:"+jedis.hkeys("hash"));//return Set<String> System.out.println("散列hash的所有值为:"+jedis.hvals("hash"));//return List<String> System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 6)); System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash")); System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 3)); System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash")); System.out.println("删除一个或者多个键值对:"+jedis.hdel("hash", "key2")); System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash")); System.out.println("散列hash中键值对的个数:"+jedis.hlen("hash")); System.out.println("判断hash中是否存在key2:"+jedis.hexists("hash","key2")); System.out.println("判断hash中是否存在key3:"+jedis.hexists("hash","key3")); System.out.println("获取hash中的值:"+jedis.hmget("hash","key3")); System.out.println("获取hash中的值:"+jedis.hmget("hash","key3","key4")); /* 散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key3=value3, key4=value4} 散列hash的所有键为:[key1, key2, key5, key3, key4] 散列hash的所有值为:[value2, value3, value1, value4, value5] 将key6保存的值加上一个整数,如果key6不存在则添加key6:6 散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key6=6, key3=value3, key4=value4} 将key6保存的值加上一个整数,如果key6不存在则添加key6:9 散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key6=9, key3=value3, key4=value4} 删除一个或者多个键值对:1 散列hash的所有键值对为:{key1=value1, key5=value5, key6=9, key3=value3, key4=value4} 散列hash中键值对的个数:5 判断hash中是否存在key2:false 判断hash中是否存在key3:true 获取hash中的值:[value3] 获取hash中的值:[value3, value4] */ //有序集合 jedis.flushDB(); Map<String, Double> map1 = new HashMap<>(); map1.put("key2", 1.2); map1.put("key3", 4.0); map1.put("key4", 5.0); map1.put("key5", 0.2); System.out.println(jedis.zadd("zset", 3, "key1")); System.out.println(jedis.zadd("zset", map1)); System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1)); System.out.println("zset中的所有元素:" + jedis.zrangeWithScores("zset", 0, -1)); System.out.println("zset中的所有元素:" + jedis.zrangeByScore("zset", 0, 100)); System.out.println("zset中的所有元素:" + jedis.zrangeByScoreWithScores("zset", 0, 100)); System.out.println("zset中key2的分值:" + jedis.zscore("zset", "key2")); System.out.println("zset中key2的排名:" + jedis.zrank("zset", "key2")); System.out.println("删除zset中的元素key3:" + jedis.zrem("zset", "key3")); System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1)); System.out.println("zset中元素的个数:" + jedis.zcard("zset")); System.out.println("zset中分值在1-4之间的元素的个数:" + jedis.zcount("zset", 1, 4)); System.out.println("key2的分值加上5:" + jedis.zincrby("zset", 5, "key2")); System.out.println("key3的分值加上4:" + jedis.zincrby("zset", 4, "key3")); System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1)); /* 1 4 zset中的所有元素:[key5, key2, key1, key3, key4] zset中的所有元素:[[[107, 101, 121, 53],0.2], [[107, 101, 121, 50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121, 51],4.0], [[107, 101, 121, 52],5.0]] zset中的所有元素:[key5, key2, key1, key3, key4] zset中的所有元素:[[[107, 101, 121, 53],0.2], [[107, 101, 121, 50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121, 51],4.0], [[107, 101, 121, 52],5.0]] zset中key2的分值:1.2 zset中key2的排名:1 删除zset中的元素key3:1 zset中的所有元素:[key5, key2, key1, key4] zset中元素的个数:4 zset中分值在1-4之间的元素的个数:2 key2的分值加上5:6.2 key3的分值加上4:4.0 zset中的所有元素:[key5, key1, key3, key4, key2] */ //排序 jedis.flushDB(); jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap"); System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1)); SortingParams sortingParameters = new SortingParams(); System.out.println(jedis.sort("collections",sortingParameters.alpha())); System.out.println("==============================="); jedis.lpush("sortedList", "3","6","2","0","7","4"); System.out.println("sortedList排序前:"+jedis.lrange("sortedList", 0, -1)); System.out.println("升序:"+jedis.sort("sortedList", sortingParameters.asc())); System.out.println("升序:"+jedis.sort("sortedList", sortingParameters.desc())); System.out.println("==============================="); jedis.lpush("userlist", "33"); jedis.lpush("userlist", "22"); jedis.lpush("userlist", "55"); jedis.lpush("userlist", "11"); jedis.hset("user:66", "name", "66"); jedis.hset("user:55", "name", "55"); jedis.hset("user:33", "name", "33"); jedis.hset("user:22", "name", "79"); jedis.hset("user:11", "name", "24"); jedis.hset("user:11", "add", "beijing"); jedis.hset("user:22", "add", "shanghai"); jedis.hset("user:33", "add", "guangzhou"); jedis.hset("user:55", "add", "chongqing"); jedis.hset("user:66", "add", "xi'an"); sortingParameters = new SortingParams(); sortingParameters.get("user:*->name"); sortingParameters.get("user:*->add"); System.out.println(jedis.sort("userlist",sortingParameters)); System.out.println(jedis.lrange("userlist",0,-1)); /* collections的内容:[LinkedHashMap, WeakHashMap, HashMap, Stack, Vector, ArrayList] [ArrayList, HashMap, LinkedHashMap, Stack, Vector, WeakHashMap] =============================== sortedList排序前:[4, 7, 0, 2, 6, 3] 升序:[0, 2, 3, 4, 6, 7] 升序:[7, 6, 4, 3, 2, 0] =============================== [24, beijing, 79, shanghai, 33, guangzhou, 55, chongqing] [11, 55, 22, 33] */ } catch (Exception ex) { ex.printStackTrace(); } finally { if (jedis != null) { jedis.close(); } } }
阅读全文
0 0
- Jedis的简单使用
- Jedis的简单使用
- redis客户端jedis的简单使用
- jedis简单使用
- Jedis简单使用
- jedis简单使用
- Redis --- Jedis 使用简单示例
- Spring中简单使用jedis
- jedis与spring整合及简单的使用RedisTemplate操作
- jedis与spring整合及简单的使用RedisTemplate操作
- Jedis的使用
- Jedis的使用
- Java-Jedis的使用
- jedis 客户端的使用
- jedis的使用案例
- Jedis的使用
- Jedis的使用总结
- Jedis的使用
- DFS and BFS (一)
- android6.0悬浮窗权限问题(eg:魅族)
- JSP
- muduo网络库
- 2017 计蒜之道 初赛 第五场——A. UCloud 机房的网络搭建
- Jedis的简单使用
- Android5.0使用全透明状态栏
- android 选择图片
- Resizing Combo Dropdown Columns
- Android中检测App是否安装的方法.
- 网易饥饿的小易
- Ubuntu14.04下载、编译Android 6.0源码,并导入Android Studio
- [HDU3861]The King's Problem(Tarjan缩点+二分图匹配)
- linux下使用yum安装MySQL