php redis不用mysql_请问php 在什么场景下 才用redis 而不用mysql ?

Redis 的角色是“缓存”,MySQL 的角色是具备 ACID 特性的“关系型数据库”。

“缓存”存在的意义是提高读写性能(内存操作),但所存储的数据相对不是那么重要,可忍受丢失,而 MySQL 存在的意义是持久化储存数据,所以 Redis 的读写能力要远高于 MySQL,而对持久化的要求并不高。

如果把 MySQL 类比为电脑“硬盘”,那 Redis 就可以类比为电脑“内存”。所以它们的使用场景是不一样的,假如 MySQL 的读写能力能和 Redis 媲美,那确实就不再需要 Redis 了。

Redis 支持对存储的数据设置过期时间,过期后自动删除,所以对于存储临时数据是个很好的选择。

举几个例子:

存储用户授权 token

对持久化要求不高,即使全部丢失,最坏的情况也就是所有用户全部要求重新登录一次,没那么糟。但每个需要登录的页面都要验证用户 token,所以对读取性能要求高,可选择 Redis。并且用户 token 一般要有一个过期时间,Redis 刚好内建支持了。

存储订单数据

对持久化要求高,如果丢失一个订单,客户爸爸一定会把电话打到爆,一般订单的读写也不会那么频繁,也不需要那么极致的读写性能,所以可直接选择 MySQL。

存储产品数据

对持久化要求高,不能忍受丢失,同时也是高频读的数据,所以对读性能要求也高,所以就需要 MySQL 和 Redis 一起用。先把商品数据放 MySQL 存储一份,作为 the source of truth,然后再放 Redis 里“缓存”一份,如果 Redis 数据丢失,可以再通过读取 MySQL 来重建缓存。伪代码如下:

function get_product($id) {

// 先看看 Redis 里有没有缓存的 product (商品) 信息

$product = get_product_from_redis($id);

if (!$product) {

// 如果缓存中没有该商品信息,就从 MySQL 读出来,再缓存到 Redis

$product = get_product_from_mysql($id);

cache_product_to_redis($id, $product);

}

return $product;

}

MySQL 和 Redis 之间并不是二选一,通常是要配合使用的,关键还是要对自己的场景进行分析和权衡,看自己对读写性能以及数据持久化的要求是什么样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值