使用java测试redis与见的问题及解决方法及测试类

来源:互联网 发布:删除筛选出来的数据 编辑:程序博客网 时间:2024/06/08 14:31

使用java测试redis与见的问题及解决方法及测试类

package com.taotao.rest.jedis;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisCluster;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;/** * redis测试:引入jar包jedis,及相关测试时的解决方法 *  * @Title: JedisTest * @author xwp * @date 2017年1月16日下午8:43:17 */@SuppressWarnings("resource")public class JedisTest {/** * 测试结果:失败 (一).测试结果超时,使用连接池试试  ,结局还是失败:所以怀疑并不是数据量过大导致,          (二).也许是linux的防火墙阻止了外网访问       解决方法: //让外网可以访问6379[root@localhost sysconfig]# /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT//保存[root@localhost sysconfig]# /etc/rc.d/init.d/iptables saveiptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]//添加本地可以访问[root@localhost sysconfig]# iptables -A INPUT -s 127.0.0.1 -p tcp --dport 6379 -j ACCEPT//阻止外地Id访问[root@localhost sysconfig]# iptables -A INPUT -p TCP --dport 6379 -j REJECT *//** * 单机测试默认端口6379 */@Testpublic void testJedisSingle() {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// 调用jedis对象的方法,方法名称和redis的命令一致。jedis.set("key1", "jedis test");String string = jedis.get("key1");System.out.println(string);// 关闭jedis。jedis.close();}@Testpublic void testString() {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// -----添加数据----------jedis.set("name", "xinxin");// 向key-->name中放入了value-->xinxinSystem.out.println(jedis.get("name"));// 执行结果:xinxinjedis.append("name", " is my lover"); // 拼接System.out.println(jedis.get("name"));jedis.del("name"); // 删除某个键System.out.println(jedis.get("name"));// 设置多个键值对jedis.mset("name", "liuling", "age", "23", "qq", "476777XXX");jedis.incr("age"); // 进行加1操作System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("qq"));}/** * 使用连接池 */@Testpublic void testJedisPool() {// 创建jedis连接池JedisPool pool = new JedisPool("192.168.13.129", 6379);// 从连接池中获得Jedis对象Jedis jedis = pool.getResource();String string = jedis.get("key1");System.out.println(string);// 关闭jedis对象jedis.close();pool.close();}@Testpublic void jedisPool() {JedisPoolConfig config = new JedisPoolConfig();// 最大连接数config.setMaxTotal(30);// 最大连接空闲数config.setMaxIdle(2);JedisPool pool = new JedisPool(config, "192.168.13.129", 6379);Jedis jedis = null;try {jedis = pool.getResource();jedis.set("name", "lisi");String name = jedis.get("name");System.out.println(name);} catch (Exception ex) {ex.printStackTrace();} finally {if (jedis != null) {// 关闭连接jedis.close();}}}/** *  集群版redis测试失败:也是由于linux防火墙导致:所以          解决办法:[root@ptr redis-cluster]# cat /etc/sysconfig/iptables# Generated by iptables-save v1.4.7 on Mon Jan 16 08:36:29 2017*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [373:478536]-A INPUT -p tcp -m tcp --dport 7006 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7005 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7004 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7003 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7002 -j ACCEPT -A INPUT -p tcp -m tcp --dport 7001 -j ACCEPT -A INPUT -p tcp -m tcp --dport 6379 -j ACCEPT -A INPUT -p tcp -m tcp --dport 6379 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 6379 -j ACCEPT -A INPUT -p tcp -m tcp --dport 6379 -j REJECT --reject-with icmp-port-unreachable -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7001 -j ACCEPT -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7002 -j ACCEPT -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7003 -j ACCEPT -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7004 -j ACCEPT -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7005 -j ACCEPT -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 7006 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT *//** * 测试redis集群 */@Testpublic void testJedisCluster() {HashSet<HostAndPort> nodes = new HashSet<>();nodes.add(new HostAndPort("192.168.13.129", 7001));nodes.add(new HostAndPort("192.168.13.129", 7002));nodes.add(new HostAndPort("192.168.13.129", 7003));nodes.add(new HostAndPort("192.168.13.129", 7004));nodes.add(new HostAndPort("192.168.13.129", 7005));nodes.add(new HostAndPort("192.168.13.129", 7006));JedisCluster cluster = new JedisCluster(nodes);cluster.set("key1", "1000");String string = cluster.get("key1");System.out.println(string);cluster.close();}// 连接redis集群@SuppressWarnings("unused")@Testpublic void testJedisClusterZong() {JedisPoolConfig config = new JedisPoolConfig();// 最大连接数config.setMaxTotal(30);// 最大连接空闲数config.setMaxIdle(2);// 集群结点Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();jedisClusterNode.add(new HostAndPort("192.168.13.129", 7001));jedisClusterNode.add(new HostAndPort("192.168.13.129", 7002));jedisClusterNode.add(new HostAndPort("192.168.13.129", 7003));jedisClusterNode.add(new HostAndPort("192.168.13.129", 7004));jedisClusterNode.add(new HostAndPort("192.168.13.129", 7005));jedisClusterNode.add(new HostAndPort("192.168.13.129", 7006));JedisCluster jc = new JedisCluster(jedisClusterNode, config);JedisCluster jcd = new JedisCluster(jedisClusterNode);jcd.set("key1", "zhangsan");String value = jcd.get("key1");System.out.println(value);}/** * 单机版测试 * <p> * Title: testSpringJedisSingle * </p> * <p> * Description: * </p> */@Testpublic void testSpringJedisSingle() {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");JedisPool pool = (JedisPool) applicationContext.getBean("redisClient");Jedis jedis = pool.getResource();String string = jedis.get("key1");System.out.println(string);jedis.close();pool.close();}@Testpublic void testSpringJedisCluster() {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");JedisCluster jedisCluster = (JedisCluster) applicationContext.getBean("redisClient");String string = jedisCluster.get("key1");System.out.println(string);jedisCluster.close();}/** * redis操作Map */@Testpublic void testMap() {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// -----添加数据----------Map<String, String> map = new HashMap<String, String>();map.put("name", "xinxin");map.put("age", "22");map.put("qq", "123456");jedis.hmset("user", map);// 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List// 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数List<String> rsmap = jedis.hmget("user", "name", "age", "qq");System.out.println(rsmap);// 删除map中的某个键值jedis.hdel("user", "age");System.out.println(jedis.hmget("user", "age")); // 因为删除了,所以返回的是nullSystem.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数2System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回trueSystem.out.println(jedis.hkeys("user"));// 返回map对象中的所有keySystem.out.println(jedis.hvals("user"));// 返回map对象中的所有valueIterator<String> iter = jedis.hkeys("user").iterator();while (iter.hasNext()) {String key = iter.next();System.out.println(key + ":" + jedis.hmget("user", key));}}/** * jedis操作List */@Testpublic void testList() {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// 开始前,先移除所有的内容jedis.del("java framework");System.out.println(jedis.lrange("java framework", 0, -1));// 先向key java framework中存放三条数据jedis.lpush("java framework", "spring");jedis.lpush("java framework", "struts");jedis.lpush("java framework", "hibernate");// 再取出所有数据jedis.lrange是按范围取出,// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有System.out.println(jedis.lrange("java framework", 0, -1));jedis.del("java framework");jedis.rpush("java framework", "spring");jedis.rpush("java framework", "struts");jedis.rpush("java framework", "hibernate");System.out.println(jedis.lrange("java framework", 0, -1));}/** * jedis操作Set */@Testpublic void testSet() {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// 添加jedis.sadd("user", "liuling");jedis.sadd("user", "xinxin");jedis.sadd("user", "ling");jedis.sadd("user", "zhangxinxin");jedis.sadd("user", "who");// 移除nonamejedis.srem("user", "who");System.out.println(jedis.smembers("user"));// 获取所有加入的valueSystem.out.println(jedis.sismember("user", "who"));// 判断 who// 是否是user集合的元素System.out.println(jedis.srandmember("user"));System.out.println(jedis.scard("user"));// 返回集合的元素个数}@Testpublic void test() throws InterruptedException {// 创建一个jedis的对象。默认端口6379Jedis jedis = new Jedis("192.168.13.129", 6379);// jedis 排序// 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)jedis.del("a");// 先清除数据,再加入数据进行测试jedis.rpush("a", "1");jedis.lpush("a", "6");jedis.lpush("a", "3");jedis.lpush("a", "9");System.out.println(jedis.lrange("a", 0, -1));// [9, 3, 6, 1]System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //输入排序后结果System.out.println(jedis.lrange("a", 0, -1));}}


0 0