gpt4 book ai didi

redis - 使用 Redis 有序集中的部分键名查找值

转载 作者:IT王子 更新时间:2023-10-29 06:00:21 25 4
gpt4 key购买 nike

我有一个排序集,它具有以下键名和值:

zrange bargraph:branch:1:category:2:product:4
1) "76"
2) "55"
3) "10"
4) "84"

redis 中是否有一种机制可以在使用 zrange 时使用通配符(也许是 ?)来获得相同的值?也就是说,redis是否支持zrange bargraph:branch:1:category:2?如果不是,如果我只知道类别 ID(2) 而不知道产品 ID(4),而不使用不同的排序集,我如何才能最好地获得所有值?

最佳答案

这是 2015 年的更新答案。

如果你可以将 Redis 升级到 2.8 以上,带有 MATCH 的 SCAN 命令将适用于此。在那个版本之前,没有那么多,除了在开发环境中,不要使用 KEYS 命令。

http://redis.io/commands/scan

命令行示例:

$ redis-cli
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
2) "V3.0:shop.domain.com:route"
3) "V3.0:UNITTEST55660BC4A2548"
127.0.0.1:6379> scan 0 match V1.0:*
1) "0"
2) (empty list or set)
127.0.0.1:6379> scan 0 match V3.0:*
1) "0"
2) 1) "V3.0:UNITTEST55660BC7E0C5B"
2) "V3.0:shop.domain.com:route"
3) "V3.0:UNITTEST55660BC4A2548"

PHP 示例:

// Initialize our iterator to NULL
$iterate = null;

// retry when we get no keys back
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);

while ($arr_keys = $redis->scan($iterate, 'match:*')) {
foreach ($arr_keys as $str_key) {
echo "Here is a key: $str_key\n";
}
echo "No more keys to scan!\n";
}

请注意,php 代码未经测试,例如来自此处的核心文档。生产代码需要根据需要查找的键进行修改。

对于那些使用 Ubuntu 的用户,这里有升级 php5-redis 的说明:

  1. 在这里下载 2.2.7 包:http://pecl.php.net/package/redis
  2. $ php -i | grep Redis
    Redis 支持 => 已启用
    Redis 版本 => 2.2.4
  3. 按照 README 中的说明进行 phpize、配置、安装
  4. 为命令行 cli 包创建符号链接(symbolic link):cd/etc/php5/cli/conf.d && sudo ln -s ../../mods-available/redis.ini 20-redis.ini
  5. $ php -i | grep Redis
    Redis 支持 => 已启用
    Redis 版本 => 2.2.7

关于redis - 使用 Redis 有序集中的部分键名查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15673054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com