Redis Java客户端-Jedis测试

Redis配置

先来继续上篇Redis单机版集群中配置的未完部分。

取消IP绑定

我们可以取消对IP的绑定,使所有ip均可访问,在redis.conf配置文件里取消对IP的绑定,如图:

bind_localhost

关闭保护模式

在redis.conf配置文件里,将protected-mode的参数设为no

protected-mode-close

查看密码设置

redis客户端登录后用config get requirepass命令查看密码:

config_get_requirepass

密码设置授权登录
config set requirepass "密码"
auth 密码
性能测试

同时执行 10000 个请求来检测性能

./redis-benchmark -n 10000

redis-benchmark

主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数

./redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q

redis-benchmark_setlpush

启动时添加最大连接数参数

--maxclients 1000

client--maxclients

互通主机和虚拟机

redis是安装在virtualBox虚拟机里面的,发现是无法互通的。查看虚拟机IP:

virtual_ip

VirtualBox,安装的默认方式是NAT(网络地址转换协议),但是这种方式在virtualbox虚拟机下有个缺点,就是虚拟机可以ping通主机,虚拟机也可以通过主机访问外网,但是主机ping不通虚拟机。

设置虚拟机网络连接方式为主机模式

host_only主机模式

设置主机虚拟网络适配器为同一个网段

vb_host_only_network

主机ping通虚拟机

master_ping_slave

虚拟机ping通主机

slave_ping_master

Jedis客户端

创建Maven Project,添加依赖

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
 <dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.9.0</version>
 </dependency>

