RedisTemplateアクセスHashタイプの値
4714 ワード
ゲートウェイ統計が毎日apiでゲートウェイにアクセスする回数を容易にするために,ここでは統計を行い,統計データをredisサーバに格納し,読み取りを容易にする方法を書いた.
今日は2つの方法を話しています.1つはHashMapを保存する方法で、もう1つはHashを保存する方法です.
一、Hashを保存する方法
使用するのはredisTemplate.opsForHash().put(redisKey, item, value); この方法.
意味:
1.redisに格納されているプライマリ・キー
2、item毎hashのkey
3、value対応keyの値
コード:
/**
* @Description: api redis( Hash)
* @Param: path
* @return:
* @Author: ma.kangkang
* @Date: 2019/11/6
*/
public void addPathNumHash(String path){
// key
redisTemplate.setKeySerializer(new StringRedisSerializer());
//val
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
//
Date today = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
String todayStr = sdf.format(today).replace("-","");
String redisKey = "apiVisitNum_".concat(todayStr);
// redis
Map
二、HashMapを保存する方法
使用するのはredisTemplate.opsForValue().set(redisKey, pathNumMap); 方法.
意味:
1.rediskeyが格納するredisのキー
2.pathNumMapが格納するredisの値(hashMap)
コード:
/**
* @Description: api redis( HashMap)
* @Param: path
* @return:
* @Author: ma.kangkang
* @Date: 2019/11/5
*/
public void addPathNumHashMap(String path){
// key
redisTemplate.setKeySerializer(new StringRedisSerializer());
//val
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
PathNum pathNum = new PathNum();
Map pathNumMap = new HashMap<>();
Map valueRedis = new HashMap<>();
Map map = new HashMap<>();
Map mapAll = new HashMap<>();
//
Date today = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
String todayStr = sdf.format(today).replace("-","");
String redisKey = "apiVisitNum_".concat(todayStr);
// redis , Map
Object object = redisTemplate.opsForValue().get(redisKey);
JSONObject json = (JSONObject) JSON.toJSON(object);
if (json != null){
// redis
map = JSON.parseObject(JSON.parse(json.toString()).toString());
mapAll.putAll(map);
}
if (json != null && json.get(path) != null){
pathNum = JSON.parseObject(JSON.parse(json.get(path).toString()).toString(),PathNum.class);
}
if (pathNum.getPath() != null ){
valueRedis.put("path",pathNum.getPath());
// path,
valueRedis.put("num",pathNum.getNum() + 1);
map.put(path,valueRedis);
mapAll.putAll(map);
JSONObject json1 =new JSONObject(mapAll);
System.out.println(json1);
redisTemplate.opsForValue().set(redisKey, mapAll);
} else {
// redis path, redis key, redis
valueRedis.put("path",path);
valueRedis.put("num","1");
pathNumMap.put(path,valueRedis);
if (json != null){
// redis null, map redis
mapAll.putAll(pathNumMap);
redisTemplate.opsForValue().set(redisKey, mapAll);
} else {
redisTemplate.opsForValue().set(redisKey, pathNumMap);
}
}
}
対照的に、Hashを保存する方法はもっと簡単ですが、redisサーバはバイナリのデータを表示していますが、HashMapを保存する方法はMapで、redisサーバが表示するときはUTF-8形式の内容を表示しています.
このときは個人のニーズを見る必要がありますが、取りたいUTF-8形式のデータを正常に取り出すことができます.
私は進級したボールで、みんなで2019年のピット登りの過程です.分かち合うのがとても力があると感じたらいいですね、ありがとうございます!!!問題があれば、下のメッセージや本人QQ:313989006を加えてコミュニケーションをとることもできます.