PHP使用redis需要封装一个类吗?

iamhungry2
  • 350

1.首先想问一下一台redis服务器上有不同的项目,需要给redis的key加项目的前缀吗?还是用select不同数据库就好了?有12个可选

2.之前使用redis也只是简单封装了一下而已,就直接调用原生的redis接口,这样足够了吗?

    $func = $options['persistent'] ? 'pconnect' : 'connect';
    $this->handler  = new \Redis; 
    $options['timeout'] === false ?
        $this->handler->$func($options['host'], $options['port']) :
        $this->handler->$func($options['host'], $options['port'],             $options['timeout']);
    $options['auth'] === false ? 
        '':
        $this->handler->auth($options['auth']);
    $this->handler->select($options['select']);
    return $this->handler;
回复
阅读 4.3k
5 个回答

你要考虑到redis连接断了重连,要考虑到是否需要长连接,要考虑到对每个方法异常捕获,对异常做日志记录,要考虑到自己项目中多个redis配置,集群的单点的 根据不同的业务要配置多个redis胚子, 难道要每个都去写new Redis();connect();auth(); 一大堆?抽象成gateway封装缓存单例,封装底层驱动,所以你觉得有没有必要?当然如果你的项目真的很小或者。。。。那自然就没要了,随便调调redis好了啦

0.现在都是Mordern PHP 你还要自己造轮子吗? 去packagist.org,下载predis,就可以了

composer require predis/predis

1.加前缀,你需要衡量一个性能的问题,如果redis数据量不是很多的话,无所谓加前缀,看你自己,如果存的keys和数据量多的话,我建议前缀能省就省,keys尽量简化,不要过长占用不必要的空间,但是不要过于简化,例如:keys:veryimportantpeople ,你完全可以简化为VIP. get it?

2.select 数据库,个人比较用的少,就不多说了。(但是有一个问题,因为,redis的数据库跟mysql是不太一样的,flushdb一下,你所有库的数据都会被清掉,注意下吧)。

3.你要往redis存数据,还要保障稳定性的话,我个人还建议使用redis集群,
redis集群搭建你可以参考:redis集群搭建,(如果你还担心节点挂了,影响集群的使用怎么办?你可以使用redis哨兵模式,去监控你的redis节点,并且哨兵模式能帮你恢复你故障的redis节点).

以上是个人一点愚见,望采纳.

  1. 使用前缀

  2. 项目不大没必要封装, 如果以后用的很多就封装一下。

看需求吧,考虑到以后的扩展建议还是封装的好。

1.加前缀,为了以后的扩展,Redis集群不像单机Redis那样支持多数据库功能,集群只使用默认的 0 号数据库,并且不能使用SELECT命令

2.觉得没有封装的必要

你知道吗?

宣传栏