Redis实现键对应多值

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

Redis实现键对应多值

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs

Redis服务器提供了很多流行的数据结构,比如Map、List、Set……

而在项目开发中,可能会遇到更复杂的需求,需要更复杂的数据结构,比如一个键对应存储多个值,要实现这样的需求,最好的办法就是实现Multimap数据结构。

首先需要自己构建这样的数据结构,如下:

Map<MyKey, Set<MyObject>> setMultimap = new HashMap<>();void put(MyKey key, MyObject obj) {   Set<MyObject> list = setMultimap.get(key);   if (set == null) {       set = new HashSet<>();       setMultimap.put(key, obj);   }   set.add(obj);}void remove(MyObject obj) {   set<MyObject> set = setMultimap.get(key);   if (set != null) {      set.remove(obj);   }}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

要使得Redis支持此数据结构,还需做很多工作:创建Redis连接、执行Redis命令、在Redis的map键和Redis的list值之间建立单向关系等。

如果Redis的Java客户端驱动使用Redisson框架(不使用Jedis),那么实现以上工作非常简单。Redisson可以帮助开发者完成这些繁琐的工作,Redisson实现了标准的Java对象集合,包括:Map、List、Set、Lock…,还提供了Multimap对象。
http://redisson.org/

Redisson框架提供了两种Multimap对象:

  • RListMultimap:基于List的Multimap,键绑定的值存储于List结构中。
  • RSetMultimap:基于Set的Multimap,键绑定的值存储于Set结构中。

下面看看使用RSetMultimap的例子:

Config config = new Config();config.useClusterServers()    // redis cluster nodes    .addNodeAddress("127.0.0.1:7000", "127.0.0.1:7001");RedissonClient redisson = Redisson.create(config);RSetMultimap<String, String> setMultimap = redisson.getSetMultimap("myFish");// Adding itemssetMultimap.put("favoriteFish", "Flagfin");setMultimap.put("favoriteFish", "Shiner");setMultimap.put("favoriteFish", "Ladyfish");setMultimap.put("oceanFish", "Shark");setMultimap.put("oceanFish", "Ocean sunfish");// Removing itemsetMultimap.remove("oceanFish", "Shark");setMultimap.remove("favoriteFish", "Flagfin");// Getting all itemsSet<String> favoriteFish = setMultimap.get("favoriteFish");// Getting size// total entries amountsetMultimap.size(); // 5// total values amount by keysetMultimap.get("favoriteFish").size(); // 3// check entry existencesetMultimap.containsEntry("favoriteFish", "Ladyfish");// and so on ...
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

值得注意的是,Redisson对象类型可以是任意类型,不局限于字符串。

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值