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命令对我已经实现的集进行分页
在这种情况下,我可以将返回的扫描光标保留在用户的会话中,然后在下次请求时将其发送回服务器(对于多个用户访问和更新数据库,这似乎不可靠:在某些时候光标将无效并且返回奇怪的结果 - 除非有一些我不知道的警告).
然后我可以使用LRANGE或ZRANGE进行分页.列表似乎是我的用例中性能最高且最自然的选项.它非常适合按日期分页和排序,但我根本无法在不循环所有列表的情况下检查单个项目是否存在.排序集似乎加入了集和列表的优点,但消耗更多的服务器资源.
3)继续使用常规集并将页码存储为密钥的一部分
它会是这样的
site:{site_id}:{page_number}:posts
.这是扫描命令实施之前的推荐方法.
所以,问题是:哪一个是最有效/最简单的方法?这里没有列出任何其他推荐选项吗?
我正在尝试与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) 我遇到了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) 我在尝试远程连接到我当地的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)
好吧,我也尝试过并重新启动服务器,但它没有用.
我错过了什么吗?
我正在阅读有关 WebAssembly 的文章,我很好奇如何将 Vulkan 或 OpenGL 等图形编程移植到画布元素。文档很长,我想我最终会解决这个问题,但我很好奇,并没有在现场找到答案。
到目前为止,我知道它可以将函数导出到 JS,而 JS 会像往常一样做操作 DOM 的肮脏工作。
我可以直接编写 WebGL,但这不是我的观点。我见过移植到 WebAssembly 的游戏,我想知道它是如何工作的。如果 WebAssembly 无法直接访问 DOM,它如何呈现任何内容?通常,图形应用程序使用外部窗口管理器(如GLFW或SDL)来创建窗口上下文来绘制您的内容。
如果我确实使用这样的库编译了一个程序,并期望一个带有一些 Window 对象的环境启动,如果 DOM 中没有这样的概念,这些指令将如何映射到画布?我需要以某种方式调整我的 C++ 程序吗?
标题说明了一切.如何检测Arduino中按下/释放按钮的时间长度,然后打印一些自定义输出?
注意:
有人在我面前问了这个问题,我回答.然而,在我发送答案之前,这个人删除了他自己的问题.我只是重新问了所以我可以发布已经写好的答案(希望它可以帮助其他人).
c ×2
javascript ×2
laravel ×2
php ×2
redis ×2
angularjs ×1
arduino ×1
artisan ×1
atmega ×1
emscripten ×1
homestead ×1
html ×1
jquery ×1
jquery-ui ×1
laravel-5.1 ×1
lazy-loading ×1
pagination ×1
sdl ×1
symfony ×1
vagrant ×1
webassembly ×1