gpt4 book ai didi

c# - 将数据推送到列表时,对 Redis 中持有错误类型值的键进行操作

转载 作者:IT王子 更新时间:2023-10-29 06:01:14 24 4
gpt4 key购买 nike

创建了 redis 列表并设置 key ,如下所示,出现错误

      public async Task MyMethod<T>()
{
//if i'm doing following it is working
string listname = "listname";
string listkey = "key";
RedisList<string> demodemo = new RedisList<string>(Settings, listname);
await demodemo.LeftPush(listkey);

//but i want to do it like below it is thoughing exception
RedisList<string> list = new RedisList<string>(Settings, typeof(T).Name.ToString());
string mykey = "myId";
await list.LeftPush(mykey);

getting following error :

Result Message: StackExchange.Redis.RedisServerException : ERR Operation against a key holding the wrong kind of value

最佳答案

作为旁注; RedisList<T>不是 SE.Redis 类型,因此我无法直接对此发表评论。但是:当您尝试做没有意义的事情时,该错误消息来自 redis-server 本身;例如,如果 foo是一个字符串,你不能lpop foozcard foo .

所以问题变成:存储的值是多少?我无法为您回答这个问题,但是:服务器可以。如果你熟悉redis-cli,那么debug object fooobject encoding foo可能有用。尽管说实话,您可能也可以通过猜测来完成:

  • strlen foo - 如果有效,它是一个字符串
  • hlen foo - 如果这有效,它就是一个哈希
  • llen foo - 如果这有效,它是一个列表
  • scard foo - 如果这有效,那就是一套
  • zcard foo - 如果这有效,那么它是一个排序集

请注意,所有这些命令都可以通过 SE.Redis 获得,但对于调查可疑数据库,redis-cli 通常更容易。

可能发生的情况是您在没有意识到的情况下意外地重复使用了 key 名称。这也许是对在键名中添加前缀的值(value)的一个很好的广告 - SE.Redis 在与数据库通信时可以自动为您做的其他事情。

关于c# - 将数据推送到列表时,对 Redis 中持有错误类型值的键进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com