共计 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
