共计 2301 个字符,预计需要花费 6 分钟才能阅读完成。
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