PHP配置redis扩展,遇到的一些坑

    其实吧,这种文章网上都有,但是你们没有发现吗?大多数都是在本地写代码,没有做过服务端配置,客户端进行调用的吧!!!

    所以,为了总结一下,我还是得写一个博客,告诉后来者不要采坑

    我最近在创业,大四狗一枚,浙江有想法创业的程序员也可以和我搭伙,哈哈哈

    OK,现在开始

     我的项目是用laravel做的,刚开始我一直在配置Predis,但是一直配置失败,一直在一个问题上面徘徊  就是提示我缺少扩展,一个扩展是imagick,还有一个是com_dotnet,这两个库我几乎下载遍了网上的dll扩展文件,但是他一直提示我是无效win32程序,我几乎熬夜两天,48小时不间断的百度,问人,但是会的人都是说他们没有问题,很简单啊!先说啊!这两个扩展库原生的php目录里面是没有的,要自己去下,即便你在ini文件里面开了,还是没有用的!predis这个第三方的依赖要的,我也不知道搞什么鬼,你一个redis你能用就行了,其实吧,predis做了一个持久化的动作,这个对于高并发的情况下,还是挺不错的,但是,毕竟是框架,虽然是原生的php脚本写的,没有加入什么so文件扩展文件的,但是,响应速度还是没有原生的Redis操作的快,我百度看了很多,慢了是大概0.0040秒,你们别看这么小的秒数,这个可是决定在高并发的情况下,线程安全,数据是否污染的一个重要条件,redis的可以支持高并发的一个工具数据库,但是作为一个缓存的数据库,数据是不可以污染的。我选择redis,没有选择MongoDB,其实MongoDB也支持高并发,但是我不需要直接持久化,而且redis配置简单,读写速度很快,相比来说,redis毕竟是底层是C,而且体积小,很多优点。

    Redis一般我是作为跳板,一般请求之后,固化到mysql做持久化处理,redis还有一个好处就是不会重复。这个和他的数据结构也有关系,这个我可是百度了两天两夜得到的知识,现在和你们一起分享一下

    Redis体积小,只是一个缓存的工具,他重启数据就没有了,这个和你们浏览器的session一样,关闭窗口就销毁了,session是一个会话窗口,有时效性,redis也有,当然要自己设置,redis本来是有15个库,默认选择是第一个,你可以在插入数据的时候自己选择一个。我也是第一次使用redis,所以坑很多,我爬了很久,虽然踩了,但是有收获,很值!!!

    Redis他的高并发,源于数据结构和算法很牛逼,总而言之就是很牛逼,底层是C,没有任何胶水语言,这个倒是和苹果差不多,iOS可以用OC,为什么快,除了处理器,ios系统也快,因为他的语言,最接近底层系统,因为和系统交互的语言,都是和C打交道的。就如Java,php,底层语言也是C,C可以说是一个老古董,但是也是老当益壮

    现在我们来谈技术

    首先,我不要predis了,因为我配置不了,太烦人了,我直接用原生的

    开启php的redis扩展

 首先,你要看你的php版本,我的是php 7.3.5 nts

ok,现在来说一下这个nts和ts的区别

这个也是我采坑的时候发现的,nts  not thread safe   ; ts threa safe

看出来了吧,线程安全和线程不安全,什么叫线程安全和线程不安全呢?

这个我可以稍微解释一下,因为这个也算技术知识的一点,很重要

比如,同时一千人访问你的项目接口,你返回的数据和本来应该返回的数据有偏差,这个就是线程不安全的,属于脏数据,反之,线程安全就是返回的数据和原来应该返回的数据是一致的,就是线程安全的

我之前是做java的,打个比方HashMap和HashTable这两个数据结构,虽然名字差不多,都是靠哈希值进行查询和存储数据的,但是你要看源码,你就知道了区别,这里就不细说了,因为我要说我肯定要说很多,因为涉及的知识太多了,hash值和一些复杂的算法和算法逻辑的实现,和一些举例等等。。。

然后我们去php的扩展包的官网去下载

我给出链接https://pecl.php.net/package/redis/5.0.2/windows

我的服务器是windows的,64位,我就下载64位

这里提醒一下,32位的你就不要下64的,不然会提示非有效win32程序

64也是一样,不要下载32的,手不要贱

下载以后,你把里面的扩展文件解压到php的ext里面,注意

下载的压缩文件里面有两个文件,不能漏

你不要看pdb不是dll扩展名,不去复制,其实这个也有用的,属于依赖性文件

解压到ext文件夹里面后,打开php.ini文件,添加扩展配置

这两个,curl这个扩展也要打开

不要问我为什么要打开,因为这个是建立服务器和客户端安全链接的一个重要的扩展

打开以后,OK,你以为这样子就好了?

你Nginx服务也要重启,Redis服务也要重启

然后你就用下面代码连接服务器Redis数据库


然后, 你请求的时候,你会发现,你是可以连接成功redis数据库,但是你无法插入数据,总是显示为false,为毛?哈哈哈  

首先,你想远程访问redis数据库,你得通过校验,怎么设置校验呢?

在服务端的redis-cli客户端里面输入以下代码 config set requirepass xuyijie1997(这个是我的名字  这个填你自己的密码)

config是redis的配置  也属于数据库里面的数据  set是设置数据

逻辑清晰了

现在我们重新来


是不是很得劲,然后你放到laravel框架里面,

那个predis是不是也不需要了,更加简单了,写代码嘛,就是让负责的事情简单化,没必要搞的太复杂,两天的时间虽然没有搞出来predis,但是我一样可以操作Redis

还有就是,如果你是阿里云的服务器,记得打开Redis的端口

如果你还不懂,加我微信  X1789780841,我手把手教你咋搞

你可能感兴趣的:(PHP配置redis扩展,遇到的一些坑)