您的位置:首页 > 数据库 > Redis

spring boot 集成 redis,自定义序列化

2019-08-22 09:48 441 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/taobong/article/details/100008231

定义接口

[code]package com.mycode.cache;

import java.util.Map;

/**
* 缓存接口
*
*/
public interface Cache<T> {

/**
* Get an item from the cache, nontransactionally
* @param key
* @return the cached object or <tt>null</tt>
*/
T get(Object key);

/**
* Add an item to the cache, nontransactionally, with
* failfast semantics
* @param key
* @param value
*/
void put(Object key, T value);

/**
* 往缓存中写入内容
* @param key
* @param value
* @param exp	超时时间,单位为秒
*/
void put(Object key, T value, int exp);

/**
* 删除
* @param key
*/
void remove(Object key);

/**
* 删除
* @param key
*/
void vagueDel(Object key);

/**
* Clear the cache
*/
void clear();

/**
* 往缓存中写入内容
* @param key		缓存key
* @param hashKey	缓存中hashKey
* @param hashValue hash值
*/
void putHash(Object key, Object hashKey, Object hashValue);

/**
* 玩缓存中写入内容
* @param key
* @param map
*/
void putAllHash(Object key, Map map);

/**
* 读取缓存值
* @param key
* @param hashKey
* @return
*/
T getHash(Object key, Object hashKey);

/**
* 读取缓存值
* @param key
* @return
*/
Map<Object,Object> getHash(Object key);

/**
* 判断缓存中key是否存在
* @param key
* @return
*/
Boolean hasKey(String key);
}

添加实现

[code]@Component
public class RedisCacheImpl implements Cache {

private RedisTemplate redisTemplate;

@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}

public RedisCacheImpl() {

}

@Override
public Object get(Object key) {
return redisTemplate.opsForValue().get(key);
}

@Override
public void put(Object key, Object value) {

redisTemplate.opsForValue().set(key, value);

}

@Override
public void put(Object key, Object value, int exp) {

redisTemplate.opsForValue().set(key, value, exp, TimeUnit.SECONDS);
}

@Override
public void remove(Object key) {

redisTemplate.delete(key);
}

/**
* 删除
*
* @param key
*/
@Override
public void vagueDel(Object key) {
Set<String> keys = redisTemplate.keys(key + "*");
redisTemplate.delete(keys);
}

@Override
public void clear() {

Set keys = redisTemplate.keys("*");
redisTemplate.delete(keys);
}

@Override
public void putHash(Object key, Object hashKey, Object hashValue) {
redisTemplate.opsForHash().put(key, hashKey, hashValue);
}

@Override
public void putAllHash(Object key, Map map) {
redisTemplate.opsForHash().putAll(key, map);
}

@Override
public Object getHash(Object key, Object hashKey) {
return redisTemplate.opsForHash().get(key, hashKey);
}

@Override
public Map<Object, Object> getHash(Object key) {
return this.redisTemplate.opsForHash().entries(key);
}

@Override
public Boolean hasKey(String key) {
return this.redisTemplate.hasKey(key);
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: