Redis之数据结构HashMap详细使⽤
⼀般⼤家使⽤redis的string数据结构⽐较多,在想使⽤其他数据结构,但是感觉操作复杂的现象⾝边很普遍,
为简化⼤家操作redis hashmap,特整理此⽂,⽅便⼤家使⽤。
⼀、Redis数据结构 hashmap,RedisDesktopManager使⽤如下:
⼆、通过代码 Java端使⽤
增:
Map<String, UserRankDto> userDtoMap = new HashMap<>();
UserRankDto rankDto = null;
for (Stu stu : stuList) {
rankDto = new UserRankDto();
//属性赋值略
userDtoMap.put(String.Userid()), rankDto);
}
RedisCacheUtils.setMap(AnalysisConstant.REDIS_PERSONAL_MAP, userDtoMap, AnalysisConstant.REDIS_DATABASE_INDEX);
AnalysisConstant.REDIS_PERSONAL_MAP:⾃定义业务主key
AnalysisConstant.REDIS_DATABASE_INDEX: redis对应的数据库(0-15)
/**
* 将map写⼊缓存
*
* @param key
* @param map
*/
public static <T> void setMap(String key, Map<String, T> map, Integer dbIndex) {
setMap(key, map, dbIndex, NOT_EXPIRE);
}
/**
* 将map写⼊缓存
*
* @param key
* @param map
* @param expire 失效时间(秒)
*/
public static <T> void setMap(String key, Map<String, T> map, Integer dbIndex, Integer expire) {
setDbIndex(dbIndex);
template.opsForHash().putAll(key, map);
if (expire != NOT_EXPIRE) {
expire(key, expire);
}
redis支持的数据结构}
删:
RedisCacheUtils.deleteByPrefix(AnalysisConstant.REDIS_PERSONAL_MAP, AnalysisConstant.REDIS_DATABASE_INDEX);
/**
* 删除指定数据库前缀模糊匹配索引
*
* @param dbIndex 数据库索引范围 0-15 默认0
*/
public static void deleteByPrefix(String prefix, Integer dbIndex) {
setDbIndex(dbIndex);
Set<String> keys = template.keys(prefix + "*");
template.delete(keys);
}
/**
* 删除指定数据库索引
*
* @param key 键
* @param dbIndex 数据库索引范围 0-15 默认0
*/
public static void delete(String key, Integer dbIndex) {
setDbIndex(dbIndex);
template.delete(key);
}
改:
// 放⼊hashmap中⼀个Userid对应值 key - value
// 没有就新增,如果有对应的key为 userid,则覆盖更新
RedisCacheUtils.setMapValue(AnalysisConstant.REDIS_PERSONAL_MAP, String.Userid()), userRankDto, AnalysisConstant.REDIS_DATABAS
/**
* 插⼊值-对象,指定数据库索引,指定过期时间
*
* @param key 键
* @param mapKey map键
* @param mapValue map值
* @param dbIndex 数据库索引范围 0-15 默认0
*/
public static <T> void setMapValue(String key, String mapKey, T mapValue, Integer dbIndex) {
setMapValue(key, mapKey, mapValue, dbIndex, NOT_EXPIRE);
}
/**
* 插⼊值-对象,指定数据库索引,指定过期时间
*
* @param key 键
* @param mapKey map键
* @param mapValue map值
* @param dbIndex 数据库索引范围 0-15 默认0
* @param expire 过期时间单位:秒
*/
public static <T> void setMapValue(String key, String mapKey, T mapValue, Integer dbIndex, int expire) {
// 选择数据库
setDbIndex(dbIndex);
BoundHashOperations<String, String, T> boundHashOperations = template.boundHashOps(key);
boundHashOperations.put(mapKey, mapValue);
if (expire != NOT_EXPIRE) {
expire(key, expire);
}
}
查:
// 获取map中的单个特定key的value值
UserRankDto dto = MapValue(AnalysisConstant.REDIS_PERSONAL_MAP,String.valueOf(userId),DB_INDEX);
/**
* 获取值-字符串,指定数据库索引,设置过期时间
*
* @param key 键
* @param mapKey map键
* @param dbIndex 数据库索引范围 0-15 默认0
* @return
*/
public static <T> T getMapValue(String key, String mapKey, Integer dbIndex) {
// 选择数据库
setDbIndex(dbIndex);
BoundHashOperations<String, String, T> boundHashOperations = template.boundHashOps(key);
(mapKey);
}
// 获取整个hashmap
/**
* 获取map缓存
*
* @param key
* @return
*/
public static <T> Map<String, T> getMap(String key, Integer dbIndex) {
setDbIndex(dbIndex);
BoundHashOperations<String, String, T> boundHashOperations = template.boundHashOps(key);
ies();
}
补充:
/**
* redis 模板
*/
private static StringRedisTemplate template = Bean("stringRedisTemplate");
/**
* 不设置过期时长
*/
public final static int NOT_EXPIRE = -1;
redis版本:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论