在redis中将数据压入列表时,对持有错误类型值的键进行操作

本文关键字:类型 有错误 操作 redis 数据 列表 | 更新日期: 2023-09-27 18:10:47

创建redis列表并设置键,如下面的get me error

      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);

出现以下错误:

Result Message: StackExchange.Redis.RedisServerException: ERR对持有错误类型值的键的操作

在redis中将数据压入列表时,对持有错误类型值的键进行操作

作为旁注;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通常更容易。

可能发生的情况是您无意中重用了一个键名而没有意识到这一点。这可能是一个很好的广告,说明在键名中添加前缀的价值。当你与数据库对话时,Redis可以自动为你做。