手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Redis实现键对应多值

[日期:2016-10-26] 来源:Linux社区  作者: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);
   }
}

要使得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 items
setMultimap.put("favoriteFish", "Flagfin");
setMultimap.put("favoriteFish", "Shiner");
setMultimap.put("favoriteFish", "Ladyfish");
setMultimap.put("oceanFish", "Shark");
setMultimap.put("oceanFish", "Ocean sunfish");
// Removing item
setMultimap.remove("oceanFish", "Shark");
setMultimap.remove("favoriteFish", "Flagfin");
// Getting all items
Set<String> favoriteFish = setMultimap.get("favoriteFish");
// Getting size
// total entries amount
setMultimap.size(); // 5
// total values amount by key
setMultimap.get("favoriteFish").size(); // 3
// check entry existence
setMultimap.containsEntry("favoriteFish", "Ladyfish");
// and so on ...

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

下面关于Redis的文章您也可能喜欢,不妨参考下:

Ubuntu 14.04下Redis安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm

Redis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 16.04环境中安装PHP7.0 Redis扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm

Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis安装部署学习笔记 http://www.linuxidc.com/Linux/2014-07/104306.htm

Redis配置文件redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

Redis 的详细介绍请点这里
Redis 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-10/136420.htm

linux
相关资讯       Redis键对应多值 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款