• 模块化开发_php中使用redis


    redis

    介绍和安装

    redis数据库,支持数据持久化,常用与分布式锁,支持事务,持久化,非关心型数据库
    区别:
    关系型数据库:硬盘,安全,结构简单,易于理解,浪费空间
    非关系型数据库:内存,断电丢失数据,读写速度快,
    内存的速度是硬盘的100倍
    redis:用于缓存压力,提升网站访问速度
    三种类型:持久化(将数据保存到硬盘中,再开机再读取),支持多种类型(5种),支持储存
    作用:
    高性能,先读缓存再读数据库
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    高并发,mysql难以处理
    redis中有list类型,其中放10个值,访问一个放一个,有效解决高并发请添加图片描述

    直接操作缓存能够承受的请求是远远大于直接访问数据库
    redis和memcached的区别
    memcached也是非关系型数据库
    在这里插入图片描述

    安装:
    phpstudy中点击redis,reids管理工具,启用就点启用

    5中种数据类型

    key value
    list
    set
    zset
    hash
    首先启动redis输入指令
    redis-cli

    字符串类型

    然后传入值set sex man
    这里sex就是键,man就是值
    keys 就是读取所有数据
    keys a
    模糊查询
    keys *x也是模糊
    setex name 10 ding
    设置一个十秒钟的值
    一些基础操作
    在这里插入图片描述

    队列类型

    简单的字符串列表,可以添加或去除一个元素到头部或者尾部
    队列的操作具有原子性,一次只能操作一个值
    操作类似羽毛桶放取羽毛球
    解决高并发问题
    队列中一个列表可以装40亿个元素
    首先,创建队列
    lpush llllll bbbbb yyyy头部入队2个值
    目前yyyy在第一个
    lrange lllll 1 100 查看lllll队列 从第一个查看1000个
    rpush 尾部入队 lllll aaaaa vvvvv
    获取队列长度和入队出队
    在这里插入图片描述

    集合

    sadd class 1 2 3 6 5 8 创教名字叫class的集合
    集合成员是唯一的,不能放同名的值
    集合的查看添加
    在这里插入图片描述

    交集并集
    删除
    在这里插入图片描述

    有序集合

    前面多给一个权重值
    在这里插入图片描述

    权重值一并取出

    哈希

    有字段有值的字段表
    hmset class3 name ding sex man age 14
    添加查看删除
    在这里插入图片描述

    持久化

    Redis Save
    查看与修改备份路径
    在这里插入图片描述

    save命令后数据库问将会存入指定的文件夹内
    然后将文件夹内的文件放入redis目录下重启服务就可以使用数据库

    事务

    开启事务multi
    事务的开启与存入数据,与取消事务
    在这里插入图片描述

    密码
    查看密码

    config get requirepass

    设置密码
    config get requirepass “密码”

    然后操作就需要密码
    输入密码是auth 密码
    但是这里设置的是临时密码
    客户端设置才是持久密码
    或者找到配置文件conf
    在这里插入图片描述

    可以新建配置文件redisconf
    然后用配置此文件的配置打开redis
    redis-cli
    然后就需要输入配置的密码

    集群哨兵

    用到集群的原因是一台服务器不够用
    主从模式
    可以悬选择升级服务器,选择带宽更多的服务器,或者买一个服务器做集群
    集群更加容易实现
    有三种模式,主(写)从(读)模式,
    因为主服务器负责写的·功能宕机后·1整个服务会挂掉
    所以有哨兵机制
    哨兵查看到主服务器死了就会去选择一个服务器当主服务器,原来服务器上线当从服务器
    一个哨兵对应一个服务器

    操作redis

    家PHP中需要加扩展
    手动版:
    在这里插入图片描述

    进入这里的配置文件
    没有就加这一句
    在这里插入图片描述

    自动版本:
    在小皮面板中
    打开
    在这里插入图片描述

    public function index(){
            //php操作redis
            //redis类在开启的状态下才能使用 扩展没有开启会提示undefind class
            $redis = new \Redis();
            //配置redis的服务器端口
            $redis->connect('127.0.0.1','6379');
            //如有密码则需要配置
    //        $redis->auth();//输入密码
            $redis->set('name','ding');
            dump($redis->get('name'));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    同服务器下可以共同访问到redis文件

    高并发和持久化
    新建表红包
    mysql
    先判断数据库中红包数量
    在这里插入图片描述

    新建队列
    新建红包队列
    在这里插入图片描述

    此链接点击后就会生成5个红包
    在这里插入图片描述

    这里是判断是否还有红包

    reids高性能用法
    存储到cache
    在这里插入图片描述

    30秒有效期
    优化后
    在这里插入图片描述

    代码

    
    
    namespace app\admin\controller;
    
    use think\Db;
    use think\facade\Cache;
    
    class Test
    {
        public function index(){
            //php操作redis
            //redis类在开启的状态下才能使用 扩展没有开启会提示undefind class
            $redis = new \Redis();
            //配置redis的服务器端口
            $redis->connect('127.0.0.1','6379');
            //如有密码则需要配置
    //        $redis->auth();//输入密码
            $redis->set('name','ding');
            dump($redis->get('name'));
        }
        public function other(){
            //tp方式使用redis
            //进入config文件夹找到cache打开
            //切换缓存类型
            $redis =  Cache::store('redis_ding');
            $redis->set('age',19);
            $redis->set("mid",1,30);//定时失效
            dump($redis->   get('mid'));
            //集合
            $redis->sadd('class1','好二篇');
            dump($redis->smembers('class1'));
    
    
        }
        //使用模型进行分类查询
        public function ss(){
    
            $sql = "SELECT cate_id, COUNT(*) AS order_count FROM tp_article GROUP BY cate_id";
    
            $result = Db::query($sql);
    
            $id = input('id');
    
            foreach($result as $row) {
                if($row['cate_id'] == $id) {
                    foreach($row as $key => $value) {
                        echo ($key.'='.$value);
                    }
                }
            }
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
  • 相关阅读:
    2022年地理信息系统与遥感专业就业前景与升学高校排名选择
    Springboot 集成WebSocket作为客户端,含重连接功能,开箱即用
    uboot源码分析(基于S5PV210)之uboot的命令体系与环境变量
    es6 面试 proxy,map与WeakMap, set 与 weakSet,symbol,class 继承
    BUG:AttributeError: ‘GLMChineseTokenizer‘ object has no attribute ‘sp_model’
    Java实战:Spring Boot项目Jar包加密
    c++基础题 想不明白的逻辑
    FreeRTOS 中如何定位 HardFault?
    CopyOnWriteArrayList源码分析
    栈的应用:表达式求值(中缀表达式,后缀表达式,前缀表达式)
  • 原文地址:https://blog.csdn.net/ChinaLibrary/article/details/133107500