HashOperations提供一系列方法操作hash。首先初始化spring工厂获得redisTemplate和opsForHash

    private RedisTemplate<String,Object> redisTemplate;
private HashOperations<String,String,Object> opsForHash; @SuppressWarnings("unchecked")
@Before
public void before(){
@SuppressWarnings("resource")
ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
redisTemplate = (RedisTemplate<String,Object>)context.getBean("redisTemplate");
opsForHash = redisTemplate.opsForHash();
}
void put(H key, HK hashKey, HV value);
Map< HK, HV > entries(H key);
    @Test
public void testPut(){
opsForHash.put("he1", "key1", "a");
opsForHash.put("he1", "key2", "b");
opsForHash.put("he1", "key3", "c");
Map<String, Object> entries = opsForHash.entries("he1");
System.out.println(entries);//{key3=c, key1=a, key2=b}(无序)
}
void putAll(H key, Map< ? extends HK, ? extends HV > m);
    @Test
public void testPutAll(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
opsForHash.putAll("he2", param);
System.out.println(opsForHash.entries("he2"));//{key2=b, key1=a, key3=c}
}
Long delete(H key, Object… hashKeys);
    @Test
public void testDelete(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
opsForHash.putAll("he3", param);
System.out.println(opsForHash.entries("he3"));//{key3=c, key2=b, key1=a}
opsForHash.delete("he3", "key1");
System.out.println(opsForHash.entries("he3"));//{key2=b, key3=c}
}
Boolean hasKey(H key, Object hashKey);
    @Test
public void testHashKey(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
opsForHash.putAll("he4", param);
System.out.println(opsForHash.hasKey("he", "key2"));//false
System.out.println(opsForHash.hasKey("he4", "key4"));//false
System.out.println(opsForHash.hasKey("he4", "key2"));//true
}
HV get(H key, Object hashKey);
    @Test
public void testGet(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
opsForHash.putAll("he5", param);
System.out.println(opsForHash.get("he5", "key1"));//a
System.out.println(opsForHash.get("he5", "key"));//null
}
List< HV > multiGet(H key, Collection< HK > hashKeys);
    @Test
public void testMultiGet(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
opsForHash.putAll("he6", param);
List<String> keys = new ArrayList<String>();
keys.add("key1");
keys.add("key");
keys.add("key2");
System.out.println(opsForHash.multiGet("he6", keys));//[a, null, b]
}
Long increment(H key, HK hashKey, long delta);
Double increment(H key, HK hashKey, double delta);
    @Test
public void testIncrement(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key1", "a");
param.put("key2", "b");
param.put("key3", "c");
param.put("key4", 4);
opsForHash.putAll("he7", param);
System.out.println(opsForHash.increment("he7", "key4", 1));//
System.out.println(opsForHash.increment("he7", "key4", 1.1));//6.1
try {
opsForHash.increment("he7", "key1", 1);//ERR hash value is not an integer
} catch (Exception e) {
e.printStackTrace();
}
try {
opsForHash.increment("he7", "key1", 1.1);//ERR hash value is not a float
} catch (Exception e) {
e.printStackTrace();
}
}
Set< HK > keys(H key);
    @Test
public void testKeys(){
redisTemplate.delete("he8");
Map<String,Object> param = new HashMap<String,Object>();
param.put("key4", "d");
param.put("key1", "a");
param.put("key3", "c");
param.put("key5", "e");
param.put("key2", "b");
opsForHash.putAll("he8", param);
Set<String> keys = opsForHash.keys("he8");
System.out.println(keys);//[key4, key3, key5, key2, key1]
}
Long size(H key);
    @Test
public void testSize(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key4", "d");
param.put("key1", "a");
param.put("key3", "c");
param.put("key5", "e");
param.put("key2", "b");
opsForHash.putAll("he9", param);
System.out.println(opsForHash.size("he9"));//
}
Boolean putIfAbsent(H key, HK hashKey, HV value);
    @Test
public void testPutIfAbsent(){
//仅当hashKey不存在时才设置散列hashKey的值。
System.out.println(opsForHash.putIfAbsent("he10", "key1", "a"));//true
System.out.println(opsForHash.putIfAbsent("he10", "key1", "a"));//false
}
List< HV > values(H key);
    @Test
public void testValues(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key4", "d");
param.put("key1", "a");
param.put("key3", "c");
param.put("key5", "e");
param.put("key2", "b");
opsForHash.putAll("he11", param);
List<Object> values = opsForHash.values("he11");
System.out.println(values);//[d, c, e, b, a]
}
Cursor< Map.Entry< HK, HV >> scan(H key, ScanOptions options);
    @Test
