added redis cache for IR binaries

This commit is contained in:
strawmanbobi
2018-12-30 16:41:39 +08:00
parent 6de67d6ade
commit 8f2d091f0f
5 changed files with 133 additions and 11 deletions

View File

@@ -0,0 +1,42 @@
package net.irext.decoder.model;
/**
* Filename: IRBinary.java
* Revised: Date: 2018-12-30
* Revision: Revision: 1.0
* <p>
* Description: Remote binary in cache
* <p>
* Revision log:
* 2018-12-30: created by strawmanbobi
*/
public class IRBinary {
private Integer id;
private byte[] binary;
public IRBinary(Integer id, byte[] binary) {
this.id = id;
this.binary = binary;
}
public IRBinary() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public byte[] getBinary() {
return binary;
}
public void setBinary(byte[] binary) {
this.binary = binary;
}
}

View File

@@ -5,7 +5,7 @@ import net.irext.decoder.model.DecodeSession;
import java.util.Map;
/**
* Filename: RedisRepository.java
* Filename: IDecodeSessionRepository.java
* Revised: Date: 2018-12-29
* Revision: Revision: 1.0
* <p>
@@ -14,7 +14,7 @@ import java.util.Map;
* Revision log:
* 2018-12-29: created by strawmanbobi
*/
public interface RedisRepository {
public interface IDecodeSessionRepository {
Map<Object, Object> findAllDecodeSessions();

View File

@@ -0,0 +1,26 @@
package net.irext.decoder.redisrepo;
import net.irext.decoder.model.IRBinary;
import java.util.Map;
/**
* Filename: IRRepository.java
* Revised: Date: 2018-12-30
* Revision: Revision: 1.0
* <p>
* Description: IR binary cache for performance optimization on decoding
* <p>
* Revision log:
* 2018-12-30: created by strawmanbobi
*/
public interface IIRBinaryRepository {
Map<Object, Object> findAllIRBinaries();
void add(IRBinary irBinary);
void delete(Integer id);
IRBinary find(Integer id);
}

View File

@@ -1,6 +1,7 @@
package net.irext.decoder.redisrepo;
package net.irext.decoder.redisrepo.impl;
import net.irext.decoder.model.DecodeSession;
import net.irext.decoder.redisrepo.IDecodeSessionRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
@@ -10,7 +11,7 @@ import javax.annotation.PostConstruct;
import java.util.Map;
/**
* Filename: RedisRepositoryImpl.java
* Filename: IDecodeSessionRepositoryImpl.java
* Revised: Date: 2018-12-29
* Revision: Revision: 1.0
* <p>
@@ -20,19 +21,19 @@ import java.util.Map;
* 2018-12-29: created by strawmanbobi
*/
@Repository
public class RedisRepositoryImpl implements RedisRepository {
public class DecodeSessionRepositoryImpl implements IDecodeSessionRepository {
private static final String KEY = "SESSION_KEY";
private RedisTemplate<String, Object> redisTemplate;
private HashOperations hashOperations;
@Autowired
public RedisRepositoryImpl(RedisTemplate<String, Object> redisTemplate){
public DecodeSessionRepositoryImpl(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@PostConstruct
private void init(){
private void init() {
hashOperations = redisTemplate.opsForHash();
}
@@ -44,13 +45,11 @@ public class RedisRepositoryImpl implements RedisRepository {
hashOperations.delete(KEY, id);
}
public DecodeSession find(final Integer id){
public DecodeSession find(final Integer id) {
return (DecodeSession) hashOperations.get(KEY, id);
}
public Map<Object, Object> findAllDecodeSessions(){
public Map<Object, Object> findAllDecodeSessions() {
return hashOperations.entries(KEY);
}
}

View File

@@ -0,0 +1,55 @@
package net.irext.decoder.redisrepo.impl;
import net.irext.decoder.model.IRBinary;
import net.irext.decoder.redisrepo.IIRBinaryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.PostConstruct;
import java.util.Map;
/**
* Filename: IIRBinaryRepositoryImpl.java
* Revised: Date: 2018-12-29
* Revision: Revision: 1.0
* <p>
* Description: Redis cache class
* <p>
* Revision log:
* 2018-12-29: created by strawmanbobi
*/
@Repository
public class IRBinaryRepositoryImpl implements IIRBinaryRepository {
private static final String KEY = "SESSION_KEY";
private RedisTemplate<String, Object> redisTemplate;
private HashOperations hashOperations;
@Autowired
public IRBinaryRepositoryImpl(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@PostConstruct
private void init() {
hashOperations = redisTemplate.opsForHash();
}
public void add(final IRBinary IRBinary) {
hashOperations.put(KEY, IRBinary.getId(), IRBinary.getBinary());
}
public void delete(final Integer id) {
hashOperations.delete(KEY, id);
}
public IRBinary find(final Integer id) {
return (IRBinary) hashOperations.get(KEY, id);
}
public Map<Object, Object> findAllIRBinaries() {
return hashOperations.entries(KEY);
}
}