四时宝库

程序员的知识宝库

redis中lua脚本的简单使用(redis lua脚本怎么用)

一、背景

在使用redis的过程中,发现有些时候需要原子性去操作redis命令,而redis的lua脚本正好可以实现这一功能。

面试不用怕,用最通俗易懂的语言,3分钟记分布式锁Redisson原理

溪云阁:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习。

前言

一直很想做一篇Redission的文章来,

Python教程——24.Redis 数据库(python连接redis数据库)

客户端和服务端命令

服务器端

熟练使用 Redis 的 5 大数据结构:Java 实战教程

欢迎来到本教程,我们将探索Redis的核心数据结构,带您从零基础到熟练掌握五大数据结构的用法。无论您是新手还是有经验的开发者,本教程都将以简洁明了的语言,为您展示如何在Java中熟练使用Redis,让您能够在实际项目中充分发挥Redis的威力。

入门

Redis Cluster集群搭建教程(redis cluster集群部署)

以下是在 Linux 系统下搭建 Redis Cluster 集群的详细教程,这里以搭建一个包含 3 各主节点和 3 各从节点的集群为例。

1. 环境准备

Redis入门教程(redis使用教程)

阿铭linux

php从远程URL获取(mp4 mp3)音视频的流媒体数据

 /**
     * 从远程URL中获取媒体(如 mp4 mp3)的内容
     * @param mixed $file_url
     * @param mixed $media_type
     * @param mixed $curl_time_out
     * @throws Exception
     * @return mixed
     */
    public static function getRemoteMediaContent($file_url = '', $media_type = "Content-Type: video/mp4", $curl_time_out = 600000)
    {

        if (empty($file_url)) {
            throw new Exception('请传入远程url地址', Response::PARAM_ERROR);
        }

        $parse_bool = parse_url($file_url);
        if ($parse_bool === false) {
            throw new Exception('请传入有效的远程url地址', Response::PARAM_ERROR);
        }

        ini_set('max_execution_time', 0);

        $useragent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36";

        //开一个ch  用来获取资源HTTP头信息(主要获取视频长度)
        $ch = curl_init();

        // TRUE 会输出所有的信息,写入到STDERR,或在CURLOPT_STDERR中指定的文件。
        curl_setopt($ch, CURLOPT_VERBOSE, 1);

        //允许 cURL 函数执行的最长秒数
        curl_setopt($ch, CURLOPT_TIMEOUT, $curl_time_out);

        //需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候
        curl_setopt($ch, CURLOPT_URL, $file_url);

        //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。
        //(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        // 启用时会将头文件的信息作为数据流输出(注意这里第一步只需要获取资源HTTP头信息 主要是为了得到内容的长度)
        curl_setopt($ch, CURLOPT_HEADER, true);

        // TRUE 强制获取一个新的连接,而不是缓存中的连接
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);

        // FALSE 禁止 cURL 验证对等证书(peer'scertificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

        //向服务器发送,包含了访问者系统引擎版本、浏览器信息的字段信息。
        //一般服务器识别出是爬虫请求,会拒绝访问。所以此时设置User-Agent,可以将爬虫伪装成用户通过浏览器访问。
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

        // TRUE 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 FALSE 时不会变成 GET
        curl_setopt($ch, CURLOPT_NOBODY, true);

        //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
        //这里我们不需要关心
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        //执行 cURL 会话  这里我们只关心头信息  所以不需要获取返回的内容
        curl_exec($ch);

        //获取一个cURL连接资源句柄的信息  这里主要用来读取长度
        //-- CURLINFO_CONTENT_LENGTH_DOWNLOAD   从Content-Length: field中读取的下载内容长度
        $filesize = $length = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

        //发送请求的媒体头类型
        header($media_type);

        //------ 获取资源长度告一段落  以下用于获取媒体视频的二进制内容------

        //总共接收的数据大小
        header("Content-length: " . $filesize);

        //接收的数据类型是 字节类型 即二进制
        header('Accept-Ranges: bytes');

        $partialContent = false;
        $offset = 0; //读取数据的初始位置

        if (isset($_SERVER['HTTP_RANGE'])) {

            $partialContent = true;

            //获得初始位置和数据长度
            preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);
            $offset = intval($matches[1]);
            $length = $filesize - $offset - 1;

            /***
            断点续传: 就是从文件上次中断的地方开始重新下载或上传,当下载或上传文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会去重头下载,
            这样很浪费时间。所以断点续传的功能就应运而生了。要实现断点续传的功能,需要客户端记录下当前的下载或上传进度,
            并在需要续传的时候通知服务端本次需要下载或上传的内容片段。
            HTTP的请求上定义了断点续传相关的HTTP头Range字段和Content-Range字段。
            比如说客户端在Header中设置Range=bytes22223333- 表示文件从22223333字节开始传,前面的字节不用传了。
            服务器收到请求,返回206 Partial Content。 Content-Length=44445555,Content-Range=bytes22223333-44445554/44445555

             */
            //Chrome在对于MP3文件的访问,返回的都是206 Partial Content
            header('HTTP/1.1 206 Partial Content');

            //每次接收数据的的范围
            header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
        }

        //重新开一个ch  用来获取内容
        $ch = curl_init();

        //如果支持分段发送数据
        if ($partialContent && isset($_SERVER['HTTP_RANGE'])) {

            //获取上次的范围
            preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);

            $offset = intval($matches[1]); //开始位置
            $length = $filesize - $offset - 1; //获取长度

            //发送带有Range的请求头
            $headers = ['Range: bytes=' . $offset . '-' . ($offset + $length) . ''];
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }

        curl_setopt($ch, CURLOPT_VERBOSE, 1);

        curl_setopt($ch, CURLOPT_TIMEOUT, $curl_time_out);

        curl_setopt($ch, CURLOPT_URL, $file_url);

        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        // 启用时会将头文件的信息作为数据流输出(这里只需要获取内容 所以设置为false)
        curl_setopt($ch, CURLOPT_HEADER, false);

        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

        // TRUE 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 FALSE 时不会变成 GET  [ 这里我们不需要输出头信息]
        curl_setopt($ch, CURLOPT_NOBODY, false);

        // TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
        //这里我们需要直接输出二进制数据
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);

        //执行 cURL 会话
        curl_exec($ch);
    }

被讯搜虐得怀疑人生?这份笔记教你正确打开方式

Xunsearch (中文名:迅搜)是一套免费开源的专业中文全文检索解决方案,简单易用而且性能卓越能轻松处理海量数据的全文检索。它包含后端索引、搜索服务程序和前端脚本语言编写的开发工具包(称之为 SDK) 。本人看来,讯搜底层采用 C/C++ 编写,性能上不用怀疑,说到功能强大嘛。。恩,先保留着吧(毕竟现在有个如日中天的Elasticsearch),迅搜对比起es虽然功能上着实不够看,且分布式支持方面也不怎么样,客户端也主要面向PHP。。但凡是也有例外,在资源占用低和容易上手方面还是有一定突出优势的(es在资源使用方面就是个吃货呀),可以作为其他搜索引擎如es、solr等的补充。在此,总结一下迅搜的一些简单用法。

编写PHP守护进程(php实现守护进程)

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。PHP也可以实现守护进程的功能。

1、基本概念

1) 进程:每个进程都有一个父进程, 子进程退出, 父进程能得到子进程退出的状态。

php返回json数据中文显示的问题(php返回json数据交给js)

返回json格式的中文显示成\u5723\u8bde\u8282\u5343\u4e07\u597d\u793c\u5927\u5949\u9001

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接