? ? ? ?我們的項目牽涉到跨庫跨表,使用ElasticSearch來解決。比較麻煩的是,ElasticSearch設置的in數量不可以超過500。在部門和人員數量少的時候這些并不是問題,然而對于某些大客戶,他們的部門和人員的數量查出來之后仍然非常巨大,所以就采用了,分割開再合并的做法。這樣的做法帶來一個問題就是查詢非常耗時,給客戶帶的體驗不好。為了解決這個慢問題,使用redis做緩存,把要做的查詢,放在凌晨查詢,一天查一次。雖然可能出現誤差,不過影響是可控的。
? ? ? redis有五種數據結構。String,Hash,Set,SortedSet,List。
1.String
String類似于Java的Hashmap,需要指定key和value,都是String類型。使用的時候get("")就可以。我們還可以設置一下它的過期時間。
舉個栗子,你想存一個List<Object>,有效期時間是24小時。首先設置key,key可以按照項目的需要命名,value由于是一個String,可以使用阿里的fastjson,JSONArray.toJSONString(),取得時候可以這么做
JSONArray jsonArray = JSONArray.parseArray(redisString);
for (int i =0; i < jsonArray.size(); i++) {
staffBirthdayList.add(jsonArray.getObject(i, StaffBirthday.class));
}
設置一下過期時間,以秒為單位。
2.Hash
Hash類似于Java的對象。比如這個Hash名稱是Student,學生有姓名和年齡。你可以設置hmset Student name zhanghua age 18,更多更詳細的只是可以參考下面:
https://www.cnblogs.com/guangye/p/7441936.html
3.List
List是一個隊列,有順序的,可以重復。
https://www.cnblogs.com/idiotgroup/p/5575236.html
4.Set
Set是一個集合,它的特點是不可重復,它的無序的。
5.SortedSet
SortedSet是Set的一個變種,在插入元素的時候指定元素的順序,從而實現有順序。所以對比List和Set它的效率是最低的。
所以,使用哪種數據結構可以根據自己的需要。