1,redis使用要点
例子1 用户发起一次请求,如果发现redis中没有的话,就从数据库里查询,并把查询结果放入缓存中,这样用户下次请求的时候就可以直接从redis中获取了。
这个思路在用户并发访问少的时候是成立的,但是在高并发的情况下就会出现问题。
原因:多个用户访问的时候同时请求进入redis,同时返回空结果,同时查询数据库,同时插入数据库。就会造成重复插入的问题。
例子2 以hash为例 ,假设“user”有两个属性,id,name这时候把对象序列化放入redis中,以userId为key,以name为field.然后增加用户属性age;
以userId为key name为value 去redis查询 把查询的结果反序列化封装成新的对象,在封装过程中,由于age对象不存在,就导致了id,和name也无法映射,从而返回的对象为null,
结果就是查询结果为null 再次查询数据库 把结果放入redis中,从而redis中有了两个user 他们们的区别仅仅是一个有age一个没有
接下来就引出了两个问题
1,如何批量获取list长度,例如key为 class_1,class_2,class_3 其中class_1中有4个学生,class_2中有3个学生,class_3中有三个学生,怎样才能找出人数大于3的班级呢?
2,如何把class_1,class_2,class_3一起清除?
网友评论