Redis和Hbase互补取值思路
来源:互联网 发布:中级程序员面试题 编辑:程序博客网 时间:2024/04/30 08:35
1、思路:
用户取数据首先从Redis中取,Redis中没有数据则将Hbase中的数据插入Redis,且在配置文件中设置redis开关redisSwitch,如果redisSwitch=true则是从Redis中取数据,否则直接从Hbase中取数据,在配置文件中设置Redis的域的有效时间effectiveTime=86400,86400s为24小时,若设置为0s则直接失效。
2、实现:
@RequestMapping(value = "consumer/consumerPortrait.json", produces = "application/json; charset=UTF-8")
public void consumerPortraitJson(@RequestParam("cust_num") String cust_num, HttpServletResponse response) throws Exception {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String resultJson ="";
String tableName = "ns_sousuo:tdm_user_label_info_ed";
String rowKey = cust_num;
if (rowKey == null || rowKey == "") {
rowKey = "";
}
Map<String,String> redisMap = commonTools.readPropertiesFile("ps_redis");
String redisSwitch = redisMap.get("redisSwitch");
if(redisSwitch.equalsIgnoreCase("true")){//从redis获取数据
ShardedJedis jedis = null;
try {
jedis = pool.getResource();
boolean hexist = jedis.hexists(nimitzRowkey, cust_num);
log.info(String.valueOf(hexist));
if(hexist){
log.info("从redis取数据");
resultJson = jedis.hget(nimitzRowkey, cust_num);
}else{
resultJson = cusService.getResultMapFromHbase(tableName, cust_num);
int effectiveTime = Integer.parseInt(redisMap.get("effectiveTime"));
//离线存储至redis
taskExecutorUtil.setRedis(jedis, nimitzRowkey, cust_num, resultJson, effectiveTime);
log.info("从Hbase离线导入redis");
}
} catch (JedisConnectionException e){
log.error("jedis连接异常", e);
}
}else{//从hbase获取数据
resultJson = cusService.getResultMapFromHbase(tableName, rowKey);
log.info("从hbase取数据");
}
response.getWriter().write(resultJson);
}
- Redis和Hbase互补取值思路
- Redis和Hbase互补取值思路
- redis锁实现分布式取号思路
- 世界建立的两种思路,互补
- Cassandra和HBase主要设计思路对比
- Cassandra和HBase主要设计思路对比
- Cassandra和HBase主要设计思路对比
- Cassandra和HBase主要设计思路对比
- redis(三)积累-基本的取值和设值
- HBase, Memcached, MongoDB, Redis和Solr对比
- redis和hbase可视化工具介绍
- HBase,Redis
- redis和redis-Java客户端的设计思路
- Solr+Hbase多条件查(优劣互补)
- Solr+Hbase多条件查(优劣互补)
- Java从Hbase取值分别转化为String和Map
- Java从Hbase取值分别转化为String和Map
- HBase简介(思路清晰)
- Java中的Web设计
- Hadoop-mapreduce reducer端多表合并
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- linux git diff 有颜色
- Spark核心RDD:combineByKey函数详解
- Redis和Hbase互补取值思路
- 又一周
- 知道做到
- leetcode 539. Minimum Time Difference C++中的stringstream真的很好用
- Javascript
- 名正言顺
- Count Inversions in an array (求数组中的逆序对个数)
- android studio 不支持HttpClient
- LeetCode-88. Merge Sorted Array