文章目录
Redis配置
先来继续上篇Redis单机版集群中配置的未完部分。
取消IP绑定
我们可以取消对IP的绑定,使所有ip均可访问,在redis.conf配置文件里取消对IP的绑定,如图:
关闭保护模式
在redis.conf配置文件里,将protected-mode
的参数设为no
查看密码设置
redis客户端登录后用config get requirepass
命令查看密码:
密码设置授权登录
config set requirepass "密码" auth 密码
性能测试
同时执行 10000 个请求来检测性能
./redis-benchmark -n 10000
主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数
./redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
启动时添加最大连接数参数
--maxclients 1000
互通主机和虚拟机
redis是安装在virtualBox虚拟机里面的,发现是无法互通的。查看虚拟机IP:
VirtualBox,安装的默认方式是NAT(网络地址转换协议),但是这种方式在virtualbox虚拟机下有个缺点,就是虚拟机可以ping通主机,虚拟机也可以通过主机访问外网,但是主机ping不通虚拟机。
设置虚拟机网络连接方式为主机模式
设置主机虚拟网络适配器为同一个网段
主机ping通虚拟机
虚拟机ping通主机
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测试案例
- /**
- * 名称:类的中文名称 <br>
- * 功能:对类的功能进行说明 <br/>
- * <br/>
- *
- * @since JDK 1.7
- * @see
- * @author wenqy
- */
- public class JedisTest extends TestCase {
- Jedis jedis = null;
- /*
- * (non-Javadoc)
- *
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- jedis = new Jedis(“192.168.56.101”, 6379);
- }
- /**
- * redis存储字符串
- */
- public void testString() {
- // —–添加数据———-
- jedis.set(“name”, “wenqy”);// 向key–>name中放入了value–>wenqy
- System.out.println(jedis.get(“name”));// 执行结果:wenqy
- jedis.append(“name”, ” is my name”); // 拼接
- System.out.println(jedis.get(“name”));
- jedis.del(“name”); // 删除某个键
- System.out.println(jedis.get(“name”));
- // 设置多个键值对
- jedis.mset(“name”, “wenqy”, “age”, “25”, “qq”, “106160XXXX”);
- jedis.incr(“age”); // 进行加1操作
- System.out.println(jedis.get(“name”) + “-“ + jedis.get(“age”) + “-“ + jedis.get(“qq”));
- }
- /**
- * redis操作hash
- */
- public void testhash() {
- // —–添加数据———-
- Map<String, String> map = new HashMap<String, String>();
- map.put(“name”, “wenqy”);
- map.put(“age”, “25”);
- map.put(“qq”, “106160XXXX”);
- jedis.del(“user”);
- jedis.hmset(“user”, map);// key use
- // 取出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.hget(“user”, “age”)); // 因为删除了,所以返回的是null
- System.out.println(jedis.hlen(“user”)); // 返回key为user的键中存放的值的个数2
- System.out.println(jedis.exists(“user”));// 是否存在key为user的记录 返回true
- System.out.println(jedis.hkeys(“user”));// 返回map对象中的所有key
- System.out.println(jedis.hvals(“user”));// 返回map对象中的所有value
- Iterator<String> iter = jedis.hkeys(“user”).iterator();
- while (iter.hasNext()) {
- String key = iter.next();
- System.out.println(key + “:” + jedis.hget(“user”, key));
- }
- }
- /**
- * jedis操作List
- */
- public void testList() {
- // 开始前,先移除所有的内容
- jedis.del(“java framework”); // key :java framework
- System.out.println(jedis.lrange(“java framework”, 0, –1)); // lrange start和end范围内元素的列表
- // 先向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.lpop(“java framework”);
- 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.rpop(“java framework”);
- System.out.println(jedis.lrange(“java framework”, 0, –1));
- }
- /**
- * jedis操作Set
- */
- public void testSet() {
- jedis.del(“user”);
- // 添加
- jedis.sadd(“user”, “wenqy1”);
- jedis.sadd(“user”, “wenqy2”);
- jedis.sadd(“user”, “wenqy3”);
- jedis.sadd(“user”, “wenqy4”);
- jedis.sadd(“user”, “who”);
- System.out.println(jedis.smembers(“user”));// 获取所有加入的value
- // 移除who
- jedis.srem(“user”, “who”);
- System.out.println(jedis.smembers(“user”));// 获取所有加入的value
- System.out.println(jedis.sismember(“user”, “who”));// 判断 who 是否是user集合的元素
- System.out.println(jedis.srandmember(“user”)); // 随机返回一个成员
- System.out.println(jedis.scard(“user”));// 返回集合的元素个数
- }
- /**
- * jedis操作Sorted-Sets
- */
- public void testSortedSet() {
- // 增加
- jedis.zadd(“mostUsedLanguages”, 100, “Java”);// ZADD
- // We could add more than one value in one calling
- Map<String, Double> scoreMembers = new HashMap<String, Double>();
- scoreMembers.put(“Python”, 90d);
- scoreMembers.put(“Javascript”, 80d);
- jedis.zadd(“mostUsedLanguages”, scoreMembers);
- // We could get the score for a member 得到对应的数据
- System.out.println(“Number of Java users:” + jedis.zscore(“mostUsedLanguages”, “Java”));
- // We could get the number of elements on the set //得到成员数量
- System.out.println(“Number of elements:” + jedis.zcard(“mostUsedLanguages”));// ZCARD
- // 得到给定范围的成员变量
- // get all the elements sorted from bottom to top
- System.out.println(jedis.zrange(“mostUsedLanguages”, 0, –1));
- // get all the elements sorted from top to bottom
- System.out.println(jedis.zrevrange(“mostUsedLanguages”, 0, –1));
- }
- }
测试结果
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
发表评论