php中使用redis及其扩展

本文详细介绍了Redis数据库的特点,如支持数据持久化、事务处理、内存存储等,重点讲解了其在高并发场景中的应用,以及不同类型数据结构的使用,同时涵盖了安装、配置和操作方法,以及与MySQL等关系型数据库的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# redis

介绍

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

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

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整个服务会挂掉
所以有哨兵机制
哨兵查看到主服务器死了就会去选择一个服务器当主服务器,原来服务器上线当从服务器
一个哨兵对应一个服务器

安装

phpstudy中点击redis,reids管理工具,点击即可启用
在这里插入图片描述
安装好之后可以选择配置环境变量或者不配置
配置的话先配置REDIS_HOME,再配置path
在这里插入图片描述

在这里插入图片描述

这里路径是小皮面板安装插件的位置
在cmd中输入
redis-server
在这里插入图片描述
在redis启动的状态下就会打印出这个标志

操作redis

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

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

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

然后系统自带了set和get方法,如果需要使用其他的更多的命令需要使用composer下载插件

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

    }
}

安装插件解锁更多方法

composer require predis/predis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值