php变量与缓存的区别

发布于 2022-09-07 04:06:39 字数 527 浏览 29 评论 0

最近看了一些关于缓存方面的教程:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑕疵 2022-09-14 04:06:39

楼主懂得很多,甚至连php底层的东西都知道。
我不知道 php 底层是怎样实现的,但我觉得楼主可以去了解一下“变量的生命周期”。

redis 与 memcache 有不同的应用场景,不能直接比较优劣,网上很容易找到比较它们的文章。

木槿暧夏七纪年 2022-09-14 04:06:39

变量是零时存储到内存中,脚本执行完毕变量就不存在了,缓存是存在文件或者内存中,缓存有效期内是有效的,内存缓存当重启后也就不存在了!

带刺的爱情 2022-09-14 04:06:39

概念性的问题,
全局变量你的跨只是文件
缓存可以跨请求

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文