通过 C# 在 Redis 中放置一个密钥

Posted

技术标签:

【中文标题】通过 C# 在 Redis 中放置一个密钥【英文标题】:Put a key in Redis via C# 【发布时间】:2021-12-30 19:51:33 【问题描述】:

我正在尝试构建自定义 DLL,它将特定键放入 Redis 键值存储。我构建,执行,但不做任何事情。没有添加密钥。到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using TSLab.Script;
using TSLab.Script.Handlers;
using StackExchange.Redis;

namespace TSLab.pmus

    [HandlerCategory("Redis")]
    [InputsCount(2)]
    public class WriteToRedis : ITwoSourcesHandler, ISecurityInput0, IDoubleInputs, IDoubleReturns, IStreamHandler, IValuesHandlerWithNumber, IContextUses
    
        private ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
        public IContext Context  set; private get; 
        [HandlerParameter(Name = "table", NotOptimized = true)]
        public int table  get; set; 
        [HandlerParameter(Name = "key", Default = "mykey", NotOptimized = true)]
        public string key  get; set; 

        public IList<double> Execute(ISecurity sec, params IList<double>[] dataArr)
        
            return new double[0];
        

        public double Execute(ISecurity sec, ConnectionMultiplexer redis, params double[] dataArr)
        
            IDatabase db = redis.GetDatabase(table);
            db.StringSet("testKey", "Test string");
            return 0;
        
    

【问题讨论】:

你能告诉我们你是如何在启动时配置它的吗? @user3401335 此代码旨在作为名为 TSLab 的软件的插件。我链接了使用 TSLab.Script 和 TSLab.Script.Handlers 的 DLL 的一些依赖项,就像它在文档中所说的那样。它可以正确构建,只是无法按预期工作。 如果你调试它:如果两个 Execute API 被执行,哪个?如果是第一个,那么:你什么都没做。 @MarcGravell 是的。你完全正确! 【参考方案1】:

正如@MarcGravell 所说,问题在于两种“执行”方法。 我将代码更改为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using TSLab.Script;
using TSLab.Script.Handlers;
using StackExchange.Redis;

namespace TSLab.pmus

 
    [HandlerCategory("Redis")]
    [InputsCount(2)]
    public class WriteToRedis : ITwoSourcesHandler, ISecurityInput0, IDoubleInputs, IDoubleReturns, IStreamHandler, IValuesHandlerWithNumber, IContextUses
    
        private ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
        public IContext Context  set; private get; 
        [HandlerParameter(Name = "table", NotOptimized = true)]
        public int table  get; set; 
        [HandlerParameter(Name = "key", Default = "mykey", NotOptimized = true)]
        public string key  get; set; 

        public IList<double> Execute(ISecurity sec, params IList<double>[] dataArr)
         
            IDatabase db = redis.GetDatabase(table);
            db.StringSet("testKey", "Test string");
            return new double[0];
        
    

现在它可以正常工作了。

【讨论】:

以上是关于通过 C# 在 Redis 中放置一个密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何使用视图通过 MVC 在 Sencha Touch 2.0 中放置一个按钮

标签从数据库c#中放置随机值

在 C# .cs 文件中放置 using 语句的位置[重复]

在 Visual C# 中获取 Components 类以在面板中放置图像

如何使用 C# 在 Visual Studio 中放置图像? [关闭]

如何通过 rmarkdown 在 PDF 中放置表格或更精确地格式化标题文本?