想灵活使用redis么?看这篇文章就够了!!
起因:某项目要求将mongo缓存全部移至redis,好吧,后来发现,需求理解错了
项目举例
对Equip,point等百万条记录进行增删该查
在redis中建一个类似标准sql的equip表
public class Equip {
String id;
String name;
String value;
boolean isAlarm;
// set get toString 关联关系 略
}
基础薄弱的码友请参考REDIS API,一起观看
redis五大数据结构选择
字符串
id作为key ,equip转json 作为value X
equip 作为key,整个equip表的记录作为json存 X
哈希表
每个对应属性只能有一个值
X
X
equip. + id作为哈希表名 V
优点:更新字段,删除单条,查询方便
缺点:批量添加,批量删除,分页获取,不能排序
id作为field,equip转json作为value X
列表
equip转json作为value V
优点:批量添加 删除整表 分页获取
缺点:更新,删除,查询
集合
与列表list类似,区别集合不重复无序,列表重复有序(插入顺序)
有序集合
时间戳作为score,equip转json作为memberV
优点:批量添加 删除整表 分页获取 根据时间戳排序 时间段获取
缺点:更新 删除 查询 性能
批量操作可以通过redis管道技术进行优化,项目中用哈希表和有序集合
redis与mongo区别
redis
单线程 不能模糊查询 存储数据的格式越简单越好
mongo
多线程 查询丰富
结论:其实还是mongo好用,毕竟实际项目数据格式比较复杂
Redis推荐场景:竞价,排行榜,定位 经纬度等只需要数值的场景