我正在使用hiredis库的redisCommand做这样的事情:
LPUSH list1 a b "" c d "" e
其中“”表示我想在列表中插入空元素。当我从redis上的命令行执行它时它工作正常但是当我将它作为hiredis上的命令传递时,它不起作用并且元素最终变为“”而不是空。 有什么工作吗?
以下是我调用redisCommand的方法:
reply = (redisReply *) redisCommand(c,"LPUSH list1 a b c "" c d "" e);
我尝试过单引号,反斜杠等
答案 0 :(得分:0)
您可以在Redis中使用二进制安全字符串。 使用LPUSH命令继续将二进制字符串添加到列表中,如下所示:
redisReply * reply = redisCommand(context," LPUSH list1%b%b%b"," a",strlen(" a"),&# 34;",0," b",strlen(" b"));
输出将是:
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) ""
3) "a"
HTH, Swanand
答案 1 :(得分:0)
如果要推送到列表的元素数量是固定的:使用带有格式化参数的
formatter.timeZone = TimeZone(abbreviation: NSTimeZone.default.abbreviation()!)
redisCommand
如果元素数量是动态的:使用
const char *list = "list-name"; const char *non_empty_val = "value"; const char *empty_val = ""; /* or use %b to push binary element, as the other answer mentioned. */ redisReply *reply = (redisReply*)redisCommand(redis, "lpush %s %s %s", list, non_empty_val, empty_val);
redisCommandArgv