小编Raf*_*kel的帖子

Redis分页策略的优缺点

TL; DR:以下三个选项中哪一个对Redis进行分页最有效?

我正在实现一个包含多个用户生成的帖子的网站,这些帖子保存在关系数据库中,然后以哈希的形式复制到Redis,其中包含密钥site:{site_id}:post:{post_id}.

我想对Redis执行简单的分页查询,以便在Pinterest风格的界面中实现延迟加载分页(即用户向下滚动,我们向服务器发送Ajax请求,要求下一组帖子).

然后我创建了一个Set来跟踪已发布的帖子ID,其中包含键site:{site_id}:posts.我选择了Sets因为我不希望在集合中有重复的ID,我可以使用简单的SADD快速完成它(不需要检查是否存在id).

好吧,由于套装没有订购,我正在考虑我必须分页的选项的优缺点:

1)使用SSCAN命令对我已经实现的集进行分页

在这种情况下,我可以将返回的扫描光标保留在用户的会话中,然后在下次请求时将其发送回服务器(对于多个用户访问和更新数据库,这似乎不可靠:在某些时候光标将无效并且返回奇怪的结果 - 除非有一些我不知道的警告).

2)修改我的设置使用列表有序集合,而不是

然后我可以使用LRANGEZRANGE进行分页.列表似乎是我的用例中性能最高且最自然的选项.它非常适合按日期分页和排序,但我根本无法在不循环所有列表的情况下检查单个项目是否存在.排序集似乎加入了集和列表的优点,但消耗更多的服务器资源.

3)继续使用常规集并将页码存储为密钥的一部分

它会是这样的site:{site_id}:{page_number}:posts.这是扫描命令实施之前的推荐方法.

所以,问题是:哪一个是最有效/最简单的方法?这里没有列出任何其他推荐选项吗?

language-agnostic pagination lazy-loading redis

17
推荐指数
1
解决办法
8540
查看次数

Laravel 5.1 - 如何在进度条上设置消息

我正在尝试与Laravel文档中提供的相同的示例:

$users = App\User::all();

$this->output->progressStart(count($users));

foreach ($users as $user) {
    print "$user->name\n";

    $this->output->progressAdvance();
}

$this->output->progressFinish();
Run Code Online (Sandbox Code Playgroud)

这很好用.我想自定义进度条(见这个),但$this->output->setMessage('xpto');给出:

PHP Fatal error:  Call to undefined method Illuminate\Console\OutputStyle::setFormat()
Run Code Online (Sandbox Code Playgroud)

php symfony laravel artisan laravel-5.1

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

jQuery UI Buttonset不向子元素添加类

我遇到了jQuery UI的buttonset函数的(间歇性)问题.有时当我调用它时,它只应用它添加到容器div和第一个子节点的类,有时它会完全按预期工作.(对不起,我不能为此做一个小提琴,我不能让它在我的应用程序之外发生.)与jQuery UI 1.10.0和1.10.4相同的问题.

即我从这开始:

<div class="my-buttonset">
    <input type="radio" name="option" id="option1">
    <label for="option1">Option 1</label>

    <input type="radio" name="option" id="option2">
    <label for="option2">Option 2</label>

    <!-- More elements -->
</div>
Run Code Online (Sandbox Code Playgroud)

调用buttonset后得到这个(注意单选按钮确实会添加一个不正确的类):

<div class="my-buttonset ui-buttonset">
    <input class="ui-corner-left" type="radio" name="option" id="option1">
    <label for="option1">Option 1</label>

    <input type="radio" name="option" id="option2">
    <label for="option2">Option 2</label>

    <!-- Other elements unchanged -->
</div>
Run Code Online (Sandbox Code Playgroud)

而不是这个:

<div class="container-fluid-full radio-row mode-radio-row ui-buttonset">
    <input class="ui-helper-hidden-accessible" type="radio" name="option" id="option1">
    <label class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-hover" for="option1" role="button" aria-disabled="false" aria-pressed="false"><span class="ui-button-text">Option 1</span></label>

    <input class="ui-helper-hidden-accessible" type="radio" name="option" id="option2"> …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery jquery-ui angularjs

8
推荐指数
1
解决办法
572
查看次数

Laravel Homestead Redis Port Forwarding

我在尝试远程连接到我当地的Homestead Redis服务器时遇到了一些麻烦.我正在使用命令行(redis-cli)和RDM.

我可以在此框中使用PgAdmin连接Postgresql,但Redis返回:

无法在127.0.0.1:63790连接到Redis:连接被拒绝

我的Redis配置文件"bind"指令被注释,因此它应该接受来自所有源的连接.我还尝试停止Redis并再次启动它,手动指向配置文件,但没有成功.

在我的Homestead.yaml配置文件中,默认情况下不转发Redis端口.根据Homestead的文档,我可以像这样设置端口转发:

ports:
    - send: 63790
      to: 6379
      protocol: udp
Run Code Online (Sandbox Code Playgroud)

好吧,我也尝试过并重新启动服务器,但它没有用.

我错过了什么吗?

php redis vagrant laravel homestead

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

WebAssembly 应用程序如何将其原生 Window / OpenGL / Vulkan 调用映射到 DOM 中的画布元素?

我正在阅读有关 WebAssembly 的文章,我很好奇如何将 Vulkan 或 OpenGL 等图形编程移植到画布元素。文档很长,我想我最终会解决这个问题,但我很好奇,并没有在现场找到答案。

到目前为止,我知道它可以将函数导出到 JS,而 JS 会像往常一样做操作 DOM 的肮脏工作。

我可以直接编写 WebGL,但这不是我的观点。我见过移植到 WebAssembly 的游戏,我想知道它是如何工作的。如果 WebAssembly 无法直接访问 DOM,它如何呈现任何内容?通常,图形应用程序使用外部窗口管理器(如GLFWSDL)来创建窗口上下文来绘制您的内容。

如果我确实使用这样的库编译了一个程序,并期望一个带有一些 Window 对象的环境启动,如果 DOM 中没有这样的概念,这些指令将如何映射到画布?我需要以某种方式调整我的 C++ 程序吗?

javascript c sdl emscripten webassembly

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

如何检测Arduino中按下按钮的时间?

标题说明了一切.如何检测Arduino中按下/释放按钮的时间长度,然后打印一些自定义输出?

注意:

有人在我面前问了这个问题,我回答.然而,在我发送答案之前,这个人删除了他自己的问题.我只是重新问了所以我可以发布已经写好的答案(希望它可以帮助其他人).

c atmega arduino

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