模块化开发_php中使用redis

2023-09-20 23:57:10

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'));
    }

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

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

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

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

这里是判断是否还有红包

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

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

代码

<?php

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);
                }
            }
        }

    }
}

更多推荐

【ES6】

ES61ES6简介1.1什么是ES61.2为什么使用ES62ES6的新增语法2.1let2.2const2.3let、const、var的区别2.4解构赋值2.4.1数组解构2.4.2对象解构2.5箭头函数2.6剩余参数3ES6的内置对象扩展3.1Array的扩展方法3.1.1扩展运算符(展开语法)3.1.2构造函数方

华为云云耀云服务器L实例评测|基于华为云云耀云服务器L实例搭建EMQX大规模分布式 MQTT 消息服务器场景体验

文章目录前言一、😄华为云云耀服务器二、😄产品实例创建相关1、🧨开通华为云云耀服务器2、🧨创建华为云云耀服务器实例3、🧨终端登录4、🧨华为云云耀云服务器密码重置三、😄安装开源产品EMQX四、😄开放安全组五、😄访问EMQXDashboard六、😄消息传输建立测试1、🧨客户端连接消息服务器2、🧨客户端

Python数据容器——列表、元组、字符串、集合、字典

作者:Insist--个人主页:insist--个人主页本文专栏:Python专栏专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。目录一、了解数据容器1.为什么需要数据容器?2.数据容器是什么?二、数据容器—列表(list)1.列表的定义2.列表的特点3.例题三、数据容器—元组(tup

【计算机网络】网络层和数据链路层

文章目录IP协议网段划分分类划分法CIDR方案路由NAT网络地址转换技术IP报文的另外三个参数mac帧ARP协议交换机ICMP代理服务器IP协议TCP有将数据可靠、高效发给对方的策略,而IP具有发送的能力,即将数据从A主机送到B主机的能力。用户要的是100%的概率送到!IP地址=目标网络+目标主机IP协议报头4位首部长

Python灰帽编程——网页信息爬取

文章目录网页信息爬取1.相关模块1.1requests模块1.1.1模块中的请求方法1.1.2请求方法中的参数1.1.3响应对象中属性1.2RE模块1.2.1匹配单个字符1.2.2匹配一组字符1.2.3其他元字符1.2.4核心函数2.网页信息爬取2.1获取网页HTML源代码2.2提取图片地址2.3下载图片2.4完整脚本

【卖出备兑看涨期权策略(Covered_call)】

卖出备兑看涨期权策略(Covered_call)卖出备兑看涨期权策略是一种最基本的收入策略,该策略主要操作就是在持有标的资产的同时卖出对应的看涨期权合约,以此来作为从持有的标的资产中获取租金的一种方法。如果标的资产的价格上涨到行权价之上,那么卖出的看涨期权将被行权,那么投资者可以卖出手中持有的标的资产,投资者获得最初的

数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘、图算法,搜索算法等

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘。本专栏主要方便入门同学快速掌握相关知识。声明

React 全栈体系(十一)

第五章React路由五、向路由组件传递参数数据1.效果2.代码-传递params参数2.1Message/*src/pages/Home/Message/index.jsx*/importReact,{Component}from"react";import{Link,Route}from'react-router-d

向量数据库,能让AI再次起飞吗?

9月7-8日,深圳国际会展中心18号馆来了,来了,腾讯面向产业互联网领域规格最高、规模最大、覆盖最广的年度科技盛会-——-腾讯全球数字生态大会。9月7日,我们将聚焦产业未来发展新趋势,针对云计算、大数据、人工智能、安全、SaaS等核心数字化工具做关键进展发布,并联合生态伙伴推出最新行业场景解决方案。同时,携手全球权威商

mysql:列类型之float、double

mysql:列类型之float、double_mysqldouble_普通网友的博客-CSDN博客环境:window10vs2022.net6mysql8.0.25DBeaver参考:《MSDN:浮点数值类型(C#引用)》《mysql:11.1.4Floating-PointTypes(ApproximateValue

Flutter开发桌面应用的一些探索分享

引言在移动应用开发领域,Flutter已经赢得了广泛的认可和采用,成为了跨平台移动应用开发的瑞士军刀。然而,Flutter的魅力并不仅限于移动平台,它还可以用于开发桌面应用程序,为开发人员提供了一种全新的选择。本文将深入探讨Flutter在桌面应用开发中的应用,以及目前国内新颖的跨端开发技术。桌面应用开发的现状在过去,

热文推荐