和java操作redis简单学习1,1.1一起看,这里是相关方法具体实现:紧接着上文
/** * shardedJedis 操作String * * * 2014年12月15日 下午2:44:57 * liweihan */ private void stringOpeara2() { //jedis具备的功能shardedJedis中也可直接使用,下面测试一些前面没用过的方法 System.out.println("======================String_2=========================="); // 清空数据 System.out.println("清空库中所有数据:"+jedis.flushDB()); //新增键值对时防止覆盖原先值,jedis也可以 System.out.println("=============新增键值对时防止覆盖原先值============="); System.out.println("原先key301不存在时,新增key301:"+shardedJedis.setnx("key301", "value301")); //1 System.out.println("原先key302不存在时,新增key302:"+shardedJedis.setnx("key302", "value302")); //1 System.out.println("当key302存在时,尝试新增key302:"+shardedJedis.setnx("key302", "value302_new"));//0 System.out.println("获取key301对应的值:"+shardedJedis.get("key301")); //value301 System.out.println("获取key302对应的值:"+shardedJedis.get("key302")); //value302 System.out.println("=============超过有效期键值对被删除============="); // 设置key的有效期,并存储数据 System.out.println("新增key303,并指定过期时间为2秒 :"+shardedJedis.setex("key303", 2, "key303-2second")); //OK System.out.println("获取key303对应的值:"+shardedJedis.get("key303")); //key303-2second try{ Thread.sleep(3000); } catch (InterruptedException e){ } System.out.println("3秒之后,获取key303对应的值:"+shardedJedis.get("key303")); System.out.println("=============获取原值,更新为新值一步完成============="); System.out.println("key302原值:"+shardedJedis.getSet("key302", "value302-after-getset")); System.out.println("key302新值:"+shardedJedis.get("key302")); System.out.println("=============获取子串============="); System.out.println("获取key302对应值中的子串:"+shardedJedis.getrange("key302", 5, 7)); }
/** * String功能的测试 * * * 2014年12月15日 下午2:29:27 * liweihan */ private void stringOpeara() { System.out.println("====================== String_1-test =========================="); // 清空数据 System.out.println("清空库中所有数据:"+jedis.flushDB()); //增 System.out.println("=============增============="); jedis.set("key001","value001"); jedis.set("key002","value002"); jedis.set("key003","value003"); System.out.println("已新增的3个键值对如下:"); System.out.println(jedis.get("key001")); System.out.println(jedis.get("key002")); System.out.println(jedis.get("key003")); //删 System.out.println("=============删============="); System.out.println("删除key003键值对:"+jedis.del("key003")); //1 System.out.println("获取key003键对应的值:"+jedis.get("key003")); //改 //1、直接覆盖原来的数据 System.out.println("直接覆盖key001原来的数据:"+jedis.set("key001","value001-update")); System.out.println("获取key001对应的新值:"+jedis.get("key001")); //2、直接覆盖原来的数据 System.out.println("在key002原来值后面追加:"+jedis.append("key002","+appendString")); System.out.println("获取key002对应的新值"+jedis.get("key002")); //增删查多个 System.out.println("=============增,删,查(多个)============="); System.out.println("一次性新增key201,key202,key203,key204及其对应值:"+jedis.mset("key201","value201", "key202","value202","key203","value203","key204","value204")); //OK System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+ jedis.mget("key201","key202","key203","key204")); //数组[value201, value202, value203, value204] System.out.println("一次性删除key201,key202:"+jedis.del(new String[]{"key201", "key202","key205"})); //2 System.out.println("一次性获取key201,key202,key203,key204各自对应的值:"+ jedis.mget("key201","key202","key203","key204")); //[null, null, value203, value204] }
/** * key的功能测试 * * * 2014年12月14日 下午5:42:11 * liweihan */ private void keyOperater() { System.out.println("====================== key-test =========================="); // 清空数据 System.out.println("清空库中所有数据[默认是select 0库]:" + jedis.flushDB()); //OK // 判断key否存在 System.out.println("判断key999键是否存在:" + shardedJedis.exists("key999")); System.out.println("新增key001,value001键值对:"+shardedJedis.set("key001", "value001")); System.out.println("判断key001是否存在:"+shardedJedis.exists("key001")); // 输出系统中所有的key System.out.println("新增key002,value002键值对:"+shardedJedis.set("key002", "value002")); System.out.println("系统中所有键如下:"); Set<String> keys =jedis.keys("*"); Iterator<String> it=keys.iterator() ; while(it.hasNext()){ String key = it.next(); System.out.println(key); } // 删除某个key,若key不存在,则忽略该命令。 System.out.println("系统中删除key002: "+jedis.del("key002")); //1 System.out.println("系统中删除key003: "+jedis.del("key003")); //0 System.out.println("判断key002是否存在:"+shardedJedis.exists("key002")); // 设置 key001的过期时间 System.out.println("设置 key001的过期时间为5秒:"+jedis.expire("key001", 5)); try{ Thread.sleep(2000); } catch (InterruptedException e){ } // 查看某个key的剩余生存时间,单位【秒】.永久生存或者不存在的都返回-1 System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001"));//3 System.out.println("查看key002的剩余生存时间:"+jedis.ttl("key002")); //-2说明该key002不存在 // 移除某个key的生存时间 System.out.println("移除key001的生存时间:"+jedis.persist("key001")); //1 System.out.println("查看key001的剩余生存时间:"+jedis.ttl("key001")); //-1 // 查看key所储存的值的类型 System.out.println("查看key所储存的值的类型:"+jedis.type("key001")); //修改键名 System.out.println("修改key001的键名:" + jedis.rename("key001", "key001_new")); //0K //当前DB的key移动到其他给定的DB中 System.out.println("移动key001_new到DB2中:" + jedis.move("key001_new", 2));//1 }
测试类:
package com.hanchao.testredis; /** * @author liweihan * @version 1.0 (2014年12月14日 下午2:38:26) */ public class TestRedis1 { public static void main(String[] args) { new RedisClent().show(); } }
您可以可以参考这篇文章:http://www.cnblogs.com/edisonfeng/p/3571870.html
2014-12-23-加
集群加密码:分布式的redis,加密码了,但是对于只读的redis是不能写的。建议这种集群只用于读就行了。
/** * 初始化切片池 * http://yychao.iteye.com/blog/1751583 * 2014年12月14日 下午5:33:56 * liweihan */ private void initialShardedPool() { //池子基本配置 JedisPoolConfig config = new JedisPoolConfig(); //控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取; //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。 config.setMaxActive(20); //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。 config.setMaxIdle(5); //表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException; config.setMaxWait(10000L); ////在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; config.setTestOnBorrow(false); //slave链接-分布式 List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); // shards.add(new JedisShardInfo("10.10.78.208",6379,"master")); // shards.add(new JedisShardInfo("10.10.52.141",6379,"slave")); //增加了密码的集群-只读 JedisShardInfo jedisShardInfo = new JedisShardInfo("10.10.50.6", 1058, 3000, 3); jedisShardInfo.setPassword("64451241320683dda7f99fc177ac8088"); JedisShardInfo jedisShardInfo1 = new JedisShardInfo("10.10.50.5", 1059, 3000, 12); jedisShardInfo1.setPassword("64451241320683dda7f99fc177ac8088"); JedisShardInfo jedisShardInfo2 = new JedisShardInfo("10.16.16.16", 1060, 3000, 12); jedisShardInfo2.setPassword("64451241320683dda7f99fc177ac8088"); shards.add(jedisShardInfo); shards.add(jedisShardInfo1); shards.add(jedisShardInfo2); //注意事项:此处的redis必须都是主的,不能是从的。如果是从的会报错的! //构造池 shardedJedisPool = new ShardedJedisPool(config, shards); }
单台的redis加密码:
/** * 初始化非切片池 * 2014年12月14日 下午5:30:26 * liweihan */ private void initialPool() { //池子基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(20); config.setMaxIdle(5); config.setMaxWait(10000L); config.setTestOnBorrow(false); //jedisPool = new JedisPool(config, "10.10.78.208",6379); jedisPool = new JedisPool(config, "10.10.78.208", 6379, 3000, "64451241320683dda7f99fc177ac8088"); }