HiRedis ::如何使用LPUSH

时间:2017-03-09 22:33:49

标签: redis hiredis

我正在使用hiredis库的redisCommand做这样的事情:

LPUSH list1 a b "" c d "" e

其中“”表示我想在列表中插入空元素。当我从redis上的命令行执行它时它工作正常但是当我将它作为hiredis上的命令传递时,它不起作用并且元素最终变为“”而不是空。 有什么工作吗?

以下是我调用redisCommand的方法:

reply = (redisReply *) redisCommand(c,"LPUSH list1 a b c "" c d "" e);

我尝试过单引号,反斜杠等

2 个答案:

答案 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