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
本文由 wenqy 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Nov 8,2020