redistemplate下opsForHash操作示例

 更新时间:2023年07月17日 09:43:09   作者:一片秋叶一树春  
这篇文章主要为大家介绍了redistemplate下opsForHash操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1、put(H key, HK hashKey, HV value)

新增hashMap值

redisTemplate.opsForHash().put("hashValue","map1","map1-1");  
redisTemplate.opsForHash().put("hashValue","map2","map2-2");

2、values(H key)

获取指定变量中的hashMap值。

List<Object> hashList = redisTemplate.opsForHash().values("hashValue");  
System.out.println("通过values(H key)方法获取变量中的hashMap值:" + hashList);

3、entries(H key)

获取变量中的键值对。

Map<Object,Object> map = redisTemplate.opsForHash().entries("hashValue");  
System.out.println("通过entries(H key)方法获取变量中的键值对:" + map);

4、get(H key, Object hashKey)

获取变量中的指定map键是否有值,如果存在该map键则获取值,没有则返回null。

Object mapValue = redisTemplate.opsForHash().get("hashValue","map1");  
System.out.println("通过get(H key, Object hashKey)方法获取map键的值:" + mapValue);

5、hasKey(H key, Object hashKey)

判断变量中是否有指定的map键。

boolean hashKeyBoolean = redisTemplate.opsForHash().hasKey("hashValue","map3");  
System.out.println("通过hasKey(H key, Object hashKey)方法判断变量中是否存在map键:" + hashKeyBoolean);

6、keys(H key)

获取变量中的键。

Set<Object> keySet = redisTemplate.opsForHash().keys("hashValue");  
System.out.println("通过keys(H key)方法获取变量中的键:" + keySet);

7、size(H key)

获取变量的长度。

long hashLength = redisTemplate.opsForHash().size("hashValue");  
System.out.println("通过size(H key)方法获取变量的长度:" + hashLength);

8、increment(H key, HK hashKey, double delta)

使变量中的键以double值的大小进行自增长。

double hashIncDouble = redisTemplate.opsForHash().increment("hashInc","map1",3);  
System.out.println("通过increment(H key, HK hashKey, double delta)方法使变量中的键以值的大小进行自增长:" + hashIncDouble);

9、increment(H key, HK hashKey, long delta)

使变量中的键以long值的大小进行自增长。

long hashIncLong = redisTemplate.opsForHash().increment("hashInc","map2",6);  
System.out.println("通过increment(H key, HK hashKey, long delta)方法使变量中的键以值的大小进行自增长:" + hashIncLong);

10、multiGet(H key, Collection<HK> hashKeys)

以集合的方式获取变量中的值。

List<Object> list = new ArrayList<Object>();  
list.add("map1");  
list.add("map2");  
List mapValueList = redisTemplate.opsForHash().multiGet("hashValue",list);  
System.out.println("通过multiGet(H key, Collection<HK> hashKeys)方法以集合的方式获取变量中的值:"+mapValueList);

11、putAll(H key, Map<? extends HK,? extends HV> m)

以map集合的形式添加键值对。

Map newMap = new HashMap();  
newMap.put("map3","map3-3");  
newMap.put("map5","map5-5");  
redisTemplate.opsForHash().putAll("hashValue",newMap);  
map = redisTemplate.opsForHash().entries("hashValue");  
System.out.println("通过putAll(H key, Map<? extends HK,? extends HV> m)方法以map集合的形式添加键值对:" + map);

12、putIfAbsent(H key, HK hashKey, HV value)

如果变量值存在,在变量中可以添加不存在的的键值对,如果变量不存在,则新增一个变量,同时将键值对添加到该变量。
 

redisTemplate.opsForHash().putIfAbsent("hashValue","map6","map6-6");  
map = redisTemplate.opsForHash().entries("hashValue");  
System.out.println("通过putIfAbsent(H key, HK hashKey, HV value)方法添加不存在于变量中的键值对:" + map);

13、scan(H key, ScanOptions options)

匹配获取键值对,ScanOptions.NONE为获取全部键对,ScanOptions.scanOptions().match("map1").build()     匹配获取键位map1的键值对,不能模糊匹配。

Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.scanOptions().match("map1").build());  
//Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.NONE);  
while (cursor.hasNext()){  
    Map.Entry<Object,Object> entry = cursor.next();  
    System.out.println("通过scan(H key, ScanOptions options)方法获取匹配键值对:" + entry.getKey() + "---->" + entry.getValue());  
}

