草庐IT

雷迪斯 : Querying based on matching key pattren

coder 2023-11-07 原文

我是 Redis 的新手,我试图通过 Redis 文档找出这个问题,但没有成功。这是详细信息。

假设我插入了如下字符串。

Set category:1 "Men"
Set category:2 "Women"
Set category:3 "Kids"
Set category:4 "Home"
Set category:5 "shoes" ...

在这种情况下,我想通过查询遵循特定模式的键来获取所有值 category:*

Get category:*

有没有办法像这样获取所有类别?

最佳答案

使用SCAN . SCAN 是遍历 Redis 数据库中的键的唯一安全方法。 SCAN 将分块键空间的一部分并返回一个游标(总是第一个结果)和它在该 block 中找到的任何值。您从光标 0 开始。

> SCAN 0 MATCH "category:*"
1) "1904"
2) (empty list or set)

然后以相同的模式将该光标传递回 SCAN 命令:

> SCAN 1904 MATCH "category:*"
1) "0"
2) 1) "category:3"
   2) "category:2"
   3) "category:4"
   4) "category:1"

在这种情况下,返回的光标是 0,这是 SCAN 命令已完成的信号。第二个响应是一个包含找到的键的数组。请注意,您需要循环运行 SCAN 命令,并且每次都不会返回与模式匹配的键或仅返回部分键。

获取键后,您需要像往常一样检索值 (GET)。

请注意:从您的数据结构来看,您可能使用了不合适的数据类型:将类别组织成散列会更好(例如 HSET 类别1 人 然后你可以使用 HGETALL)

关于雷迪斯 : Querying based on matching key pattren,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48160030/

