为什么我不用redis

伪应用场景

redis 5种数据结构 及使用场景分析
中我看到一些redis的应用场景,在其他储存例如mysql中也能轻易做到
在这竟然可以拿出来当成最佳实践,这已经是redis滥用者能举出来的稍微体面一点的例子了

  1. 字符串

    1. 缓存:有过期时间
  2. list

    1. 消息队列
    2. 朋友圈的点赞列表、评论列表、排行榜:lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表。
  1. hash

    1. 对象:例如用户信息、购物车
  2. set

    1. 好友、关注、粉丝、感兴趣的人集合:
      1. sinter命令可以获得a和b两个用户的共同好友;
      2. sismember命令可以判断a是否是b的好友;
      3. scard命令可以获取好友数量;
      4. 关注时,smove命令可以将b从a的粉丝集合转移到a的好友集合
        首页展示随机:美团首页有很多推荐商家,但是并不能全部展示,set类型适合存放所有需要展示的内容,而srandmember命令则可以从中随机获取几个。
        存储某活动中中奖的用户id ,因为有去重功能,可以保证同一个用户不会中奖两次。
  3. zset

    1. zset 可以用做排行榜,但是和list不同的是zset它能够实现动态的排序,例如: 可以用来存储粉丝列表,value 值是粉丝的用户 id,score 是关注时间,我们可以对粉丝列表按关注时间进行排序。
    2. zset 还可以用来存储学生的成绩, value 值是学生的 id, score 是他的考试成绩。 我们对成绩按分数进行排序就可以得到他的名次。

以上这些,一定不足以为系统引入一个额外的依赖,因为这些例子,要么mysql也可以实现,要么redis无法单独实现(无法可靠持久化)

在我看来,redis在php-fpm应用中,是不可或缺的一种在不同请求间共享变量的利器,其价值不可否认。

但是在没有这种需求的时候,为系统引入一个非必要的依赖,实在不是明智之举。

鄂ICP备14007840号-1