千萬數(shù)據(jù)redis分頁查詢 redis怎么做分頁?
redis怎么做分頁?簡介:實現(xiàn)用戶信息的分頁查詢1。實現(xiàn)思想:list鍵存儲用戶ID,用于分頁查詢,用于同時查詢用戶總數(shù)。關(guān)鍵是人格。Hset users以以下格式保存用戶詳細(xì)信息:key-->
redis怎么做分頁?
簡介:實現(xiàn)用戶信息的分頁查詢
1。實現(xiàn)思想:list鍵存儲用戶ID,用于分頁查詢,用于同時查詢用戶總數(shù)。關(guān)鍵是人格。Hset users以以下格式保存用戶詳細(xì)信息:key-->person:userid值-->idAdd user[Java]view plain copy static jedis jedis=new jedis(“192.168.0.144”)static void saveuser(){string id=new random()。Nextint(10000)“”map
普通分頁一般是直接找出分頁緩存,逐頁放入緩存,但這種緩存方法有很多缺點。如果無法及時更新緩存,則一旦數(shù)據(jù)發(fā)生更改,所有以前的分頁緩存都將無效。比如,在微博這樣的場景中,微博下有排名靠前的次數(shù)。這在傳統(tǒng)的分頁中很難處理。最近一個想法又出現(xiàn)了另一個。數(shù)據(jù)緩存在redis中,ID為鍵,數(shù)據(jù)ID和排序得分保存在redis的skipplist(Zset)中,在查找數(shù)據(jù)時,從redis的skipplist中提取相應(yīng)的分頁數(shù)據(jù),得到ID列表。使用multiget一次從redis獲取ID列表中的所有數(shù)據(jù)。如果有缺少某個ID的數(shù)據(jù),則從數(shù)據(jù)庫中搜索返回給用戶,并按ID將搜索到的數(shù)據(jù)緩存到redis中,最后一步可以給出一些提示:例如,如果缺少某個ID數(shù)據(jù),則先直接返回給用戶,然后前端使用Ajax請求丟失的ID數(shù)據(jù),然后動態(tài)刷新。
如何查看redis日志?
在程序中完成分頁邏輯,然后每個頁面的數(shù)據(jù)都可以存儲在redis中
在正常配置下,MySQL只能承載2000萬數(shù)據(jù)(同時讀寫,表中有大的文本字段,單個服務(wù)器)。現(xiàn)在已經(jīng)超過1億,而且還在增加,建議按以下方式處理:
1子表。它可以按時間或一定的規(guī)則進行拆分,以便盡可能地查詢子表中的數(shù)據(jù)庫。這是最有效的方法。特別是寫,放入一個新表,并定期同步。如果記錄不斷更新,最好將寫入的數(shù)據(jù)放在redis中,并定期同步表3的大文本字段,將它們分隔成一個新的獨立表。對于較大的文本字段,可以使用NoSQL數(shù)據(jù)庫
4優(yōu)化體系結(jié)構(gòu),或者優(yōu)化SQL查詢,避免聯(lián)合表查詢,盡量不要使用count(*)、in、recursion等性能消耗語句
5使用內(nèi)存緩存,或者在前端讀取時增加緩存數(shù)據(jù)庫。重復(fù)讀取時,直接從緩存中讀取。
以上是一種低成本的管理方法,基本上幾個服務(wù)器就可以做到,但是管理起來有點麻煩。
當(dāng)然,如果總體數(shù)據(jù)量特別大,并且您不關(guān)心投資成本,請使用集群或tidb