有关雷迪斯 : Querying based on matching key pattren的更多相关文章

  1. 雷迪斯 |获取管道结果作为输入命令的映射 - 2

    我是Redis新手。在我当前的项目中,我们大量使用了Redis,我们一次性提取了1000多个键,而且提取频率太高了。早期这些调用是连续的,我们正在尝试用管道替换。我们为此目的使用了SpringRedisTemplate。现在的挑战是我们从redisTemplate得到的响应是对象列表。我们希望它与输入键映射。现在我们依赖于输入键顺序,我认为这不是很可靠的事情。有什么方法可以让Redis本身以MAP格式获得相同的格式,以便我们可以直接使用响应。 最佳答案 没有这样的命令。相反,您可以使用Luascripting达到目标。但是,Lua脚

  2. Cassandra /雷迪斯 : Way to create feed without Cassandra 'IN' secondary index? - 2

    我的应用程序功能与Cassandra集成时遇到了一些问题。我正在尝试为我的用户创建一个内容提要。用户可以创建帖子,而帖子又具有字段user_id。我将Redis用于整个社交图,而将Cassandra列仅用于对象。在Redis中,用户1有一个名为user:1:followers的集合,其中包含他/她的所有关注者ID。这些关注者ID对应于用户表中的CassandraID和帖子表中的user_id。我的目标最初是简单地将此Redis集中的所有user_id插入一个查询,该查询将使用FROMpostsWHEREuser_idIN(此处为user_ids)并获取二级索引user_id中的所有帖子

  3. Django + 雷迪斯 : How to invalidate cache for just one specific element - 2

    在我正在开发的网站中,用户可以提交图像(头像)。当用户想要更新他们的图片时,上传的图片会被调整大小、优化并生成一些缩略图。只有经过处理后,图像才会显示在网站中。我打算使用redis来长时间缓存图片,当上述过程完成后,我想只对上传的图片使缓存失效。我找不到教我们如何实现这些目标的文档/教程。有人能给我指点一些教程/文档来解释如何缓存图像以及如何使特定图像的缓存无效吗?谢谢。 最佳答案 您可以使用solr-thumbnail包来完成所有这些工作,包括缓存。您也可以将redis定义为kvstore。Docshere

  4. 雷迪斯 : Querying based on matching key pattren - 2

    我是Redis的新手,我试图通过Redis文档找出这个问题,但没有成功。这是详细信息。假设我插入了如下字符串。Setcategory:1"Men"Setcategory:2"Women"Setcategory:3"Kids"Setcategory:4"Home"Setcategory:5"shoes"...在这种情况下,我想通过查询遵循特定模式的键来获取所有值category:*。Getcategory:*有没有办法像这样获取所有类别? 最佳答案 使用SCAN.SCAN是遍历Redis数据库中的键的唯一安全方法。SCAN将分块键空间

  5. redis - 预订引擎 |雷迪斯 - 2

    我计划为我的预订引擎使用StackExchange.Redisc#包装器。但我担心会在同一日期范围内登记的预订。如何确保不会创建重叠订单? 最佳答案 您必须为您的数据使用唯一的key。2个主要解决方案:解决方案1:在REDIS中存储唯一大小跟踪预订号关键名称:bookings:size在每次预订时,获取bookings:size,然后在预订后添加+1。像这样使用booking:size作为键预订:订单-1预订:订单2bookings:order-3解决方案2:在您的程序中生成一个唯一的key1.在您的代码中生成一个唯一的key(最好

  6. java - 雷迪斯 : Can I init jedis instance as a static final field? - 2

    我需要在Java中使用Redis作为数据源,所以我决定使用代码:publicclassRedisService{privatestaticfinalJedisjedis=newJedis("host",6400);;publicstaticDevicegetDevice(Stringkey){//Dosomethinguseredis.returnnull;}}我以为服务器会自动初始化Jedis(RedisAPIforJava),这是使用Jedis的好方法吗? 最佳答案 看看我们如何使用Jedis:通过传递主机和端口信息创建单例or

  7. java - 雷迪斯 : Can I init jedis instance as a static final field? - 2

    我需要在Java中使用Redis作为数据源,所以我决定使用代码:publicclassRedisService{privatestaticfinalJedisjedis=newJedis("host",6400);;publicstaticDevicegetDevice(Stringkey){//Dosomethinguseredis.returnnull;}}我以为服务器会自动初始化Jedis(RedisAPIforJava),这是使用Jedis的好方法吗? 最佳答案 看看我们如何使用Jedis:通过传递主机和端口信息创建单例or

  8. database - 雷迪斯 GREORADIUS : include altitude? - 2

    我希望使用Redis的GEORADIUS命令。但是,该命令只在给定经纬度的二维圆范围内进行搜索。我还需要进行高度搜索,从而在三维球体范围内找到结果。我如何在Redis中实现这一目标? 最佳答案 我相信您实际上想要做的是在3D圆柱体(或者如果考虑到地球的球形性质,则为某种圆锥体)内搜索。海拔搜索本身并不包含在Redis的地理空间索引中,但您可以将该属性存储在其自己的SortedSet中作为分数。然后,您可以对高度执行范围搜索(ZRANGEBYSCORE),并将结果与​​半径查询的结果相交(ZINTER)(提示:使用临时键STORE结果

  9. database - 雷迪斯 GREORADIUS : include altitude? - 2

    我希望使用Redis的GEORADIUS命令。但是,该命令只在给定经纬度的二维圆范围内进行搜索。我还需要进行高度搜索,从而在三维球体范围内找到结果。我如何在Redis中实现这一目标? 最佳答案 我相信您实际上想要做的是在3D圆柱体(或者如果考虑到地球的球形性质,则为某种圆锥体)内搜索。海拔搜索本身并不包含在Redis的地理空间索引中,但您可以将该属性存储在其自己的SortedSet中作为分数。然后,您可以对高度执行范围搜索(ZRANGEBYSCORE),并将结果与​​半径查询的结果相交(ZINTER)(提示:使用临时键STORE结果

  10. 雷迪斯 : Sorted sets for specific SMEMBERS - 2

    我是Redis的新手,我尝试为属于sadd的特定值显示一个排序集。有没有办法在Redis中执行此操作?SADDfriends"Sarah"SADDfriends"Lisa"SADDfriends"Tim"ZADDusers200"Sarah"ZADDusers133"Lisa"ZADDusers410"Peter"ZADDusers280"Tim"ZADDusers205"Hans"我想显示一个仅包含friend分数的排序集。1)"Tim"2)"280"3)"Sarah"4)"200"5)"Lisa"6)"133" 最佳答案 您可以

随机推荐