php变量与缓存的区别
最近看了一些关于缓存方面的教程:
Memcache将数据存储为key->value结构的hash表;
redis可以支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
明显redis比Memcache功能强大,那么Memcache还有使用的必要?它实现简单缓存相比轻量化点?
还有根据以前看的PHP的底层实现的讲解:
php变量是zval结构体实现的,并在符号(hash)表内存储了该zval结构体地址,
全局变量就是存储在symbol_table全局符号表里, 那么疑问:
1.php变量和Memcache缓存都是在内存存储,变量存取速度应该比缓存还要快,想跨页面调用可以定义全局变量,PHP7的字符串变量也没有限制大小,那还用缓存干什么?
2.php变量zval结构体使用5种数据类型实现存储8种PHP数据类型,这和redis实现的5种数据类型也差不多?
php数组也是类hash结构,配合数组函数也可以实现redis集合,列表的功能,也可以排序,选择存取,那么存储数据有什么本质的差别吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
楼主懂得很多,甚至连php底层的东西都知道。
我不知道 php 底层是怎样实现的,但我觉得楼主可以去了解一下“变量的生命周期”。
redis 与 memcache 有不同的应用场景,不能直接比较优劣,网上很容易找到比较它们的文章。
变量是零时存储到内存中,脚本执行完毕变量就不存在了,缓存是存在文件或者内存中,缓存有效期内是有效的,内存缓存当重启后也就不存在了!
概念性的问题,
全局变量你的跨只是文件
缓存可以跨请求