为了账号安全,请及时绑定邮箱和手机立即绑定

频繁操作的数据用redis缓存还是自建缓存比较好?

频繁操作的数据用redis缓存还是自建缓存比较好?

眼眸繁星 2019-03-01 10:37:01
java 项目,要用到两个数据结构1 {province : set<phonenumber>}2 {phonenumber: {"username": username, "status": status }}用的时候大致是时不时插入或者删除电话号码到1的set里(删除要用到定时机制或者超时机制)或者根据省份查1得到集合set,然后在2里遍历这个电话号码的集合 单项目使用,不用和其他服务共享数据自建缓存的话要用到hashset hashmap/concurrenthashmap ,还要定时器redis的话直接用,但是用redis的性能和自建缓存比有明显差别吗?
查看完整描述

10 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

  1. 估算数据量,及数据增长趋势,如果内存能够承受,可以用Map,我试过往Map里放500M的数据,可以承受的
  2. 如果用redis,考虑网络IO的延迟
  3. 不要过早优化,如果目前内存够用,没必要上第三方缓存,开发的时候采用接口编程,如果以后换了再换实现就行了
查看完整回答
反对 回复 2019-03-01
?
GCT1015

TA贡献1827条经验 获得超4个赞

1.Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,redis 的性能当然比自建缓冲的性能好,毕竟 redis 是经过大量实践和改进的,如果项目不上线,另说,你可以尝试下
2.缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)

查看完整回答
反对 回复 2019-03-01
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我们用的是apache ignite网络缓存。这套缓存系统好评

查看完整回答
反对 回复 2019-03-01
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

查看完整回答
反对 回复 2019-03-01
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

Redis 缓存的话需要注意的是网络问题,如果部署在同一台机器就没有这个顾虑了。

查看完整回答
反对 回复 2019-03-01
?
隔江千里

TA贡献1906条经验 获得超10个赞

1.建议使用redis,这样可以降低耦合度,
2.另个redis的缓存处理机制是经过很多成熟产品检验的,其处理的速率及性能都远远超过自建。

查看完整回答
反对 回复 2019-03-01
?
HUX布斯

TA贡献1876条经验 获得超6个赞

redis 否则 没法水平扩容。除非当存缓存用。

查看完整回答
反对 回复 2019-03-01
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

如果只考虑性能,自建缓存必然比redis高效。

因为你是单应用,如果内存足够的话自建的内存缓存(例如concurrenthashmap )完全可以满足需求

也可以使用第三方缓存类,例如Google Guava 缓存类(不用你自己写定时器去清除缓存)。

//Google Guava缓存的例子
        Cache<String, String> cache = CacheBuilder.newBuilder()//
                .expireAfterAccess(1000, TimeUnit.MILLISECONDS)// 
                .build();


        cache.put("key1", "value");

        String value = cache.getIfPresent("key1");
查看完整回答
反对 回复 2019-03-01
?
慕标5832272

TA贡献1966条经验 获得超4个赞

看规模了。小的话肯定自建了。

查看完整回答
反对 回复 2019-03-01
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

要是数据量小的话,可以直接使用同步集合(避免数据不一致),因为程序级的内存使用肯定要比通过网络请求的缓存效率高。但是问题是你的程序重启时,你每次都要重新加载数据到内存中,还要自己写定时任务修改数据,对于自己随便写的程序,可以这样做,如果是商业程序,不建议这么做。
redis在商业程序或者数据量比较大的时候需要用的。

查看完整回答
反对 回复 2019-03-01
  • 10 回答
  • 0 关注
  • 1340 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信