【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?

问题描述

使用6379端口连接Azure Redis服务,连接失败。因为默认情况下Azure Redis的设置没有打开6379的端口。需要使用SSL(6380端口)进行连接,但是遇见了无法连接的问题。

使用非SSL(6379端口)的连接代码

<?php
echo "Azure Redis Connect Test";
echo  "<br/>";

//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('xxxxxxxx.redis.cache.chinacloudapi.cn', 6379);
$redis->auth("秘钥");

echo "Connection to server sucessfully";
echo "<br/>";

//设置 redis 字符串数据
$redis->set("test-name", "Redis test value");
// 获取存储的数据并输出
echo "Stored string in redis:: " . $redis->get("test-name");
?>

如果直接修改端口号 6379 为 6380, 报错无法访问。那么使用6380的正确方式为?

 

问题解答

其实,代码的改动方式非常小。在 connection 方法中添加 TLS及6380端口。

改动前:$redis->connect('xxxxxxxx.redis.cache.chinacloudapi.cn', 6379);

改动后:$redis->connect('tls://xxxxxxxx.redis.cache.chinacloudapi.cn', 6380);

但是一定要注意php redis 扩展,因为扩展版本过低,有可能会引发解析问题。如类似如下的错误消息:

Azure Redis Connect Test<br/>PHP Warning:  
Redis::connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /data/myweb/redis_tes t2.php on line 6 PHP Fatal error: Uncaught RedisException: php_network_getaddresses: getaddrinfo failed: Name or service not known in /data/myweb/redis_test2.php:6 Stack trace: #0 /data/myweb/redis_test2.php(6): Redis->connect('tls://xxxx-xxxx...', 6380) #1 {main} thrown in /data/myweb/redis_test2.php on line 6

php redis 扩展的版本:

 

 

使用TLS 6380 端口连接Redis的示例代码为:

<?php
echo "Azure Redis Connect Test";
echo  "<br/>";

//连接本地的 Redis 服务
$redis = new Redis();
//$redis->connect('xxxxxxxx.redis.cache.chinacloudapi.cn', 6379);
$redis->connect('tls://xxxxxxxx.redis.cache.chinacloudapi.cn', 6380);
$redis->auth("秘钥");

echo "Connection to server sucessfully";
echo "<br/>";

//设置 redis 字符串数据
$redis->set("test-name", "Redis test value");
// 获取存储的数据并输出
echo "Stored string in redis:: " . $redis->get("test-name");
?>

 

 

参考资料

php redis example : http://github.com/phpredis/phpredis#example-2

php redis extension : http://pecl.php.net/package/redis

 

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

本文转载于网络 如有侵权请联系删除

