yii2-redis 扩展详解

CODESYS开发实战:EtherCAT总线伺服从站配置与运动控制 本文详细介绍了在CODESYS平台上进行EtherCAT总线伺服从站配置与运动控制的实战教程。内容涵盖从设备描述文件安装、主从站拓扑构建,到核心的伺服使能状态机编程、过程数据映射,以及最终实现点位运动控制的完整流程。文章旨在帮助开发者快速掌握基于CODESYS的EtherCAT总线伺服控制技术,提升工业自动化项目开发效率。 阅读详情

简介 

yii2-redis 扩展为 Yii2 框架提供了 redis 键值存储支持。包括缓存(Cache)、会话存储处理(Session),并实现了 ActiveRecord 模式,允许您将活动记录存储在 redis 中。

相关链接 

安装扩展 

在 Yii2 项目根目录,执行以下命令安装:

$ composer require yiisoft/yii2-redis

也可以先在 composer.json 文件中声明如下依赖:

"yiisoft/yii2-redis": "~2.0.0"

再执行下面命令安装:

$ composer update

基本使用 

继续阅读请确保已安装并开启了 redis 服务,安装请参考《Redis 安装》。

1. 配置 

在组件中添加如下配置:

'components' => [
    'redis' => [
        'class' => 'yii\redis\Connection',
        'hostname' => 'localhost',
        'port' => 6379,
        'database' => 0,
    ],
]  

2. 示例 

下面代码演示了 redis 最基本的 string 类型的使用:

// 获取 redis 组件
$redis = Yii::$app->redis;

// 判断 key 为 username 的是否有值,有则打印,没有则赋值
$key = 'username';
if ($val = $redis->get($key)) {
    var_dump($val);
} else {
    $redis->set($key, 'marko');
    $redis->expire($key, 5);
}

这个类中(yii\redis\Connection)提供了操作 redis 所有的数据类型和服务(String、Hash、List、Set、SortedSet、HyperLogLog、GEO、Pub/Sub、Transaction、Script、Connection、Server)所需要的方法,并且和 redis 中的方法同名,如果不清楚可以直接到该类中查看。

缓存组件 

该扩展中的 yii\redis\Cache 实现了 Yii2 中的缓存相关接口,所以我们也可以用 redis 来存储缓存,且用法和原来一样。

1. 配置 

修改组件中 cache 的 class 为 yii\redis\Cache 即可,配置如下:

'components' => [
    'cache' => [
        // 'class' => 'yii\caching\FileCache',
        'class' => 'yii\redis\Cache',
    ],
],

如果没有配置过 redis 组件,需要在 cache 组件下配置 redis 服务相关参数,完整配置如下:

