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. linux--vm安装

    网络排错图解 https://www.linuxidc.com/Linux/2017-03/141863.htm net模式 https://www.linuxidc.com/Linux/2017-0 ...

  2. [JS] 鼠标点击文本框清空默认值,离开文本框恢复默认值

    在使用文本框的时候,若设定了初始值,选择文本框进行输入的时候要将本来的内容进行删除,会显得非常麻烦 可以在文本框属性定义触发onfocus和onblur两个事件时对应的js功能 下面以asp.net代 ...

  3. C语言第八周编程作业

        这个作业属于哪个课程 C语言程序设计 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/hom ...

  4. SecureCRT Linux系统ssh连接终端最常用快捷键

    CecureCRT连接工具常用快捷键总结: 查看 Alt + Enter 全屏 菜单 Alt + f + n 克隆会话窗口 Alt + c 在新窗口中连接,连接窗口中勾选open in a tab可以 ...

  5. 递归法求组合数C(m,n)

    假设这样一个数组: 1 2 3 4 5 n=5 若 m=3 也就是要求C(3,5) 首先先选第一个数 1 那么剩下的工作就是在2-5之间选择2个数 如果我们没有选择第一个数 选第二个数2 那么剩下的工 ...

  6. Spark Netty 通信框架解析

    1.RpcEndpoint: RPC端点 Spark针对每个节点(Client.Master.Worker)都称之为一个RpcEndpoint,且都实现RpcEndpoint接口,内部根据不同端点的需 ...

  7. 由于;引发的Oracle的BadSqlExecption

    一.在使用单引号进行各种转换合并的时候发生的异常: 1:首先单引号的表示符为 ' 在Oracle中如果SQL语句带上了分号是会报错的, 在SQL传入进行执行的时候会报BadSQLExecption,这 ...

  8. 网络流 ISAP算法

    网络流问题: 我自己理解,在流网络中,在不违背容量限制的条件下,解决各种从源点到汇点的问题. ISAP算法概念: 据说不会有卡ISAP时间的题目---时间复杂度O(E^2*V) 首先原理都是基于不断寻 ...

  9. spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间

    1.springmvc支持文件上传,需要在spring-mvc.xml配置文件中加上下面的一段话: <!-- 支持上传文件 --> <bean id="multipartR ...

  10. 2019 360杯 re wp--Here are some big nums

    测试文件:https://www.lanzous.com/i7303oh 1.准备 获取信息: 32位文件 2.IDA打开 找到主函数之后,反编译为伪C代码 int sub_404D70() { in ...