一、Redis是什么?
Redis 是一个由Salvatore Sanfilippo写的高性能的key-value存储系统,通常被称为数据结构服务器。
二、Redis的优点?
Redis支持各种不同方式的排序,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
三、java代码的操作:
1、首先要导入Jedis的jar包(我用的maven环境,所以称之为依赖):
<!--导入jedis的依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--导入jackson的依赖(用于转JSON格式)-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
2、创建一个实体类(名称为Student,用于等下的操作JSON数据):
/**
* 学生实体类
*/
public class Student implements Serializable{
/**
* 学生编号
*/
private String sid;
/**
* 学生姓名
*/
private String sname;
/**
* 学生性别
*/
private String ssex;
public Student() {
}
public Student(String sid, String sname, String ssex) {
this.sid = sid;
this.sname = sname;
this.ssex = ssex;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
@Override
public String toString() {
return "Student{" +
"sid='" + sid + '\'' +
", sname='" + sname + '\'' +
", ssex='" + ssex + '\'' +
'}';
}
}
3、创建一个测试类:
3.1、操作字符串数据:
/**
* 操作字符串数据
*/
@Test
public void redisString() {
//host:连接地址,port:端口号
Jedis jedis = new Jedis("192.168.42.150", 6379);
//查看是否连接:如果输出为pong,则证明连接成功
System.out.println(jedis.ping());
//1、赋值:键值对形式
jedis.set("admin", "123456");
//2、设置多个键值对
jedis.mset("a", "apple", "b", "banana", "c", "cherry");
//3、取值
System.out.println(jedis.get("admin"));
//4、删除
jedis.del("admin");
}
3.2、操作JSON数据:
/**
* 操作JSON数据
*/
@Test
public void redisJSON() {
Jedis jedis = new Jedis("192.168.42.150", 6379);
//创建List集合
List<Student> studentList = new ArrayList<>();
//学生对象
Student student = null;
//循环赋值
for (int i = 1; i < 101; i++) {
student = new Student();
student.setSid(UUID.randomUUID().toString());
student.setSname("学生" + i);
student.setSsex(i % 2 == 0 ? "男" : "女");
//把对象加入到集合里
studentList.add(student);
}
//使用jackson转换JSON格式
ObjectMapper objectMapper = new ObjectMapper();
try {
String outStr = objectMapper.writeValueAsString(studentList);
jedis.set("student", outStr);
} catch (Exception e) {
e.printStackTrace();
}
//输出集合信息
String str = jedis.get("student");
System.out.println(str);
// //把集合转为对象(可需要可不需要)
// try {
// JavaType javaType = objectMapper.getTypeFactory().constructParametricType(ArrayList.class, Student.class);
// List<Student> students = objectMapper.readValue(str, javaType);
// for (Student s : students) {
// System.out.println(s);
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
}
3.3、操作HashMap数据:
/**
* 操作HashMap集合数据
*/
@Test
public void redisHashMap() {
Jedis jedis = new Jedis("192.168.42.150", 6379);
//写入(写入时键名不能相同)
Map<String, String> writeMap = new HashMap<>();
writeMap.put("sid", UUID.randomUUID().toString());
writeMap.put("sname", "姓名");
writeMap.put("ssex", "性别");
jedis.hmset("hashmap", writeMap);
//读取
Map<String, String> readMap = jedis.hgetAll("hashmap");
System.out.println(readMap);
}
3.4、操作ArrayList数据:
/**
* 操作ArrayList集合数据
*/
@Test
public void redisList() {
Jedis jedis = new Jedis("192.168.42.150", 6379);
//加入值
jedis.lpush("list", "list1", "list2", "list3", "list4");
//读取
System.out.println(jedis.lrange("list", 0, 10));
//获取集合长度:输出值为:4
System.out.println(jedis.llen("list"));
//取下标为0的值:输出值为:学生4(原因:加入值是先进后出)
System.out.println(jedis.lindex("list", 0));
//通过下标修改key的值
//System.out.println(jedis.lset("list", 0, "xx"));
//删除
//jedis.del("list");
}
3.5、操作集群:
/**
* 操作集群
*/
@Test
public void redisColony() {
//配置redis集群
Set<HostAndPort> hostAndPortSet = new HashSet<>();
hostAndPortSet.add(new HostAndPort("192.168.42.150", Integer.parseInt("6380")));
hostAndPortSet.add(new HostAndPort("192.168.42.150", Integer.parseInt("6381")));
hostAndPortSet.add(new HostAndPort("192.168.42.150", Integer.parseInt("6382")));
hostAndPortSet.add(new HostAndPort("192.168.42.150", Integer.parseInt("6383")));
hostAndPortSet.add(new HostAndPort("192.168.42.150", Integer.parseInt("6384")));
//连接池配置
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置最大连接数
jedisPoolConfig.setMaxTotal(10);
//设置最大空闲数
jedisPoolConfig.setMaxIdle(1);
//设置最大等待时间,超过该时间还未获取到连接,会抛出异常
jedisPoolConfig.setMaxWaitMillis(10 * 1000);
JedisCluster jedisCluster = new JedisCluster(hostAndPortSet, jedisPoolConfig);
//赋值和取值
jedisCluster.set("admin", "123456");
System.out.println(jedisCluster.get("admin"));
}
如需更多的了解,可以去看Redis的教程:http://www.runoob.com/redis/redis-tutorial.html