我想找到任何/所有带TTL的redis键-1.这是每个未设置为过期的密钥.我已经尝试了几个GUI客户端,但它们似乎都没有关闭此功能.
我发现这个答案似乎提供了一种从命令行执行此操作的方法.但是当我在本地或在我的远程redis主机上尝试时,我得到"无效参数"错误.
本地
redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl $LINE`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done;
远程
$redis-cli -h ... -p ... -a
redis>> keys "*" | while read LINE ; do TTL=`redis-cli ttl $LINE`; if [ $TTL -eq -1 ]; then echo "$LINE"; fi; done;
我究竟做错了什么?有一个更好的方法吗?
我已经在centos中安装了Redis,我有多个像这样的redis键,
Product:<id>:<url>
Run Code Online (Sandbox Code Playgroud)
如何Product:*:* 使用CLI 删除所有内容?
Redis版本:3.2.4 [最新我猜]
谢谢!
我正在尝试使用 redis 服务器中的模式删除密钥,但它没有被删除。
示例按键
1) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xa0\x01"
2) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x98\x02"
3) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xb8\x02"
4) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t!"
5) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t~"
6) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xc0\x02"
7) "flc_-41sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xc5\x01"
8) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x94\x03"
9) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xd3\x01"
10) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xee\x02"
Run Code Online (Sandbox Code Playgroud)
命令
redis-cli 密钥 *sandeep-pant* | xargs redis-cli DEL
输出
xargs: WARNING: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the --null option?
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option
(integer) 0
Run Code Online (Sandbox Code Playgroud) 我可以使用连接的 redis-cli 复制密钥吗,redis 中是否有预定义的命令?
将 FSS_SYSAGENT 复制到 FSS_SYSAGENTDuplicate。
10.44.112.213:6403> hgetall FSS_SYSAGENT
1) "SYSTEM_01" 2) "{\"端口\":\"4407\",\"ipAddress\":\"10.44.112.213\",\"symbolicName\":\"SYSTEM_01\",\"eventLogEnabled \":\"1110\",\"status\":1,\"wcPort\":\"6029\",\"activeSystem\":\"N\",\"createdBy\":\"\ ",\"createdDate\":\"2018-11-20 13:11:16\",\"modifiedBy\":\"\",\"modifiedDate\":\"\",\"机构\" :\"FSS\",\"delFlag\":0,\"accessID\":0,\"rowCount\":0,\"endCount\":0}"
我正在使用以下命令连接到 AWS redis 集群
redis-cli -c -h host.amazonaws.com -p 6379
Run Code Online (Sandbox Code Playgroud)
我从 springboot 应用程序将两个键“X1”和“X2”推送到 redis 缓存中(API 方法未用注释)@Cacheable,现在当我从 cli 终端运行时,KEYS *它会列出“X1”或“X2”,但不会同时列出两者。不过,两个键的 GET 都可以正常工作。
info keyspace返回以下内容;
键空间
db0:keys=11,expires=1,avg_ttl=1975400
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
我在没有密码的情况下安装了 redis。然后我尝试输入密码但没有成功,并决定从我的服务器中删除所有与 redis 相关的内容。之后,我再次安装了redis并成功设置了密码。问题是现在正在创建一个新数据库而不是从旧数据库中读取。我正在从 sabe 目录运行相同的命令。$~/ redis-server
我还尝试检查是否正在生成一个新的 dump.rdb 文件:
find / -type f -name "*.rdb"
Run Code Online (Sandbox Code Playgroud)
但只是找到我dump.rdb想使用的正确文件。
有没有办法将我的最后一个数据库导入到这个新数据库中?或者,有没有办法使用该correct dump.rdb文件启动我的服务器?
我在 redis 中有一个哈希集,如下所示。
"abcd" : {
"rec.number.984567": "value1",
"rec.number.973956": "value2",
"rec.number.990024": "value3",
"rec.number.910842": "value4",
"rec.number.910856": "...",
"other.abcd.efgh": "some value",
"other.xyza.blah": "some other value"
"..." : "...",
"..." : "...",
"..." : "...",
"..." : "..."
}
Run Code Online (Sandbox Code Playgroud)
如果我调用 hgetall abcd,它会给我哈希中的所有字段。我的目标是仅获取哈希集中以“rec.number”开头的字段。当我打电话时
redis-cli hmget "abcd" "rec.number*",
Run Code Online (Sandbox Code Playgroud)
它给了我这样的结果
1)
Run Code Online (Sandbox Code Playgroud)
有没有办法只检索那些以我的预期模式开头的键的数据?我只想检索这些键,因为我的数据集包含许多其他不相关的字段。
当我将一些对象写入 Redis 时,我可以获得不同的内存使用统计信息。我想了解这是如何发生的。
简单的例子:
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> MEMORY usage a
(integer) 49
127.0.0.1:6379> set a "1"
OK
127.0.0.1:6379> MEMORY usage a
(integer) 49
127.0.0.1:6379> set a \x01 <<<< Message packed of number 1
OK
127.0.0.1:6379> MEMORY usage a
(integer) 55
127.0.0.1:6379> set a '\x01' <<<< Message pack of number 1 but added ''
OK
127.0.0.1:6379> MEMORY usage a
(integer) 55
127.0.0.1:6379> set a "\x01" <<<<< Message pack of number 1 but added ""
OK
127.0.0.1:6379> MEMORY usage …Run Code Online (Sandbox Code Playgroud) 我想启动一个容器并直接redis-cli在里面交互运行。由于某种原因,在我的尝试中,输入总是被忽略。
启动交互式 shell,然后手动启动程序即可:
# in my local shell:
$ kubectl run redis-cli --image redis:latest --attach --leave-stdin-open --rm -it --command -- bash
# then in container shell:
root@redis-cli:/data# redis-cli -h redis.example.com
# now the redis-cli shell is open:
redis.example.com:6379>
Run Code Online (Sandbox Code Playgroud)
如何将其合并到一个命令中以直接进入redis-clishell?我已尝试以下操作,但没有看到任何提示,并且我的所有输入都被忽略。我什至无法按 ctrl-C 或 ctrl-D 退出它。
# in my local shell:
$ kubectl run redis-cli --image redis:latest --attach --leave-stdin-open --rm -it --command -- bash
# then in container shell:
root@redis-cli:/data# redis-cli -h redis.example.com
# now the redis-cli shell is …Run Code Online (Sandbox Code Playgroud) 我最近在 AWS elasticache 上创建了一个 Redis 集群,但在通过本地计算机上的 redis-cli 连接时遇到问题。每次我运行命令时:
redis-cli -h <redis_cluster_domain> -p 6379
Run Code Online (Sandbox Code Playgroud)
连接从未建立并最终因超时而退出。
最终,我发现它是由于安全组上的设置而被阻止的,因此我编辑了入站规则以允许来自我的 IP 地址的所有流量。即使执行此操作后,我仍然无法连接到集群。有什么想法可能是为什么吗?
amazon-web-services amazon-elasticache amazon-vpc redis-cli aws-security-group
redis-cli ×10
redis ×9
amazon-vpc ×1
key ×1
kubectl ×1
linux ×1
memory ×1
phpredis ×1
redis-cache ×1
redis-server ×1