如何从 Redis-cli monitor 命令识别 Redis 密钥?
How to identify Redis keys from Redis-cli monitor command?
可能与 - Redis command to get all available keys?
有关
我有一个存储 SixPack 数据的 Redis 服务器(https://github.com/sixpack/sixpack - 一个启用 A/B 测试的框架)。当我 运行 监控命令时,我可以监控 Redis 服务器并看到以下示例条目:
$ redis-cli monitor|grep 'TEST'
我可以看到有几个键是used/set。我在下面附上一个样本:
1581720438.878978 [15 127.0.0.1:39722] "GETBIT" "sixpack:e:-28591_:excluded" "2307"
1581720439.623866 [15 127.0.0.1:39722] "LRANGE" "sixpack:e:-28003_:alternatives" "0" "-1"
1581720439.624209 [15 127.0.0.1:39722] "HGET" "sixpack:e:-28003_" "traffic_fraction"
1581720439.624557 [15 127.0.0.1:39722] "GET" "sixpack:e:-28003_:winner"
1581720439.624822 [15 127.0.0.1:39722] "HEXISTS" "sixpack:e:-28003_" "archived"
1581720439.625110 [15 127.0.0.1:39722] "EVALSHA" "bcbf3b3ac336a33c2cd7ad0e1fca28db7b49fdee" "1" "sixpack:e:-28003_Recapture:users" "ac945bf7-285e-4f69-83fd-1336e084a318"
但是,当我尝试通过 运行ning $ redis-cli KEYS '*'
命令访问密钥时,我只得到一个空列表 (empty list or set)
。
更新: 我检查过这不是集群设置。我还检查了 DBSIZE 命令。它 returns 0.
如何从 MONITOR 输出中导出密钥?有没有办法在 Redis CLI 中获取所有密钥?
根据@AlisterBulman 的提示,我运行 INFO 命令是这样的。
$ redis-cli INFO | grep keys
从输出中我可以看到数据库编号“15”有密钥。
db15:keys=300869,expires=0,avg_ttl=0
然后我运行这个命令来获取密钥。
$ redis-cli -n 15 KEYS '*'
如果使用多个 Redis 数据库,运行 KEYS 命令时应使用适当的数据库索引。
$redis-cli -n <DB number> KEYS '*' # or use --scan
Redis 默认带有 16 个 'databases',可用于拆分键。要从工具中使用它们,redis-cli -n 2
开始使用第 3 个数据库(默认值为 0)。一旦进入工具,或者从 API,就会有 SELECT 2
命令(同样,select 要使用的数据库)。可以允许更多 - 它只是 redis.conf 文件中的一个数字。
SixpackA/B测试工具配置有两种方法可以选择使用哪个Redis数据库-配置中是key(eg)redis_db: 15
,或者it,更多可以由环境变量设置:SIXPACK_CONFIG_REDIS_DB
,以及 _PORT、_HOST、_PASSWORD 和 _PREFIX。
可能与 - Redis command to get all available keys?
有关我有一个存储 SixPack 数据的 Redis 服务器(https://github.com/sixpack/sixpack - 一个启用 A/B 测试的框架)。当我 运行 监控命令时,我可以监控 Redis 服务器并看到以下示例条目:
$ redis-cli monitor|grep 'TEST'
我可以看到有几个键是used/set。我在下面附上一个样本:
1581720438.878978 [15 127.0.0.1:39722] "GETBIT" "sixpack:e:-28591_:excluded" "2307"
1581720439.623866 [15 127.0.0.1:39722] "LRANGE" "sixpack:e:-28003_:alternatives" "0" "-1"
1581720439.624209 [15 127.0.0.1:39722] "HGET" "sixpack:e:-28003_" "traffic_fraction"
1581720439.624557 [15 127.0.0.1:39722] "GET" "sixpack:e:-28003_:winner"
1581720439.624822 [15 127.0.0.1:39722] "HEXISTS" "sixpack:e:-28003_" "archived"
1581720439.625110 [15 127.0.0.1:39722] "EVALSHA" "bcbf3b3ac336a33c2cd7ad0e1fca28db7b49fdee" "1" "sixpack:e:-28003_Recapture:users" "ac945bf7-285e-4f69-83fd-1336e084a318"
但是,当我尝试通过 运行ning $ redis-cli KEYS '*'
命令访问密钥时,我只得到一个空列表 (empty list or set)
。
更新: 我检查过这不是集群设置。我还检查了 DBSIZE 命令。它 returns 0.
如何从 MONITOR 输出中导出密钥?有没有办法在 Redis CLI 中获取所有密钥?
根据@AlisterBulman 的提示,我运行 INFO 命令是这样的。
$ redis-cli INFO | grep keys
从输出中我可以看到数据库编号“15”有密钥。
db15:keys=300869,expires=0,avg_ttl=0
然后我运行这个命令来获取密钥。
$ redis-cli -n 15 KEYS '*'
如果使用多个 Redis 数据库,运行 KEYS 命令时应使用适当的数据库索引。
$redis-cli -n <DB number> KEYS '*' # or use --scan
Redis 默认带有 16 个 'databases',可用于拆分键。要从工具中使用它们,redis-cli -n 2
开始使用第 3 个数据库(默认值为 0)。一旦进入工具,或者从 API,就会有 SELECT 2
命令(同样,select 要使用的数据库)。可以允许更多 - 它只是 redis.conf 文件中的一个数字。
SixpackA/B测试工具配置有两种方法可以选择使用哪个Redis数据库-配置中是key(eg)redis_db: 15
,或者it,更多可以由环境变量设置:SIXPACK_CONFIG_REDIS_DB
,以及 _PORT、_HOST、_PASSWORD 和 _PREFIX。