public void testScan(){
Map<String,Object> param = new HashMap<String,Object>();
param.put("key4", "d");
param.put("key1", "a");
param.put("key3", "c");
param.put("key5", "e");
param.put("key2", "b");
opsForHash.putAll("he13", param);
Cursor<Map.Entry<String, Object>> curosr = opsForHash.scan("he13", ScanOptions.NONE);
while(curosr.hasNext()){
Map.Entry<String, Object> entry = curosr.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
/**
key4:d
key3:c
key5:e
key2:b
key1:a
*/
}

转载自:https://blog.csdn.net/weixin_37490221/article/details/78135036

RedisTemplate访问Redis数据结构(三)——Hash的更多相关文章

  1. 如何使用RedisTemplate访问Redis数据结构之Hash

    Redis的Hash数据机构 Redis的散列可以让用户将多个键值对存储到一个Redis键里面. public interface HashOperations<H,HK,HV> Hash ...

  2. RedisTemplate访问Redis数据结构

    https://www.jianshu.com/p/7bf5dc61ca06 Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字 ...

  3. RedisTemplate访问Redis数据结构(介绍和常用命令)

    Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...

  4. 如何使用RedisTemplate访问Redis数据结构之字符串操作

    Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...

  5. 如何使用RedisTemplate访问Redis数据结构

    RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...

  6. Redis(九):使用RedisTemplate访问Redis数据结构API大全

    RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...

  7. RedisTemplate访问Redis数据结构(前言)

    Redis五种基本数据结构 redis提供键值对的形式对数据进行存储.支持五种数据类型:String(字符串),List(链表),Hash(散列),Set(无序集合),ZSet(有序集合).下面是网上 ...

  8. 如何使用RedisTemplate访问Redis数据结构之list

    Redis的List数据结构 这边我们把RedisTemplate序列化方式改回之前的 Jackson2JsonRedisSerializer<Object> jackson2JsonRe ...

  9. RedisTemplate访问Redis数据结构(一)——String

    当对String数据结构进行操作时,推荐直接使用spring-data-redis提供的StringRedisTemplate,其配置如下 <bean id="stringRedisT ...

随机推荐

  1. 浅谈vue学习之组件通信

    vue用组件化简化了我们编写代码的复杂度,组件之间经常会出现数据传递的情况,那么组件之间是怎样通信的呢? 使用props传递数据 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内 ...

  2. Grafana设置匿名登录

    将配置文件中的auth.anonymous的enabled设置为true就可以匿名登录,不用输入用户名和密码 #################################### Anonymou ...

  3. [转帖]K8s集群安装--最新版 Kubernetes 1.14.1

    K8s集群安装--最新版 Kubernetes 1.14.1 http://www.cnblogs.com/jieky/p/10679998.html 原作者写的比较简单 大略流程和跳转的多一些 改天 ...

  4. webpack初体验之模块化开发

    写在前面的话 上次写过一篇关于webpack入门的博客,当时只是说借助node来完成开发,并用webpack打包以让浏览器识别.其实其主要思想就是实现前端模块化开发. 众所周知,历史上,JavaScr ...

  5. 常用php算法

       一.冒泡排序function bubble($array){ $cnt = count($array); if($cnt <= 0) return $array; for($i =1;$i ...

  6. Distributed Deep Learning

    安利一下刘铁岩老师的<分布式机器学习>这本书 以及一个大神的blog: https://zhuanlan.zhihu.com/p/29032307 https://zhuanlan.zhi ...

  7. #define 宏实现函数功能可能存在的问题

    #define 宏实现函数功能的问题 情形1 #define free_ptr(p) \ if(p) delete p; p = nullptr; 在调用free_ptr(p)的地方展开看这段代码: ...

  8. 关于使用iframe的父子页面进行简单的相互传值

    当一个页面使用了iframe作为嵌套时,如何想要将父页面的数据传给iframe子页面,那iframe所指向的呢个子页面是怎么获取呢,又或者子页面的数据要给父页面使用,那么父页面又如何获取子页面的数据呢 ...

  9. php 操作分表代码

    //哈希分表 function get_hash_table($table, $userid) { $str = crc32($userid); if ($str < 0) { $hash = ...

  10. numpy中的range()

    1.arange返回一个array对象,arange(5)=([0,1,2,3,4]) 2.如果是两个参数,第一个参数是起点,第二个参数是终点 3.如果是三个参数,那么第三个参数就是步长