RedisTemplate访问Redis数据结构(三)——Hash
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的更多相关文章
- 如何使用RedisTemplate访问Redis数据结构之Hash
Redis的Hash数据机构 Redis的散列可以让用户将多个键值对存储到一个Redis键里面. public interface HashOperations<H,HK,HV> Hash ...
- RedisTemplate访问Redis数据结构
https://www.jianshu.com/p/7bf5dc61ca06 Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字 ...
- RedisTemplate访问Redis数据结构(介绍和常用命令)
Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...
- 如何使用RedisTemplate访问Redis数据结构之字符串操作
Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...
- 如何使用RedisTemplate访问Redis数据结构
RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...
- Redis(九):使用RedisTemplate访问Redis数据结构API大全
RedisTemplate介绍 spring封装了RedisTemplate对象来进行对redis的各种操作,它支持所有的 redis 原生的api. RedisTemplate在spring代码中的 ...
- RedisTemplate访问Redis数据结构(前言)
Redis五种基本数据结构 redis提供键值对的形式对数据进行存储.支持五种数据类型:String(字符串),List(链表),Hash(散列),Set(无序集合),ZSet(有序集合).下面是网上 ...
- 如何使用RedisTemplate访问Redis数据结构之list
Redis的List数据结构 这边我们把RedisTemplate序列化方式改回之前的 Jackson2JsonRedisSerializer<Object> jackson2JsonRe ...
- RedisTemplate访问Redis数据结构(一)——String
当对String数据结构进行操作时,推荐直接使用spring-data-redis提供的StringRedisTemplate,其配置如下 <bean id="stringRedisT ...
随机推荐
- C语言I-博客作业05
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言1博客作业05 我在这个课程的目标是 学会运用函数编代码 这个作业在那个具体方面帮助我实现目标 写C语言作业的时候,编代码的实践中 ...
- MyEclipse mac版删除代码崩溃--解决方案
Mac升级了系统到 High Sierra但MyEclipse却没更新(一般用PO JIE),这总情况的MyEclipse在一些特定的正常操作中总会强行崩溃 极大的影响的Mac程序员的编码,面对这种问 ...
- debian上安装mysql server
1 将mysql添加到apt的repository中 第一步,下载mysql提供的ppa文件 wget https://dev.mysql.com/get/mysql-apt-config_0.8.1 ...
- 一分钟安装mysql
学数据库的人都知道,MySQL数据库是比较基本的掌握要求,不仅开源而且社区版本是免费使用的.由于工作上或者经常更换系统的原因,有时候会需要安装MySQL数据库.为了不至于每次安装都要查阅资料,现把安装 ...
- JS中值类型和引用类型
一.值类型 例子: var a=10; var b=a; a=20; console.log(b); 例子中,将a的值赋给了b,b=10,然后改变a的值不会影响b的值,a和b是独立的两份,互不影响. ...
- linux下安装msgpack,yar,phalcon
安装msgpack扩展 下载:http://pecl.php.net/package/msgpack cd /usr/local tar zxvf msgpack-0.5.5.tgz cd msgpa ...
- [LeetCode] 116. 填充每个节点的下一个右侧节点指针
题目链接 : https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/ 题目描述: 给定一个完美二叉树 ...
- 小程序中页面兼容h5标签的解析
有时候当小程序向后台拿数据是一篇html标签的文章时,把它放进小程序会发现很多标签就不兼容,如果要一个个改又很麻烦,有没有方法可以很快地兼容html标签呢? 有个工具可以做到:wxParse 下载了它 ...
- CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程
1.1 FastDFS的应用场景 FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.其中 ...
- libboost_regex 备份用时
libboost_regex-vc100-mt-s-1_57.lib //生成数据