是否有一个Redis命令获取数据库中的所有键?我见过一些python-redis库获取它们。但我想知道从redis-client是否可以。
当前回答
如果你正在使用Laravel框架,那么你可以简单地使用这个:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
在核心PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
其他回答
试着看看KEYS命令。KEYS *将列出redis中存储的所有键。
编辑:请注意KEYS文档页顶部的警告:
时间复杂度:O(N), N为数据库中的键数,假设数据库中的键名和给定模式的长度有限。
UPDATE (V2.8或更高版本):SCAN是KEYS的更好替代方案,因为它不会阻塞服务器,也不会消耗大量资源。更喜欢使用它。
——>从redis-cli获取所有密钥
-redis 127.0.0.1:6379> keys *
——>获取图案列表
-redis 127.0.0.1:6379> keys d??
这将生成以'd'开头的三个字符的键。
-redis 127.0.0.1:6379> keys *t*
这将获得在键中匹配't'字符的键
——>从命令行计数键
-redis-cli keys * |wc -l
或者你也可以使用dbsize
-redis-cli dbsize
我们应该在redis 2.8及以后的版本中使用——scan——pattern。
您可以尝试在redis-cli之上使用这个包装器。 https://github.com/VijayantSoni/redis-helper
redis-cli -h <host> -p <port> keys *
哪里*是列出所有键的模式
键模式
自1.0.0起可用。 时间复杂度:O(N), N为数字 数据库中的键,假设键名在 数据库和给定模式的长度是有限的。
返回所有匹配模式的键。
警告:不建议使用此命令,因为它可能会破坏性能,当它针对大型数据库执行时,可以使用SCAN或SETS代替KEYS。
KEYS命令使用示例:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
推荐文章
- 什么时候使用一个键/值存储,如Redis代替/沿着SQL数据库?
- Redis持久化数据吗?
- 我如何移动一个redis数据库从一个服务器到另一个?
- Redis比mongoDB快多少?
- 在Redis中打印按键数量
- Redis是单线程的,那么它如何做并发I/O?
- 如何连接远程Redis服务器?
- 无法连接到Redis在127.0.0.1:6379:连接拒绝与自制
- 多Redis数据库的意义是什么?
- 如何列出所有的Redis数据库?
- 为什么我们需要像RabbitMQ这样的消息代理而不是像PostgreSQL这样的数据库?
- 检查Redis服务器版本
- Redis键命名约定?
- Linux—只安装redis-cli
- Redis只是一个缓存吗?