14、delete(H key, Object... hashKeys)

删除变量中的键值对,可以传入多个参数,删除多个键值对。

redisTemplate.opsForHash().delete("hashValue","map1","map2");  
map = redisTemplate.opsForHash().entries("hashValue");  
System.out.println("通过delete(H key, Object... hashKeys)方法删除变量中的键值对后剩余的:" + map);

15.缓存菜单的操作

public List<Menu> selectMenus() throws Exception {
Collection<String> menujsons = redisTemplate.opsForHash().entries("menuList").values();
    //查看缓存是否存在菜单
    if (menujsons != null && menujsons.size() != 0) {
        List<Menu> menuList = new ArrayList<>();
        menujsons.forEach(a -> menuList.add(JSONObject.parseObject(a, Menu.class)));
        //缓存取出数据排序
        Collections.sort(menuList, Comparator.comparing(BaseEntity::getId));
        return menuList;
    }
    //不存在 数据库中查询并存入缓存 返回
    List<Menu> allMenu = getMapper().selectMenus();
    if(CollectionUtils.isNotEmpty(allMenu)){
        allMenu.forEach(m -> redisTemplate.opsForHash().put("menuList", m.getId().toString(), JSONObject.toJSONString(m)));
    }
    return allMenu;
}

以上就是redistemplate下opsForHash操作示例的详细内容,更多关于redistemplate opsForHash操作的资料请关注脚本之家其它相关文章!

相关文章

  • 配置redis的序列化,注入RedisTemplate方式

    配置redis的序列化,注入RedisTemplate方式

    这篇文章主要介绍了配置redis的序列化,注入RedisTemplate方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 在CenOS系统下安装和配置Redis数据库的教程

    在CenOS系统下安装和配置Redis数据库的教程

    这篇文章主要介绍了在CenOS系统下安装和配置Redis数据库的教程,Redis是一个可基于内存的高性能NoSQL数据库,需要的朋友可以参考下
    2015-11-11
  • redis性能优化之生产中实际遇到的问题及排查总结

    redis性能优化之生产中实际遇到的问题及排查总结

    这篇文章主要介绍了redis性能优化之生产中实际遇到的问题及排查总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Redis过期监听机制,订单超时自动取消方式

    Redis过期监听机制,订单超时自动取消方式

    这篇文章主要介绍了Redis过期监听机制,订单超时自动取消方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Redis的Bitmap(位图)详解和命令演示

    Redis的Bitmap(位图)详解和命令演示

    Redis的位图是由多个二进制位组成的数组,数组中的每个二进制位都有与之对应的偏移量,用户通过这些偏移量可以对位图中指定的一个或多个二进制位进行操作,这篇文章主要给大家介绍了关于Redis的Bitmap(位图)详解和命令演示的相关资料,需要的朋友可以参考下
    2024-08-08
  • Redis在计数器和人员记录的事务操作应用小结

    Redis在计数器和人员记录的事务操作应用小结

    Redis是一个高性能的键值存储系统,专于处理计数器和事务操作,它提供了INCR、DECR等命令来进行原子递增或递减操作,并通过MULTI、EXEC等命令实现事务操作,此外,Redis的Pipeline功能可减少网络往返次数,提高性能
    2024-10-10
  • redis与memcached的区别_动力节点Java学院整理

    redis与memcached的区别_动力节点Java学院整理

    Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器。那么redis与memcached有什么区别呢?下面小编给大家介绍下redis与memcached的区别,感兴趣的朋友参考下吧
    2017-08-08
  • Redis实现唯一计数的3种方法分享

    Redis实现唯一计数的3种方法分享

    这篇文章主要介绍了Redis实现唯一计数的3种方法分享,本文讲解了基于SET、基于 bit、基于 HyperLogLog三种方法,需要的朋友可以参考下
    2015-03-03
  • 利用Redis如何实现自动补全功能

    利用Redis如何实现自动补全功能

    这篇文章主要给大家介绍了关于如何利用Redis如何实现自动补全功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Redis一键巡检脚本的实现

    Redis一键巡检脚本的实现

    在使用Redis作为数据存储的时候,定期进行巡检是非常重要的,本文主要介绍了Redis一键巡检脚本的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06

最新评论