快速将账号信息加载到redis中(加载账号到redis)
开发账号信息加载到redis中,可以极大的提升系统的查询性能。下面我来分享在实际项目中如何快速将账号信息加载到redis中。
1、创建实体类,承载账号信息。以用户账号信息相关实体代码为例:
public class AccountInfo implements Serializable {
public String username;
public String password;
public String dept;
public String eml;
}
2、读取账号信息,可以从文件或数据库中读取,放入Map结构中,key使用账号名,value使用AccountInfo实体类:
public class AccountUtil {
//读取账号信息至Map结构
public static Map loadAccountInfo() {
Map retMap = new HashMap();
//从文件或数据库中读取账号信息,此处省略…
while (rs.next()) {
AccountInfo accountInfo = new AccountInfo();
accountInfo.username = rs.getString(“username”);
//…
retMap.put(username, accountInfo);
}
return retMap.isEmpty() ? Collections.emptyMap() : retMap;
}
}
3、定义操作Redis的工具类,包括存入和取出AccountInfo实体:
public class RedisOpsUtil {
//存入AccountInfo实体
public static void set(String key, T value) {
for (Field field : value.getClass().getDeclaredFields()) {
field.setAccessible(true);//设置允许私有字段被访问
jedis.hset(key, field.getName(), field.get(value).toString());
}
}
//取回AccountInfo实体
public static T get(String key, Class clazz) {
T instance = null;
try {
instance = clazz.newInstance();
Map map = jedis.hgetAll(key);
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
field.set(instance, map.get(field.getName()));
}
} catch (Exception e) {
e.printStackTrace();
}
return instance;
}
}
4、将账号信息加载到Redis中:
public class Account2Redis {
private Jedis jedis = new Jedis(“127.0.0.1”, 6379);
public void sync2Redis() {
Map accountMap = AccountUtil.loadAccountInfo();
for (Map.Entry entry : accountMap.entrySet()) {
String key = String.format(“account_info::%s”, entry.getKey());
RedisOpsUtil.set(key, entry.getValue());
}
}
}
以上就是在实际开发过程中,将账号信息快速加载到Redis中的操作步骤。账号信息加入到Redis中,可以极大的提高查询效率,大大减少访问非关系型数据库的次数。