浅谈Redis五种数据结构

       我们的项目牵涉到跨库跨表,使用ElasticSearch来解决。比较麻烦的是,ElasticSearch设置的in数量不可以超过500。在部门和人员数量少的时候这些并不是问题,然而对于某些大客户,他们的部门和人员的数量查出来之后仍然非常巨大,所以就采用了,分割开再合并的做法。这样的做法带来一个问题就是查询非常耗时,给客户带的体验不好。为了解决这个慢问题,使用redis做缓存,把要做的查询,放在凌晨查询,一天查一次。虽然可能出现误差,不过影响是可控的。

      redis有五种数据结构。String,Hash,Set,SortedSet,List。

1.String

String类似于Java的Hashmap,需要指定key和value,都是String类型。使用的时候get("")就可以。我们还可以设置一下它的过期时间。

举个栗子,你想存一个List,有效期时间是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它的效率是最低的。

所以,使用哪种数据结构可以根据自己的需要。

你可能感兴趣的:(浅谈Redis五种数据结构)