模块化开发_php中使用redis

redis

介绍和安装

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

直接操作缓存能够承受的请求是远远大于直接访问数据库
redis和memcached的区别
memcached也是非关系型数据库
模块化开发_php中使用redis_第2张图片

安装:
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
设置一个十秒钟的值
一些基础操作
模块化开发_php中使用redis_第3张图片

队列类型

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

集合

sadd class 1 2 3 6 5 8 创教名字叫class的集合
集合成员是唯一的,不能放同名的值
集合的查看添加
模块化开发_php中使用redis_第5张图片

交集并集
删除
模块化开发_php中使用redis_第6张图片

有序集合

前面多给一个权重值
模块化开发_php中使用redis_第7张图片

权重值一并取出

哈希

有字段有值的字段表
hmset class3 name ding sex man age 14
添加查看删除
模块化开发_php中使用redis_第8张图片

持久化

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

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

事务

开启事务multi
事务的开启与存入数据,与取消事务
模块化开发_php中使用redis_第9张图片

密码
查看密码

config get requirepass

设置密码
config get requirepass “密码”

然后操作就需要密码
输入密码是auth 密码
但是这里设置的是临时密码
客户端设置才是持久密码
或者找到配置文件conf
模块化开发_php中使用redis_第10张图片

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

集群哨兵

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

操作redis

家PHP中需要加扩展
手动版:
模块化开发_php中使用redis_第11张图片

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

自动版本:
在小皮面板中
打开
模块化开发_php中使用redis_第12张图片

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
先判断数据库中红包数量
模块化开发_php中使用redis_第13张图片

新建队列
新建红包队列
模块化开发_php中使用redis_第14张图片

此链接点击后就会生成5个红包
模块化开发_php中使用redis_第15张图片

这里是判断是否还有红包

reids高性能用法
存储到cache
模块化开发_php中使用redis_第16张图片

30秒有效期
优化后
模块化开发_php中使用redis_第17张图片

代码



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

    }
}

你可能感兴趣的:(php,redis,开发语言)