'components' => [
    'cache' => [
        // 'class' => 'yii\caching\FileCache',
        'class' => 'yii\redis\Cache',
        'redis' => [
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],

2. 示例 

下面代码演示了缓存的基本使用:

// 获取 cache 组件
$cache = Yii::$app->cache;

// 判断 key 为 username 的缓存是否存在,有则打印,没有则赋值
$key = 'username';
if ($cache->exists($key)) {
    var_dump($cache->get($key));
} else {
    $cache->set($key, 'marko', 60);
}

使用文件缓存(FileCache)时,缓存是存储在 runtime/cache 目录下;使用 redis 缓存后,缓存将存储在 redis 数据库中,性能将大大提高。

会话组件 

该扩展中的 yii\redis\Session 实现了 Yii2 中的会话相关接口,所以我们也可以用 redis 来存储会话信息,且用法和原来一样。

1. 配置 

修改组件 session 的配置,指定 class 为 yii\redis\Session 即可,配置如下:

'components' => [
    'session' => [
        'name' => 'advanced-frontend',
        'class' => 'yii\redis\Session'
    ],
],

如果没有配置过 redis 组件,需要在 session 组件下配置 redis 服务相关参数,完整配置如下:

'components' => [
    'session' => [
        'name' => 'advanced-frontend',
        'class' => 'yii\redis\Session',
        'redis' => [
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ],
    ],
],

2. 使用 

在开发过程中,切记一定不要使用 PHP 原生的 $_SESSION 去操作,而要使用 Yii 提供的 session 组件,获取方式如下:

$session = Yii::$app->session;

ActiveRecord 

该扩展中的 yii\redis\ActiveRecord 实现了 Yii2 中的 ActiveRecord 相关接口,所以我们可以使用 AR 的方式操作 redis 数据库。关于如何使用 Yii 的 ActiveRecord,请阅读权威指南中有关 ActiveRecord 的基础文档。 

定义 redis ActiveRecord 类,我们的模型需要继承 yii\redis\ActiveRecord,并至少实现 attributes() 方法来定义模型的属性。 

主键可以通过 yii\redis\ActiveRecord::primaryKey() 定义,如果未指定,则默认为 id。 primaryKey 必须在 attributes() 方法定义的属性中,如果没有指定主键,请确保 id 在属性中。

下面定义一个 Customer 模型来演示:

class Customer extends \yii\redis\ActiveRecord
{
    /**
     * 主键 默认为 id
     *
     * @return array|string[]
     */
    public static function primaryKey()
    {
        return ['id'];
    }

    /**
     * 模型对应记录的属性列表
     *
     * @return array
     */
    public function attributes()
    {
        return ['id', 'name', 'age', 'phone', 'status', 'created_at', 'updated_at'];
    }

    /**
     * 定义和其它模型的关系
     *
     * @return \yii\db\ActiveQueryInterface
     */
    public function getOrders()
    {
         return $this->hasMany(Order::className(), ['customer_id' => 'id']);
    }

}

使用示例:

// 使用 AR 方式新增一条记录
$customer = new Customer();
$customer->name = 'marko';
$customer->age = 18;
$customer->phone = 13888888888;
$customer->status = 1;
$customer->save();
echo $customer->id;

// 使用 AR 查询
$customer = Customer::findOne($customer->id);
$customer = Customer::find()->where(['status' => 1])->all();

redis ActiveRecord 的一般用法与权威指南中数据库的 ActiveRecord 用法非常相似。它们支持相同的接口和方法,除了以下限制:

  • 由于 redis 不支持 sql,查询方法仅限于使用以下方法:where(),limit(),offset(),orderBy() 和 indexBy()。 【 orderBy() 尚未实现:#1305)】
  • 由于 redis 没有表的概念,因此不能通过表定义关联关系,只能通过其它记录来定义关系。

直接使用命令 

直接使用 redis 连接,就可以使用 redis 提供的很多有用的命令。配置好 redis 后,用以下方式获取 redis 组件:

$redis = Yii::$app->redis;

然后就可以执行命令了,最通用的方法是使用 executeCommand 方法:

$result = $redis->executeCommand('hmset', ['test_collection', 'key1', 'val1', 'key2', 'val2']);

支持的每个命令都有一些快捷方式,可以按照如下方式使用:

$result = $redis->hmset('test_collection', 'key1', 'val1', 'key2', 'val2');

有关可用命令及其参数的列表,请参阅 redis 命令: 

相关推荐

VMware虚拟机的安装教程

VMware 虚拟机的备份与恢复是保障数据安全和业务连续性的重要措施。综上所述,VMware 虚拟机的备份与恢复策略有多种选择,企业和用户可以根据实际需求和资源情况选择适合自己的方案,以确保虚拟机数据的安全和业务的连续性。

huanghm88的专栏 2978

Yii实现redis操作

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。在redis中我们使用redis脚本来实现原型性操作,Redis脚本时使用Lua解释器来执行脚本实现原子性操作,reids原子性操作表示将多个redis一系列的操作融合成一步,一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节,redis原子性操作常用于高并发下数据处理。在配置文件中增加如下配置。

huaweichenai的博客 1697

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 340

【Yii2】使用Redis

在 Yii2 中使用 Redis 非常简单。首先,确保您已经安装了 Redis 扩展,并在然后,您可以在 Yii2 应用程序中使用 Redis 来存储和检索数据。这种方法来自类。它是一个自定义的 Redis 组件,通常在文件中配置。这个组件提供了一些额外的功能,例如自动重连、记录日志等。使用这种方法获取 Redis 缓存连接实例时,您将获得一个封装了 Redis 连接的对象,该对象提供了一些额外的方法,例如。这种方法是通过 Yii2 的依赖注入容器获取 Redis 缓存组件的实例。

q8688的博客 1486

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5906

知识图谱中的 Ontology(本体论)

本文的部分图片和内容来自中国科学院自动化研究所刘康老师的课件 Ontology(本体论) Ontology 是(特定领域)信息组织的一种形式,是领域知识规范的抽象和描述,是表达、共享、重用知识的方法。 Ontology 是知识体系构建的关键技术,知识图谱是一种人工智能技术,它的关键在于让计算机能够处理人类的知识。然而,人类脑海中的知识通常是直觉性的,我们无法将这种直觉性的知识直接输入给计算机,On...

P01son的博客 2万+

yii2 – redis 配置

1.安装redis, 下面是2.8,注意,redis版本一定要高,2.2.7一下的版本是不行的,不支持php-redis,建议安装2.8+的版本wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar xzf redis-3.2.9.tar.gz cd redis-3.2.9 make2.6.14 这个版本有点老,大家可去找新...

weixin_33962923的博客 507

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

Yii使用redis缓存

Yii使用redis缓存数据

杰姆小生的博客 1185

阿里云 Docker 镜像加速收费后:这些免费替代方案值得收藏

阿里云Docker镜像加速服务收费后,国内开发者急需免费替代方案。本文推荐2025年仍可用的7个免费镜像源,包括轩辕镜像、DaoCloud、网易云等,并提供多源配置方案以提高稳定性。建议开发者在CI/CD环境中配置多个镜像源,避免构建失败。文章还提供了详细的配置步骤和使用建议,适合个人和团队开发者参考。

sg_knight的专栏 1931

【漏洞复现】CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞,攻击者可利用此漏洞执行任意代码。

渗透之路,攻防之间皆学问 6711

yii2 使用redis

1.在服务器上安装redis redis下载地址 https://github.com/MicrosoftArchive/redis/releases 2.启动redis服务 1.双击目录下的redis-server.exe启动服务,窗口若关闭,则服务关闭。 2.使用cmd进到redis目录输入 redis-server.exe redis.windows.conf命令启动re...

Q斗士 694

数学工具箱:Clarke与Park变换

本文详细解析了FOC(磁场定向控制)中的核心数学工具——Clarke变换与Park变换。首先阐述了坐标变换的必要性:将复杂的三相交流系统简化为直流系统,便于精确控制。Clarke变换将三相静止坐标系转换为两相静止坐标系,减少变量数量;Park变换进一步将两相静止坐标系转换为两相旋转坐标系,实现交流量到直流量的转换。文章提供了两种变换的数学公式、物理意义图解及C语言实现代码,并简要介绍了逆变换过程。这些变换为电机控制提供了关键的数学基础,后续将结合GD32F303的FPU特性进行优化实现。

汽车电子软件领域知识分享 180

Yii2 教程 - yii2-redis 扩展详解

该教程已被合并到《Yii2 权威指南中文版》中!Yiichina 教程地址为《yii2-redis 扩展详解》! 一、简介 yii2-redis 扩展为 Yii2 框架提供了 redis 键值存储支持。包括缓存(Cache)、会话存储处理(Session),并实现了 ActiveRecord 模式,允许您将活动记录存储在 redis 中。 相关链接 yii2-redis ...

天秤vs永恒 366

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Istio ztunnel 滚动升级时如何利用 SO_REUSEPORT 与 drain 机制减少流量中断

在 ambient 模式下,ztunnel 以 DaemonSet 方式运行,每个节点一个,接管该节点上所有 mesh Pod 的 L4 流量。当需要升级 ztunnel(更换镜像版本或修改 DaemonSet spec)时,每个节点都会发生一次旧 Pod 退场、新 Pod 接管的滚动重启,而流量中断风险就集中在这一瞬间。Istio 用 `SO_REUSEPORT` 加 drain(连接排空)两个

gitblog_00223的博客 428

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

yii2 redis封装类 php,Redis(yii2-redis)

yii2-redis 扩展详解简介yii2-redis 扩展为 Yii2 框架提供了 redis 键值存储支持。包括缓存(Cache)、会话存储处理(Session),并实现了 ActiveRecord 模式,允许您将活动记录存储在 redis 中。相关链接安装扩展在 Yii2 项目根目录,执行以下命令安装:$ composer require yiisoft/yii2-redis也可以先在 co...

weixin_30291121的博客 362

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

yii2 下的redis常用命令集合

在应用的时候需要先对yii2进行扩展安装,如果装有composer直接运行 php composer.phar require --prefer-dist yiisoft/yii2-redis 也可以下载yii2-redis扩展包(https://github.com/yiisoft/yii2-redis )进行手工操作,...

weixin_42172723的博客 297

UniShopX管理后台开发指南:权限控制、数据统计与系统配置

UniShopX是一个基于Yii2框架开发的电商系统,提供类似京东/天猫/淘宝的完整电商解决方案。作为EleTeam团队维护的开源项目,UniShopX的管理后台是其核心功能模块,为商家提供了强大的后台管理能力。本文将详细介绍UniShopX管理后台的三大核心功能:权限控制、数据统计与系统配置,帮助开发者快速上手和定制化开发。😊 ## 🔐 权限控制:基于角色的访问控制(RBAC) UniS

gitblog_00635的博客 1096

关于Yii2中redis扩展的使用

yii2支持了redis扩展,不需要在本地下载php的扩展库就可以很好的使用 1.下载windows的redis安装包打开cmd,进入安装包目录,使用redis-server.exe redis.conf,开启redis服务器,再打开一个cmd窗口,redis-cli.exe -h IP -p 6379 备注:现在Windows下的redis可以到这里下载:https://github

wyh09102010的专栏 4603

Yii 2 Redis 扩展常见问题解决方案

Yii 2 Redis 扩展常见问题解决方案 项目基础介绍 Yii 2 Redis 扩展是为 Yii 框架 2.0 提供的 Redis 支持扩展。它包括 Redis 缓存、会话存储处理程序,并实现了 ActiveRecord 模式,允许用户在 Redis 中存储活动记录。该项目主要使用 PHP 语言编写,适合需要在 Yii 2 框架中集成 Redis 的开发者使用。 新手使用注意事项及解决方案 1...

gitblog_00368的博客 841

Yii2-Redis 开源项目指南

Yii2-Redis 开源项目指南 项目介绍 Yii2-Redis 是一个基于流行 PHP 框架 Yii2 的扩展,它提供了全面的 Redis 支持,使得开发者能够轻松地在 Yii 应用中集成高性能的 Redis 数据库。此扩展允许缓存数据、session 存储以及执行复杂的 Redis 命令,从而优化应用性能并简化数据处理。 项目快速启动 要快速开始使用 Yii2-Redis,首先确保你的环境已...

gitblog_00226的博客 862

Yii2框架使用redis: yii2本地添加redis扩展及其使用

yii2支持了redis扩展,不需要在本地下载php的扩展库就可以很好的使用 1.开启redis服务器.如果是在window下,则下载windows的redis安装包打开cmd,进入安装包目录,使用redis-server.exe redis.conf,开启redis服务器,再打开一个cmd窗口,redis-cli.exe -h IP -p 6379 2.下载yii2的redis的安装

qq_39090393的博客 793

【PHP】Yii2如何使用redis缓存

有网友指出修改框架源码是不对的,因为会被composer更新覆盖掉,我下面的操作大家适当取舍就行 现在做产品对抗并发的要求是越来越高了,所以memcache、redis这种基于内存的缓存是备受青睐。本人项目所使用的框架是Yii2,所以就来研究一下Yii2中如何使用redis。在网上查了几篇资料,感觉都不够完美。网上能查到的最多的写法如下,以下言论纯属个人观点,有错误的地方希望各位...

李小白的博客 8753

Yii2 queue的队列使用详解

一.基于redis 1.安装redis ,并进行相关配置 2.yii2 项目中使用composer 安装 yii2-redis 3.yii2 项目中使用compsoer 安装yii2-queue 配置文件设置: 'redis' => [ 'class' => \common\components\cache\RedisCache::class, 'hostname' => 'localhost', 'port' => 6379, 'data

大鹏 9642
上一篇: php打乱数组顺序(含二维数组)
下一篇: redis持久化(万一redis突然宕机了咋办?数据会丢失吗?)
firstcode666
博客等级 码龄5年 53粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值