- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在redis中有一些具有这个键结构的值
key:1:abc -> votes -> 0
-> name -> John
key:1:xyz -> votes -> 0
-> name -> Mary
key:1:def -> votes -> 1
-> name -> Larry
key:2:ijk -> votes -> 0
-> name -> apple
这就是我的键空间的样子。我正在使用 hmset 将内容存储在 redis 中。 “key:1”是一个占位符,用于标识特定空间中的不同用户,“key:1”之后的部分是“key:1”中每条记录的唯一区分符。我想写一些代码来过滤掉来自redis的数据,以获得所有投票数设置为0的记录。所以jedis代码的输出应该是这样的
key:1:abc -> votes -> 0
-> name -> John
key:1:xyz -> votes -> 0
-> name -> Mary
Larry 被过滤掉了。我正在研究 hmscan 以解决此问题,但不确定该命令的外观。关于我可以做些什么来获得该输出的任何线索?另外,您认为获得这个时间的时间复杂度是多少?
最佳答案
对此有多种解决方案,但首先想到的是使用辅助结构。
每次您将一个项目添加到 HASH 中时,您也会将此人的姓名添加到一个 SET 中:
> SADD zerocount "Larry"
(integer) 1
> SADD zerocount "Mary"
(integer) 1
每当您想要计数为零的名称列表时,您可以执行 SSCAN(为您提供分页):
> sscan zerocount 0
1) "0"
2) 1) "Mary"
2) "Larry"
例如,在您要增加 Larry 的值时,您将从集合中删除该值:
> srem zerocount "Larry"
1
SADD
对于每个添加的成员都是 O(N)
,在本例中为 O(1)
。对于我们的场景,SSCAN
是 O(1)
,而 SREM
是 O(1)
,在general O(N)
其中 N
是要删除的成员数。
关于java - Jedis 过滤 hmset 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29403166/
我有一个 tomcat 服务器并使用 jedis 客户端连接到它。 我使用的jedis版本是“3.0.0-m1”,tomcat 8.0.15 连接后几个小时后,我看到以下异常。有什么帮助吗? redi
我正在使用 Jedis 连接到 Redis 并将数据推送到列表中。我正在为 JSON 数据使用 rpush。 这些是我执行的步骤: 从 Rabbitmq 获取数据 从 JSON 数据中收集信息并准备一
我正在尝试在 vim 中使用 python-jedi,但目前它完全无法使用,因为它试图在奇怪的时间完成代码。 我添加了以下行: let g:jedi#popup_on_dot = 0 到我的 vim
我正在使用 jedi-vim,输入以下内容后,出现“未找到模式”错误: import numpy numpy. 但是,如果我运行以下 python 脚本,我会得到一长串完成列表: import jed
以下 Java 代码将一百万对整数插入到 Redis 中。 public class JedisInsertion { public static byte[] fromInt(in
我在几个线程中看到了答案,但没有解决我的问题,因为我的问题偶尔会出现,如果有人有任何想法,请问这个问题。 我使用的是jedis 2.8.0版本,Spring Data redis 1.7.5版本。和用
我的 Storm 类使用 Redis 队列来收集数据。 我尝试运行我的 Storm jar storm jar jar_file_name.jar Topology_name configuratio
我通过 jedis 在 java 上有这段代码: int shb1 = jds.storeHypnoBeats(id1, arr1); 调用这个函数: int storeHypnoBeats(Stri
我是 jedi-vim 的新手,我不知道如何跳转其他文件中的函数定义。 jedi-vim 's doc是: 以下是其中的一部分: NOTE: subject to change! let g:jedi
我刚刚注意到,每当我对任何 Delphi 2010 项目进行增量编译 (ctrl-F9) 时,我的项目中引用的所有 JEDI 单元都会重新编译,尽管它们没有以任何方式进行更改。事实上,如果我创建一个新
我正在使用 Jedi usb hid 组件连接 HID 设备并对其进行读取和写入。我无法写入设备。我一直在使用这个代码。 type TReport = Packed record ReportID:
我正在使用 Jedis,我无法直接连接到 Redis,我必须使用代理。我可以使用 socks 代理通过 Jedis 连接到 Redis 吗? 请你帮帮我。 问候。 最佳答案 我一直在寻找解决方案,但找
我在 vim 中通过 YCM 使用 jedi,在我的项目中看到一些奇怪的行为,关于在 jediHttp 服务器上使用 usages 端点。基本上它只能找到我项目中类或函数的一小部分用法。它确实找到了当
我正在尝试连接到我的虚拟机 Redis package nosql; import redis.clients.jedis.Jedis; public class NoSQL { public sta
我在我用作生产者/消费者队列的 Redis 队列之上使用 Java 库 Jedis。它易于设置并且运行良好。 消费者代码如下 List messages = jedis.blpop(0, redisQ
什么是jedis事务执行成功响应? jedis 似乎会返回 1 作为成功响应。如果交易包括两个操作,我的以下代码是否有效? List ret = jedisAdapter.exec(tx, jedi
我在看jedis源码的时候发现 connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key))
我在 jedis 客户端的帮助下使用 redis。在此处附加键值设置/获取的代码片段。在这里,我希望我的 jedisPool 只被初始化一次,但它被初始化了多次。不知道我哪里错了。用它挠我的头几天。我
当我像下面的代码一样使用 jedis 时: public class JedisTest extends Sync { private static final String _SET_KEY
我最近不得不使用 Jedis 库,它是一个很棒的库。我知道 Redis 是用 C 编写的,Jedis 只是将 Java 包装在 C 周围吗?光看Jedis源码是想不通的。谁能解释一下? 最佳答案 Je
我是一名优秀的程序员,十分优秀!