相关文章

  • 即插即用、无需训练:剑桥大学、腾讯AI Lab等提出免训练跨模态文本生成框架

    关注并星标从此不迷路计算机视觉研究院公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式计算机视觉研究院专栏 作者:Edison_G来自剑桥大学、腾讯 AILab等机构的研究者提出了一个全新的框架MAGIC(iMAge-guidedtextGeneratIonwithCLIP),MAGIC通过直接插入可控图文匹配模型分数的方式,使得语言模型在解码过程中选择更接近图片信息的生成结果。机器之心发布1导读本文提出了一个全新的MAGIC(iMAge-guidedtextGeneratIonwithCLIP)框架。该框架可以使用图片模态的信息指导预训练语言模型完成一系列跨模态生成任务,例如imagecaptioning和visuallygroundedstorygeneration。与其他方法不同的是,MAGIC框架无需多模态训练数据,只需利用现成的语言模型(例如 GPT-2)和图文匹配模型(例如CLIP)就能够以zero-shot的方式高质量地完成多模态生成任务。此外,不同于使用梯度更新生成模型 cache的传统方法,MAGIC框架无需梯度更新,因而具备更高效的推理效

  • 自制随机图片API

    随机girlapi:https://yanghanwen.xyz/tu/random.php复制随机cosapi:https://yanghanwen.xyz/tu/cos.php复制随机摄影api:https://yanghanwen.xyz/tu/ren.php复制随机setuapi:https://yanghanwen.xyz/tu/se.php复制动漫api:https://yanghanwen.xyz/tu/dong.php复制p站apihttps://yanghanwen.xyz/tu/setu.php复制大概十秒才能刷新一次,请勿而已请求。图片数量大概两千张。 如果你想学如何制作,那可太棒了,欢迎加入万能编程交流群:970353786复制

  • Android Studio 下载视频到本地

    最近在研究视频下载到本地的问题,像爱奇艺,腾讯视频,迅雷看看等等一些视频播放器,如果在一个播放器里面视频下载到一半用户退出App之后,再次登录从头开始,那么就太可悲了,所以在做视频音频类的项目时,要实现的一个功能就是断点续传,就是将用户下载的视频或者音频等以字节流的形式存入数据库,下次用户再次下载时,将继续上次数据库的接着下载,这样用户体验就会很好,也大大节省了成本.好了废话不多说,开始今天的正题.一、先上效果图二、使用GreenDao我们需要导入依赖1.以下在项目gradle依赖中添加compile'org.greenrobot:greendao:3.2.2'//依赖在最后一行插入 applyplugin:'org.greenrobot.greendao'//greenDao在第二行插入 greendao{//在依赖导入汇总添加一个自动添加数据库表名的配置依赖 schemaVersion1//数据库版本号 daoPackage'com.example.greendaodemo.database'//设置时生成代码的目录 ta

  • LeetCode81|移动零

    1,问题简述 给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。2,示例示例: 输入:[0,1,0,3,12] 输出:[1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。复制3,题解思路双指针的使用4,题解程序 publicclassMoveZeroesTest{ publicstaticvoidmain(String[]args){ int[]nums={0,1,0,3,12}; moveZeroes(nums); for(intnum:nums ){ System.out.print(num+"\t"); } } publicstaticvoidmoveZeroes(int[]nums){ if(nums==null||nums.length==0){ return; } intlength=nums.length; intindex=0; for(inti=0;i<length;i++){ if(nums[i]!=0){ nums[index++]=nums[i]; }

  • 一分钟了解-Nosql

    NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。基本含义NoSQL最常见的解释是“non-relational”,“NotOnlySQL”也被很多人接受。NoSQL仅仅是一个[概念],泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NoSQL有如下优点:易扩展,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间也在架构的层面上带来了可扩展的能力。大数据量,高性能,NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得

  • sap-ui-core.js reference in Webclient ui

    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://jerry.blog.csdn.net/article/details/100824054CreatedbyJerryWang,lastmodifiedonJan20,2015在Webclientui的使用过程中也能在ChromeNetworktab里发现ui5的libraryjs文件sap-ui-core.js的引用: 通过debug发现在UIframeworkrenderuielement时,如果发现当前系统的ui5处于active状态,会动态创建scripttag加载ui5的libraryjsfile:[外链图片转存失败(img-04Wo9wOe-1568430035809)(https://cloud.githubusercontent.com/assets/5669954/26559730/b65192ae-44b1-11e7-92f5-f12b4c2eb3fd.png)] 判断ui5功能是否enable取决于以下条件:下列icfservice是否acti

  • 知乎客户端跨平台 Hybrid 调试实战

    背景知乎客户端中有一个自己维护的Hybrid框架,在此基础上开发了一些Hybrid页面,当需要前端或者客户端开发接口的时候,就涉及到联调的问题。和一般的前端<=>服务端,或者客户端<=>服务端类似,前端<=>客户端也会出现联调的各种问题,但是往往Hybrid开发相关的调试工具并不是那么完备。由于在Hybrid里面,前端和客户端联系是很紧密的,假如一个人既熟悉前端开发又熟悉客户端开发,调试是很容易的,但是现实一般是可能客户端开发并不是那么熟悉前端开发,前端开发也不熟悉客户端开发,出现问题的时候需要两个人一起排查。对于大多数公司来说,开发一整套的调试工具是不现实的,因为没有这么多的资源去做,短时间内,我们如何提供出可靠便利的调试工具呢?通信日志对于前端来说,客户端开发是一个黑盒,当遇到调试问题的时候,前端会比较迷茫,无法确定是自己调用的有问题,还是客户端的代码写的有问题。最简单的方式我们在通信发生的时候,使用约定的格式,在两端都打出日志客户端通过执行一段jswebview.evaluateJavascript("console.log(

  • 也来说说webpack

    入门webpack,官方定位是一个模块打包工具,基础命令极其简单 JavaScriptwebpack./entry.jsbundle.js1webpack./entry.jsbundle.js在CLI模式中,第一个参数是入口文件,第二个参数是输出文件,并读取当前cwd目录下面的webpack.config.js配置,根据配置生成对应的bundle.js文件。其用法与RequireJS里面的r.js命令极其相似。快速上手如果一个新业务,想做一下JS的模块化管理,那么可以立即选择webpack了。如果一个老业务,曾经用了RequireJS或者SeaJS,那么也可以选择切换webpack了。如果想做一个库\框架去为生态提供服务,也可以立即选择webpack,他能自动配置最终生成的library.js文件支持AMD\CommonJS等模块化方案。用好配置里面的resolve,改造一下原有的Grunt\Gulp流程,即可使用webpack,业务代码基本无需改造。多种模块化打包加载方案对比:http://webpack.github.io/docs/comparison.html。其实对于老业务而

  • 张溪梦:如何打造高速增长团队,实现快速增长

    大数据文摘作品,转载要求见文末作者|刘文清本文整理自2017年7月11日由清华-青岛数据科学研究院联合大数据文摘举办的《顶级数据团队建设全景报告》发布会上,GrowingIO创始人&CEO张溪梦所做的以“数据团队的建设现状与建议”为主题的发言。张溪梦表示,数据受到了很多行业和公司的热捧,但能够真正利用数据产生可衡量的价值的公司凤毛麟角。并为大家分享了数据团队的建设现状,针对如何打造高速增长团队给出了他的建议。后台回复关键词“清华大数据”,下载完整版PPT。以下为张溪梦演讲实录: 张溪梦:《顶级数据团队建设全景报告》定稿后我就看过了,写得非常好。我在上周参加一个CTO峰会时就引用了报告中的内容,例如人们对数据价值的认知度普遍较低、数据价值落地艰难等,分析结果受到很多CTO的高度认可。因为大数据概念在中国过去几年里风起云涌,数据受到了很多行业和公司的热捧,大部分企业为此投入了大量资源、时间、人力,但能够真正利用数据产生可衡量的价值的公司凤毛麟角。我认为首先数据是有巨大的价值的,其次,结合咱们中国整个产业的发展趋势来看,数据也必然会产生爆发式的价值输出。但是,想要实现数据变现,需要公

  • 了解这些内容,就能完成程序员到架构师的转变题文章源码分析专题:45天高性能、高并发:60天高可用性、可扩展:45天性能优化:30天团队协作效率专题:30天双十一电商项目实战:30天

    当你点开这篇文章,也许正是你踌躇不前的时期,职场生涯正处于迷惘阶段,不上不下。你可以选择点击右上角,关上一扇窗,但上帝不会为你打开另一扇门,因为钥匙在自己手上。很多程序员,到了25--30岁的时候依然迷茫,在代码中忙忙碌碌,整日加班,认为很努力。是这样吗?并不是。这并不是努力,虽然在进步,却相对静止。我认识很多程序员,他们每晚都在加班,在同样的大环境,背景下,当所有人都在加班的时候,你自认为付出的努力会比别人多吗?请别曲解了努力的概念,同时也不要与其他行业来做对比。当你在选择了程序员这条路之后,你的收获会与真正的努力成正比。那么,对于程序员如何成为架构师呢?现在是一个知识爆炸的时代,知识更新非常快。据测算,一个大学毕业生所学到的知识,在毕业之后2年内,有效的不过剩下5%。对于IT行业而言,这种形势更为明显,我们赖以立足的,不在于我们现在掌握了多少知识,而是我们有多强的学习能力。 一、广度架构师应该对所在领域的主流技术体系有一个全面的认识知道每种技术的每种技术的由来为什么会出现这种技术这个技术是用来解决什么问题的每种技术是什么技术的基本组成部分是什么解决同一问题的相同技术各自的优缺点是什

  • Hyperledger Fabric Chaincode 开发

    本文节选自《NetkillerBlockchain手札》NetkillerBlockchain手札本文作者最近在找工作,有意向致电13113668890Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>文档始创于2014-06-23版权©2018Netkiller(NeoChan).Allrightsreserved.版权声明转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。http://www.netkiller.cnhttp://netkiller.github.iohttp://netkiller.sourceforge.nethttp://www.netkiller.cnhttp://netkiller.github.iohttp://netkiller.sourceforge.net微信订阅号netkiller-ebook(微信扫描二维码)QQ:13721218请注明“读者”QQ群:128659835请注明“读者”微信订

  • 【UOJ#386】【UNR#3】鸽子固定器(贪心)

    【UOJ#386】【UNR#3】鸽子固定器(贪心) 题面 UOJ 题解 一个不难想到的暴力做法是把东西按照\(s\)排序,这样子我们枚举极大值和极小值,那么我们选择的一定是这一段之间\(v\)最大的那\(m\)个东西。 考虑优化这个过程,我们枚举右端点,左端点向左移动,每次插入一个元素,用堆来维护选择的过程。这样子复杂度可以做到\(O(n^2logn)\)。 考虑继续优化这个过程,首先如果右端点一旦被弹出堆这个过程就可以终止了,这个很显然。 通过这个过程,我们也可以明白如果选择的个数不超过\(m\)个则必定是一段连续的区间。 接下来一定要选择恰好\(m\)个,如果区间内没有被选满,不难知道没有被选的一定是较小的值。 那么拿一个链表来维护剩下的元素,每次把最小值删掉,这样子每次选择的区间就是连续的了。然后我们在删的时候统计强制包含最小值的最大区间。 于是综上复杂度是\(O(nm)\)。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu

  • Autofac三种生命周期

    InstancePerLifetimeScope:同一个Lifetime生成的对象是同一个实例 SingleInstance:单例模式,每次调用,都会使用同一个实例化的对象;每次都用同一个对象; InstancePerDependency:默认模式,每次调用,都会重新实例化对象;每次请求都创建一个新的对象;     builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetExecutingAssembly()).Where(t=>t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerDependency().PropertiesAutowired();//属性注入,默认构造函数注入

  • setInterval&amp;setTimeout的暂停和继续

    /* author:leeenx @timer对象 @提供7个API如下: @timer.setTimeout(fun,delay[,id]) @timer.clearTimeout(id) @timer.setInterval(fun,delay[,id]) @timer.clearInterval(id) @timer.delete(id)删除对应id的timeout/interval @timer.pause(id)暂停对应id的timeout/interval @timer.resume(id)恢复对应id的timeout/interval @timer.clean()清空所有timeout&interval */ classTimer{ //构造函数 constructor(){ //暂停状态-这是个公共状态,由外部Ticker决定。 this.paused=true; //队列 this.queue=newMap(); //正在使用timer的RAF this.usingRAF=false; //useRAF触发器 Reflect.definePropert

  • 1 第一章 kubernetes介绍

    1.1应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响 虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境 优点:程序环境不会相互产生影响,提供了一定程度的安全性 缺点:增加了操作系统,浪费了部分资源 容器化部署:与虚拟化类似,但是共享了操作系统 优点: 可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等 运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦 容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署 容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说: 一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器 当并发访问量变大的时候,怎么样做到横向扩展容器数量 这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件: Swarm:Doc

  • glibc相关

    gcc和glibc的关系:https://www.cnblogs.com/jiqiubo/archive/2011/08/03/2126117.html 总的来说glibc就是一个最基础的库,但是它比较特别和核心,有些情况不能用库的方式来处理。 centos更新glibc有可能会有问题。 因此,如果你想要把新glibc参与编译的程序,放到老glibc的系统中跑,一般的解决方式是: 1.用docker,docker中的系统和glibc是新的 2.原理同上,把机器的系统升级,glibc也是新的 3.把源代码,放到老的glibc环境中编译。一般这种情况,机器和系统也是对应老的,没有办法说gcc是新的,glibc是老的。   有问题的操作: 1.静态链接,glibc在有些使用情况下不能静态链接 2.单独升级glibc。有可能broken系统。glibc需要和整个系统一起升级   其他参考: https://stackoverflow.com/questions/4032373/linking-against-an-old-version-of-libc-to-provide

  • 从零开始完整Electron桌面开发(1)搭建开发环境

    [OTC] #需要知识 1.简单的html、javascript、css知识,就是web前端入门知识。 2.简单命令行的应用,不会也没关系,照着代码敲就行。 3.下载安装就不说了吧。 4.本教程基于win7下完成。基于干净的win764位系统。 #安装node.js 从![http://nodejs.cn](node.js中国站)下载最新版node.js,并安装。 ![https://nodejs.org/dist/v6.2.0/]() 我下载的是`node-v6.2.0-x64.msi`。 初学者建议用安装包安装nodejs。 下载对应系统的安装包,进行安装,安装完成后打开命令行, 可以根据自己的需要更改安装路径 安装完成。 Windows打开Powershell,Mac/Linux打开终端 ```js node-v ``` `windows-PowerShell` `mac` 输出nodejs的版本号表示安装成功。 #最小化Electron程序 ##建立一个开发用的空文件夹,我建立在D盘, ``` d: mkdirelectron_hello cdele

  • 2020年度总结(公司版)

          作者:无脑仔的小明 出处:http://www.cnblogs.com/wunaozai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。有需要沟通的,可以站内私信,文章留言,或者关注“无脑仔的小明”公众号私信我。一定尽力回答。

  • lvs-keepalived故障记录

    上图中1与2、3不同,可能会导致端口不同,尽量配置1、2、3相同

  • leetcode 34 排序数组中查找元素第一个和最后一个位置

         这题恶心人在你需要设计一个时间复杂度在O(logn)的算法,看到logn基本就能想到是二分法了,但是怎么二分呢。因为整个nums是按照升序已经排列好的,所以我们可以通过mid=(left+right)/2的方式得到。其中,在第一轮的时候left=0而right=len(nums)。这里len的时间复杂度是O(1)。   那么所谓的二分法可以通过递归实现,每次通过比较目标值和左右边界值的大小,在左右区间进行搜索。    classSolution: defsearchRange(self,nums:List[int],target:int)->List[int]: defBinarySearch(l,r,ans): ifl<=r: mid=(l+r)//2 ifnums[mid]==target: ans.append(mid) ifnums[l]<=target<=nums[mid]: BinarySearch(l,mid-1,ans) ifnums[mid]<=target<=nums[r]: BinarySear

  • 蓝桥杯省赛模拟赛

    第一题  问题描述 在计算机存储中,12.5MB是多少字节?  答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。  答案:13107200   1MB=1024KB,1KB=1024B,12.5MB=12.5*1024*1024=12800KB*1024=13107200B   第二题  问题描述 由1对括号,可以组成一种合法括号序列:()。 由2对括号,可以组成两种合法括号序列:()()、(())。 由4对括号组成的合法括号序列一共有多少种?  答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。  答案:14   深度为1的有1种:()()()(),   深度为2的有7种:  (())()()、()(())()、()()(())、(()()())、(()())()、()(()())、(())(()),   深度为3的有5种:

相关推荐

推荐阅读