memcache的问题

2025-05-04 19:54:41
推荐回答(2个)
回答1:

memcache不是就是内存数据库么 = =
memcache内容很简单的,直接网络发包set进去就行了,memcache本身是个hash结构,这货是开源的,有兴趣直接看看源码就知道了,代码量很小就是了。
至于与神马连接,其实都是外部做的,没记错的话memcache只提供最简单set和get功能,你可以自己写代码把他set到memcache里然后自己写代码取回来放mysql,这些完全由你自己控制
理论上如果不能有任何数据丢失,应该是在任何写操作的时候,同时写memcache和mysql的数据(先mysql),然后读的时候只从memcache里读(这是最简单的模式,至于要适应你们的模式还要其他方式)。其他内存数据库应该也是一样的做法,反正最终数据不该存这里,memcache只是做缓存

回答2:

memcache如果服务器出现故障,还是会有数据丢失的。我现在用的是redis。

memcache没有啥配置,本身就是一种key-value形式的,都是java代码里面直接set进去,(很多web项目都是启动的时候,初始化一部分数据岛memcache,或者通过定时job更新或set数据),

当查询时,也是通过java代码控制,首先查询memcache里面是否有数据,有就返回,没有则还是要查询数据库。

有一个问题你没有明确:你现在用的内存数据,是会存在读写和持久化的么?

如果只是我上面说的那种模式,那服务器出现故障也没事了,因为所有数据都是持久化到了mysql数据库的。

但如果是有数据的读写(只操作内存的),那推荐你用redis,这个能支持持久化,即使服务器出现故障,也能恢复到内存中来。