<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>helloqidi</title>
    <link>https://ruby-china.org/helloqidi</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>多条件组合的查询列表页，大家怎么做缓存</title>
      <description>&lt;p&gt;&lt;strong&gt;1，现状&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;（1）概述：目前网站列表页面的过滤条件是：1 级分类、最新/人气，我们采用的是 redis 缓存 id 和时间，同时配合页面静态缓存。
（2）具体：建立了多个 redis 有序集 (Sorted set)，键分别是“latest”，“hot”，“latest:#{category_id} ”，“hot:#{category_id} ”。查询是通过 redis 的 ZRANGE/ZREVRANGE 方法实现分页和时间排序，获取 id 之后再从 mongodb 中查询具体信息。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2，新需求遇到的问题&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;（1）概述：丰富过滤条件，如图：
&lt;img src="//l.ruby-china.com/photo/53ce2e9c37abf7165d4c02c2c7097161.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;（2）解决：因为是多条件组合查询 + 翻页，所以不能使用 redis 做缓存。想到给 mongodb 建立索引，通过分析得到为了适应各个条件组合需要建立约 30 个索引 (排序也要建立索引)。这样有 2 个问题：一是会增大索引大小，占用内存，目前索引已经 10G；二是索引多了，影响写入速度。&lt;/p&gt;

&lt;p&gt;所以，请教大家，对于这种多组合的查询列表页，大家一般如何缓存？&lt;/p&gt;</description>
      <author>helloqidi</author>
      <pubDate>Mon, 15 Apr 2013 11:38:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/10211</link>
      <guid>https://ruby-china.org/topics/10211</guid>
    </item>
    <item>
      <title>Float 类型的数字相加，出现 bug？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.02&lt;/span&gt; 

&lt;span class="mf"&gt;200.01&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;
&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;200.01999999999998&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ruby 版本：1.9.3p0&lt;/p&gt;</description>
      <author>helloqidi</author>
      <pubDate>Thu, 20 Sep 2012 10:37:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/5650</link>
      <guid>https://ruby-china.org/topics/5650</guid>
    </item>
  </channel>
</rss>