编写JUnit测试案例

  1. /**
  2.  * 名称:类的中文名称 <br>
  3.  * 功能:对类的功能进行说明 <br/>
  4.  * <br/>
  5.  * 
  6.  * @since JDK 1.7
  7.  * @see
  8.  * @author wenqy
  9.  */
  10. public class JedisTest extends TestCase {
  11.     Jedis jedis = null;
  12.     /*
  13.      * (non-Javadoc)
  14.      * 
  15.      * @see junit.framework.TestCase#setUp()
  16.      */
  17.     @Override
  18.     protected void setUp() throws Exception {
  19.         super.setUp();
  20.         jedis = new Jedis(“192.168.56.101”6379);
  21.     }
  22.     /**
  23.      * redis存储字符串
  24.      */
  25.     public void testString() {
  26.         // —–添加数据———-
  27.         jedis.set(“name”“wenqy”);// 向key–>name中放入了value–>wenqy
  28.         System.out.println(jedis.get(“name”));// 执行结果:wenqy
  29.         jedis.append(“name”” is my name”); // 拼接
  30.         System.out.println(jedis.get(“name”));
  31.         jedis.del(“name”); // 删除某个键
  32.         System.out.println(jedis.get(“name”));
  33.         // 设置多个键值对
  34.         jedis.mset(“name”“wenqy”“age”“25”“qq”“106160XXXX”);
  35.         jedis.incr(“age”); // 进行加1操作
  36.         System.out.println(jedis.get(“name”) + “-“ + jedis.get(“age”) + “-“ + jedis.get(“qq”));
  37.     }
  38.     /**
  39.      * redis操作hash
  40.      */
  41.     public void testhash() {
  42.         // —–添加数据———-
  43.         Map<String, String> map = new HashMap<String, String>();
  44.         map.put(“name”“wenqy”);
  45.         map.put(“age”“25”);
  46.         map.put(“qq”“106160XXXX”);
  47.         jedis.del(“user”);
  48.         jedis.hmset(“user”, map);// key use
  49.         // 取出user中的name,执行结果:[minxr]–>注意结果是一个泛型的List
  50.         // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
  51.         List<String> rsmap = jedis.hmget(“user”“name”“age”“qq”);
  52.         System.out.println(rsmap);
  53.         // 删除map中的某个键值
  54.         jedis.hdel(“user”“age”);
  55.         System.out.println(jedis.hget(“user”“age”)); // 因为删除了,所以返回的是null
  56.         System.out.println(jedis.hlen(“user”)); // 返回key为user的键中存放的值的个数2
  57.         System.out.println(jedis.exists(“user”));// 是否存在key为user的记录 返回true
  58.         System.out.println(jedis.hkeys(“user”));// 返回map对象中的所有key
  59.         System.out.println(jedis.hvals(“user”));// 返回map对象中的所有value
  60.         Iterator<String> iter = jedis.hkeys(“user”).iterator();
  61.         while (iter.hasNext()) {
  62.             String key = iter.next();
  63.             System.out.println(key + “:” + jedis.hget(“user”, key));
  64.         }
  65.     }
  66.     /**
  67.      * jedis操作List
  68.      */
  69.     public void testList() {
  70.         // 开始前,先移除所有的内容
  71.         jedis.del(“java framework”); // key :java framework
  72.         System.out.println(jedis.lrange(“java framework”0, –1)); // lrange start和end范围内元素的列表
  73.         // 先向key java framework中存放三条数据
  74.         jedis.lpush(“java framework”“spring”); // 从左边插入
  75.         jedis.lpush(“java framework”“struts”);
  76.         jedis.lpush(“java framework”“hibernate”);
  77.         // 再取出所有数据jedis.lrange是按范围取出,
  78.         // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
  79.         System.out.println(jedis.lrange(“java framework”0, –1));
  80.         // 从链表弹出一个元素
  81.         jedis.lpop(“java framework”);
  82.         System.out.println(jedis.lrange(“java framework”0, –1));
  83.         jedis.del(“java framework”);
  84.         jedis.rpush(“java framework”“spring”);
  85.         jedis.rpush(“java framework”“struts”);
  86.         jedis.rpush(“java framework”“hibernate”);
  87.         System.out.println(jedis.lrange(“java framework”0, –1));
  88.         jedis.rpop(“java framework”);
  89.         System.out.println(jedis.lrange(“java framework”0, –1));
  90.     }
  91.     /**
  92.      * jedis操作Set
  93.      */
  94.     public void testSet() {
  95.         jedis.del(“user”);
  96.         // 添加
  97.         jedis.sadd(“user”“wenqy1”);
  98.         jedis.sadd(“user”“wenqy2”);
  99.         jedis.sadd(“user”“wenqy3”);
  100.         jedis.sadd(“user”“wenqy4”);
  101.         jedis.sadd(“user”“who”);
  102.         System.out.println(jedis.smembers(“user”));// 获取所有加入的value
  103.         // 移除who
  104.         jedis.srem(“user”“who”);
  105.         System.out.println(jedis.smembers(“user”));// 获取所有加入的value
  106.         System.out.println(jedis.sismember(“user”“who”));// 判断 who 是否是user集合的元素
  107.         System.out.println(jedis.srandmember(“user”)); // 随机返回一个成员
  108.         System.out.println(jedis.scard(“user”));// 返回集合的元素个数
  109.     }
  110.     /**
  111.      * jedis操作Sorted-Sets
  112.      */
  113.     public void testSortedSet() {
  114.         // 增加
  115.         jedis.zadd(“mostUsedLanguages”100“Java”);// ZADD
  116.         // We could add more than one value in one calling
  117.         Map<String, Double> scoreMembers = new HashMap<String, Double>();
  118.         scoreMembers.put(“Python”, 90d);
  119.         scoreMembers.put(“Javascript”, 80d);
  120.         jedis.zadd(“mostUsedLanguages”, scoreMembers);
  121.         // We could get the score for a member 得到对应的数据
  122.         System.out.println(“Number of Java users:” + jedis.zscore(“mostUsedLanguages”“Java”));
  123.         // We could get the number of elements on the set //得到成员数量
  124.         System.out.println(“Number of elements:” + jedis.zcard(“mostUsedLanguages”));// ZCARD
  125.         // 得到给定范围的成员变量
  126.         // get all the elements sorted from bottom to top
  127.         System.out.println(jedis.zrange(“mostUsedLanguages”0, –1));
  128.         // get all the elements sorted from top to bottom
  129.         System.out.println(jedis.zrevrange(“mostUsedLanguages”0, –1));
  130.     }
  131. }

测试结果

wenqy
wenqy is my name
null
wenqy-26-106160XXXX
[wenqy, 25, 106160XXXX]
null
2
true
[qq, name]
[106160XXXX, wenqy]
qq:106160XXXX
name:wenqy
[]
[hibernate, struts, spring]
[struts, spring]
[spring, struts, hibernate]
[spring, struts]
[wenqy2, wenqy3, wenqy4, wenqy1, who]
[wenqy3, wenqy4, wenqy1, wenqy2]
false
wenqy1
4
Number of Java users:100.0
Number of elements:3
[Javascript, Python, Java]
[Java, Python, Javascript]

参考

http://www.redis.net.cn/tutorial/3501.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 12 = ?