Redisは-RedisとJavaの応用に精通している.
51606 ワード
1 Jedisの使用
Jedisはredisがjavaをサポートするサードパーティクラスライブラリであり、Jedisクラスライブラリを使用してredisデータベースを操作することができます.
注意:Jedis 2.7以降のバージョンでは、クラスタ操作がサポートされていません.
1.1 Maven quickStartプロジェクトの新規作成
Jedis依存の導入
1.2 redisサービスへのリンク
1.3 Redis Java String(文字列)
1.4 Redis Java List(リスト)
1.5Redis Java Keys
2 UserテーブルをRedisキャッシュに入れる
t_userテーブルはデータ量が多く、クエリーが頻繁で、更新操作が少なく、t_userテーブルをredisキャッシュに配置し、t_を実現するuserテーブルのクイッククエリー.
テスト中にobject回転jsonStringを使用しました
2.1 User.javaの準備
2.2 UserのデータをRedisに入れる
Redisデータベース・サーバで観察:
2.3 RedisのUserを使用してデータをキャッシュする
t_userテーブルのデータ量が大きく、クエリーが遅い、t_を実現する方法userテーブルデータの高速クエリー;
select * from t_user where age =25;
select * from t_user where sex = 'm';
select * from t_user where sex = 'w';
redisのsetタイプを使用して、クエリー結果セットを事前に設定できます.
redisサーバを観察するには、次の手順に従います.
これにより、プログラム内のuserMapper.getUserListByAge(25)は、redisサーバからuser_を取得することができるlist_by_age_25データを使用します.
Jedisはredisがjavaをサポートするサードパーティクラスライブラリであり、Jedisクラスライブラリを使用してredisデータベースを操作することができます.
注意:Jedis 2.7以降のバージョンでは、クラスタ操作がサポートされていません.
1.1 Maven quickStartプロジェクトの新規作成
Jedis依存の導入
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.8.2version>
dependency>
1.2 redisサービスへのリンク
Jedis jedis = new Jedis("10.0.31.144",6379); // 6379
jedis.auth("redis"); //
1.3 Redis Java String(文字列)
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
jedis.set("a", "test1"); //
System.out.println(jedis.get("a")); //
1.4 Redis Java List(リスト)
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
//
jedis.lpush("list1", "Java");
jedis.lpush("list1", "Html5");
jedis.lpush("list1", "Python");
//
List<String> list = jedis.lrange("list1", 0 ,-1);
for(int i=0; i<list.size(); i++) {
System.out.println(" : "+list.get(i));
}
1.5Redis Java Keys
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
//
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
2 UserテーブルをRedisキャッシュに入れる
t_userテーブルはデータ量が多く、クエリーが頻繁で、更新操作が少なく、t_userテーブルをredisキャッシュに配置し、t_を実現するuserテーブルのクイッククエリー.
テスト中にobject回転jsonStringを使用しました
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.12version>
dependency>
2.1 User.javaの準備
public class User {
private String id;
private String name;
private int age;
private String sex;
public User() {
super();
}
public User(String id, String name, int age, String sex) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
2.2 UserのデータをRedisに入れる
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
User u1 = new User(UUID.randomUUID().toString(),"jack1",21,"m");
User u2 = new User(UUID.randomUUID().toString(),"jack2",22,"m");
User u3 = new User(UUID.randomUUID().toString(),"jack3",23,"m");
User u4 = new User(UUID.randomUUID().toString(),"jack4",24,"m");
User u5 = new User(UUID.randomUUID().toString(),"jack5",25,"m");
Map<String,String> userMap = new HashMap<String,String>();
userMap.put("u1",JSON.toJSONString(u1));
userMap.put("u2",JSON.toJSONString(u2));
userMap.put("u3",JSON.toJSONString(u3));
userMap.put("u4",JSON.toJSONString(u4));
userMap.put("u5",JSON.toJSONString(u5));
jedis.hmset("t_user",userMap);
Redisデータベース・サーバで観察:
127.0.0.1:6379> keys *
1) "t_user"
127.0.0.1:6379> hkeys t_user
1) "u1"
2) "u3"
3) "u4"
4) "u5"
5) "u2"
127.0.0.1:6379> hvals t_user
1) "{\"age\":21,\"id\":\"740a1778-de0e-4426-b231-1f97d290b13c\",\"name\":\"jack1\",\"sex\":\"m\"}"
2) "{\"age\":23,\"id\":\"5133d99f-b8a0-4062-8624-89a5dc5c8e89\",\"name\":\"jack3\",\"sex\":\"m\"}"
3) "{\"age\":24,\"id\":\"f6d1a709-5f2c-4564-bec6-b8f63eef6a86\",\"name\":\"jack4\",\"sex\":\"m\"}"
4) "{\"age\":25,\"id\":\"4c8b4122-c9f9-41b2-ba29-c0de2a257370\",\"name\":\"jack5\",\"sex\":\"m\"}"
5) "{\"age\":22,\"id\":\"e48c6616-75c2-4d04-9e90-31b69a4632a4\",\"name\":\"jack2\",\"sex\":\"m\"}"
127.0.0.1:6379>
2.3 RedisのUserを使用してデータをキャッシュする
t_userテーブルのデータ量が大きく、クエリーが遅い、t_を実現する方法userテーブルデータの高速クエリー;
select * from t_user where age =25;
select * from t_user where sex = 'm';
select * from t_user where sex = 'w';
redisのsetタイプを使用して、クエリー結果セットを事前に設定できます.
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
// mybatis
//userMapper.getUserListByAge(25)
//userMapper.getUserListBySex("m")
//userMapper.getUserListBySex("f")
//
final String user_list_by_age_25 = "user_list_by_age_25";
final String user_list_by_sex_m = "user_list_by_sex_m";
final String user_list_by_sex_f = "user_list_by_sex_f";
// redis ,
// ( , mybatis redis)
// userMap t_user
Map<String,String> userMap = new HashMap<String,String>();
User u1 = new User(UUID.randomUUID().toString(),"jack",21,"m");
userMap.put("u1",JSON.toJSONString(u1));
//u1 m , u1 userMapper.getUserListBySex("m")
jedis.sadd(user_list_by_sex_m,"u1");
User u2 = new User(UUID.randomUUID().toString(),"rose",25,"f");
userMap.put("u2",JSON.toJSONString(u2));
//u2 sex='f' age=25
jedis.sadd(user_list_by_sex_f,"u2");
jedis.sadd(user_list_by_age_25,"u2");
User u3 = new User(UUID.randomUUID().toString(),"jack3",23,"m");
userMap.put("u3",JSON.toJSONString(u3));
//u3 sex='m'
jedis.sadd(user_list_by_sex_m,"u3");
jedis.hmset("t_user",userMap);
redisサーバを観察するには、次の手順に従います.
127.0.0.1:6379> keys *
1) "user_list_by_age_25"
2) "user_list_by_sex_m"
3) "t_user"
4) "user_list_by_sex_f"
127.0.0.1:6379> hkeys t_user
1) "u1"
2) "u2"
3) "u3"
127.0.0.1:6379> hvals t_user
1) "{\"age\":21,\"id\":\"65224362-26b7-4858-9dfd-6c8df8d0dcce\",\"name\":\"jack\",\"sex\":\"m\"}"
2) "{\"age\":25,\"id\":\"cd23782e-90a5-4c80-8c31-d0c874e623f6\",\"name\":\"rose\",\"sex\":\"f\"}"
3) "{\"age\":23,\"id\":\"e5bb2423-c821-4267-b77c-0abef4777113\",\"name\":\"jack3\",\"sex\":\"m\"}"
127.0.0.1:6379> smembers user_list_by_age_25
1) "u2"
127.0.0.1:6379> smembers user_list_by_sex_m
1) "u1"
2) "u3"
127.0.0.1:6379> smembers user_list_by_sex_f
1) "u2"
127.0.0.1:6379>
これにより、プログラム内のuserMapper.getUserListByAge(25)は、redisサーバからuser_を取得することができるlist_by_age_25データを使用します.
Jedis jedis = new Jedis("10.0.31.144",6379);
jedis.auth("redis");
Set<String> userlist = jedis.smembers("user_list_by_sex_m");
for(String u : userlist){
// ser json
System.out.println(jedis.hget("t_user",u));
//... json object
}