这是一道非常常见的面试题,也是大家在工作中很容易忽略掉的点,大部分场景下redis确实更适合用于我们项目,但是我们可能答不上来它们都作为键值对数据库其中的区别是什么。
从数据结构侧来说,memcached仅支持value为string类型,而我们redis支持的类型是相当丰富的,有string、hash、list、set、sort set等等,所以在功能上redis是比我们memcached支持的更好的。还有就是memcached的单value值容量只有1M,而我们的redis则最大支持至512M。
从数据持久化来说,memcached只做缓存,没有可靠性的需求,所以是不支持的,只要断电或者服务关闭之后那么就会丢失内存中的数据,而redis更倾向于内存数据库,如果我们有持久化需求的话可以优先考虑redis。
同时我们的redis还支持lua脚本,脚本提交是原子执行的,我们在面对复杂业务场景中,需要保证按照我们所需的顺序一步步执行就可以通过我们的lua脚本来解决。
![](/images/780-200-2.jpg)