Redis实现键对应多值
来源:互联网 发布:软件项目组织结构图 编辑:程序博客网 时间:2024/06/07 13:33
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); }}
要使得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 ...
值得注意的是,Redisson对象类型可以是任意类型,不局限于字符串。
1 0
- Redis实现键对应多值
- 通过redis实现分布式存储fastdfs的文件名对应记录
- 通过IP来查找对应城市信息(Kotlin+redis实现)
- Android:多语言对应实现
- keycode值对应键
- key对应多值
- redis sort 对应的javaapi
- Redis命令及对应jedis操作(String)
- spring-data-redis整合jedis对应版本
- LinkedHashMap实现分组排序(保证有序性),并实现map的一个key值对应多个value
- Windows下 redis 启动多实例(redis分片实现)
- Redis+twemproxy(nutcracker)实现Redis多集群方案
- JAVA 中map和List实现一个键对应多个值
- Apache+Tomcat实现集群及多应用对应多域名
- vbs实现的下拉框对应键入值
- mfc 实现一分文档对应多个视图
- 多个信号对应单个槽的实现
- 负载均衡实现,一个域名对应多个IP地址
- UEFI+GPT安装Windows7系统
- 微服务学习笔记之理论篇
- 写的一个UGUI下Image控件做序列帧动画的小工具
- 手写服务器httpserver_准备_Socket入门_htmlJAVA195-196
- 使用jsp/servlet简单实现文件上传与下载
- Redis实现键对应多值
- php 处理字段与数据库字段顺序不一致的 csv 文件
- 多年积累的对JAVA程序员成长之路的总结
- zjnu1730 PIRAMIDA(字符串,模拟)
- 整理spring零配置(Annotation)
- Symbolic Breakpoint使用
- python之父之语 import this
- iOS初学笔记
- Android Fragment 替换覆盖生命周期方法详解