小编ziv*_*ziv的帖子

使用stackexchange.redis存储Lua脚本

我正在尝试在Azure WebApp上使用StackExchange.Redis并需要运行一些Lua脚本.

建议的方法是将脚本加载到服务器,但我很难理解正确的模式.

我认为应该做的方式是在WebApp初创公司:

LuaScript luaScript = LuaScript.Prepare(scriptString);
var endpoints = redis.GetEndPoints();
var endpoint = endpoints[0];
IServer server = redis.GetServer(endpoint);
LoadedLuaScript loadedScript = luaScript.Load(server);
Run Code Online (Sandbox Code Playgroud)

然后保留LoadedLuaScript供以后使用(与ConnectionMultiplexer一起使用).然后当我想运行Lua脚本时:

IDatabase db = redis.GetDatabase();
db.ScriptEvaluate(loadedScript);
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

由于Azure可以有多个Redis节点,我应该为每个端点运行luaScript.Load并只保留其中一个以供以后使用吗?即:

LuaScript luaScript = LuaScript.Prepare(script);
var endpoints = redis.GetEndPoints();
LoadedLuaScript loadedScript;
foreach (var endpoint in endpoints)
{
    IServer server = redis.GetServer(endpoint);
    loadedScript = luaScript.Load(server);
}
return loadedScript;
Run Code Online (Sandbox Code Playgroud)

lua stackexchange.redis azure-redis-cache

11
推荐指数
1
解决办法
1144
查看次数

typescript返回继承类的类型

这就是我想要做的:

class Base{
    clone(){
        //return new instance of the inherited  class 
    }
}

class Derived extends Base{
}

const d1=new Derived();
const d2=d2.clone; // I want d2 to be of type Derived
Run Code Online (Sandbox Code Playgroud)

d2的clone方法的返回类型应该是Derived类型的返回类型?

typescript typescript-typings

10
推荐指数
1
解决办法
1284
查看次数

socket.io重新连接时重新加入房间

我正在编写一个新的SPA应用程序,它将订阅几个房间以进行多种类型的信息更新.

在我的生产设置中,我将在负载平衡器后面使用两台服务器以提高可靠性.

如果断开连接 - 客户端是否必须在重新连接事件回调中重新发送房间订阅请求,或者是否有办法让服务器自动重新连接客户端(即使客户端由于服务器故障而重新连接到其他服务器)?

socket.io

8
推荐指数
2
解决办法
3190
查看次数

打字稿泛型分配空对象

这就是我想要实现的目标:

interface IFoo { ... }
function extendWithFoo<T extends {}>(x: T = {}): T & IFoo {
 ...
}
Run Code Online (Sandbox Code Playgroud)

我收到错误 TS2322:类型“{}”无法分配给类型“T”。

有没有办法做到这一点?

typescript

6
推荐指数
1
解决办法
7902
查看次数

可视代码 - 排除具有多个条件的文件

可以选择使用"when"关键字排除生成的文件.eg:

"files.exclude": {
  "**/*.js": { "when": "$(basename).ts"},
}
Run Code Online (Sandbox Code Playgroud)

我还想排除从.tsx文件生成的.js文件.也不

"**/*.js": { "when": "$(basename).ts, $(basename).tsx"}
Run Code Online (Sandbox Code Playgroud)

也不

"**/*.js": { "when": "$(basename).ts"},
"**/*.js": { "when": "$(basename).tsx"}
Run Code Online (Sandbox Code Playgroud)

工作.

我也试过"**/*.js": { "when": "$(basename).ts*"}"**/*.js": { "when": "$(basename).ts | $(basename).tsx"}徒劳无功.

有办法吗?

visual-studio-code

5
推荐指数
1
解决办法
1347
查看次数

如何为扩展对象的函数创建typescript定义

第三方库中有功能扩展对象以向其添加更多功能.例如,无缝不可变的

我想为这样的库创建定义文件.我想到了一些东西

interface ImmutableMethods<T> extends T{
    set?<U>(key: string | number, value: any): T | U;
    setIn?<U>(keys: Array<string>, value: any): T | U;
    ...
}
function Immutable<T>(obj: T, options?): ImmutableMethods<T>
Run Code Online (Sandbox Code Playgroud)

然后我将能够声明我自己的类型:

interface Type1 {prop1, prop2}
interface Type2 {propOfType1: ImmutableMethods<Type1>}
var immutableType2:Type2 = Immutable(...)
Run Code Online (Sandbox Code Playgroud)

然后我将在所有对象上使用Immutable函数.

但问题是该行interface ImmutableMethods<T> extends T给了我一个错误"一个接口可能只扩展一个类或另一个接口"

有没有办法声明T是一个接口,还是一种其他方式来获得这种扩展行为?

typescript

5
推荐指数
1
解决办法
372
查看次数

Node.js 从哪里获取时区数据?

Nodejs 中的 IANA 时区数据是嵌入到 Node.js 代码中还是从操作系统获取数据?

似乎它有自己的版本,如process.versions返回时区版本,如此处所述。如果是这样,我是否需要安装新的 Node.js 版本来更新时区数据,或者还有其他方法吗?

timezone node.js

3
推荐指数
1
解决办法
1966
查看次数

如何将 git ssh 凭据从 wsl 传递到 VScode dev-container

我已经使用 WSL 中的 ssh 密钥为我的 gitlab 帐户设置了 ssh 密钥。

现在我想在 VScode 开发容器中使用相同的 ssh git 凭据。

如何将 ssh 密钥传递到开发容器?

git ssh wsl-2 vscode-devcontainer

3
推荐指数
1
解决办法
2604
查看次数