配置

修改 /config/properties/cache.php 文件

return [
'redis' => [
'name' => 'redis',
'uri' => [
'127.0.0.1:6379'
],
'minActive' => 8,
'maxActive' => 8,
'maxWait' => 8,
'maxWaitTime' => 3,
'maxIdleTime' => 60,
'timeout' => 8,
'db' => 0,
'prefix' => '',
'serialize' => 0,
],
'demoRedis' => [
'db' => 2,
'prefix' => 'demo_redis_',
]
];

redis可以配置多个实例,相同的配置仅需要在第一个实例配置一次即可

基本用法

获取redis对象:

  • 通过cache()函数
cache()->get('google');
  • 通过注入的方法:Inject(“实例名”),不填则使用默认
/**
* @Inject()
* @var \Swoft\Redis\Redis
*/
private $redis;

获取到redis对象后就可以调用下面的方法操作redis

class RedisController
{
/**
* @Inject()
* @var \Swoft\Redis\Redis
*/
private $redis;
/**
* @Inject("demoRedis")
* @var \Swoft\Redis\Redis
*/
private $demoRedis; public function set(){
return $this->redis->set('apple','www.apple.com');
} public function get(){
return cache()->get('google');
} public function set2(){
return $this->demoRedis->set('google','www.google.com');
} public function get2(){
return $this->demoRedis->get('google');
} public function hSet(){
return $this->redis->hSet('website','google','www.google.com');
} public function hGet(){
return $this->redis->hGet('website','google');
} public function hMset(){
$websites = [
'sina' => 'www.sina.com.cn',
'baidu' => 'www.baidu.com'
];
return cache()->hMset('website',$websites);
} public function hMget(){
return cache()->hMget('website',['baidu','google']);
} }

实际应用

1. 队列操作,队列存放10条商品记录,每次插入一条新记录就会删除掉一条最老的记录

    /**
* @return array
*/
public function queuein(){
//$data 模拟从数据库中查询出的数据
$data = [
'id' => rand(1,9999),
'goods_name' => '商品'.rand(0,99999),
'create_time' => date('Y-m-d')
];
$this->redis->lPush('goods',json_encode($data));
$this->redis->lTrim('goods',0,10);
$goods = array();
foreach($this->redis->lRange('goods',0,10) as $item){
$goods[] = json_decode($item);
}
return $goods;
}

2. 图片点赞,如果redis中存在该图片记录,则对应的赞 +1,如不存在则从数据库中查出然后存入redis

    /**
* @RequestMapping(route="thumb/{id}")
*/
public function thumb($id){
if($this->redis->exists('img_'.$id)){
$this->redis->hIncrBy('img_'.$id,'img_prise',1);
}else{
//$data 模拟从数据库中查询出的数据
$data = [
'img_id' => $id,
'img_prise' => rand(1,999),
'img_url' => md5(rand(999,99999))
];
$this->redis->hMset('img_'.$id,$data);
}
return $this->redis->hMget('img_'.$id, ['img_id','img_prise','img_url']);
}

Swoft 缓存及Redis使用的更多相关文章

  1. 再谈缓存和Redis

    自从上次分享<Redis到底该如何利用?>已经有1年多了,这1年经历了不少.从码了我们网站的第一行开始到现在,我们的缓存模块也不断在升级,这之中确实略有心得,最近也有朋友探讨缓存,觉得可以 ...

  2. (转)高性能网站架构之缓存篇—Redis集群搭建

    看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...

  3. 分布式缓存技术redis学习系列

    分布式缓存技术redis学习系列(一)--redis简介以及linux上的安装以及操作redis问题整理 分布式缓存技术redis学习系列(二)--详细讲解redis数据结构(内存模型)以及常用命令 ...

  4. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

  5. spring(三、spring中的eheche缓存、redis使用)

    spring(三.spring中的eheche缓存.redis使用) 本文主要介绍为什么要构建ehcache+redis两级缓存?以及在实战中如何实现?思考如何配置缓存策略更合适?这样的方案可能遗留什 ...

  6. Spring Boot 揭秘与实战(二) 数据缓存篇 - Redis Cache

    文章目录 1. Redis Cache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 Redis Cache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存 ...

  7. 构建高性能数据库缓存之redis主从复制

    一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制 ...

  8. 构建高性能数据库缓存之redis(二)

    一.概述 在构建高性能数据库缓存之redis(一)这篇文档中,阐述了Redis数据库(key/value)的特点.功能以及简单的配置过程,相信阅读过这篇文档的朋友,对Redis数据库会有一点的了解,此 ...

  9. 谈缓存和Redis

    自从上次分享<Redis到底该如何利用?>已经有1年多了,这1年经历了不少.从码了我们网站的第一行开始到现在,我们的缓存模块也不断在升级,这之中确实略有心得,最近也有朋友探讨缓存,觉得可以 ...

随机推荐

  1. 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec

    人工神经网络,借鉴生物神经网络工作原理数学模型. 由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息.信息检索领域,模型训练合理排序模型,输入特征,文档质量.文档点击历史.文档 ...

  2. C# 程序修改config文件后,不重启程序刷新配置ConfigurationManager

    基本共识: ConfigurationManager 自带缓存,且不支持 写入. 如果 通过 文本写入方式 修改 配置文件,程序 无法刷新加载 最新配置. PS. Web.config 除外:Web. ...

  3. HISI VENC 实际输出帧率控制

    https://blog.csdn.net/spy_007_/article/details/83688287 平台:HI3516EV100 SDK : Hi3516CV300_SDK_V1.0.2. ...

  4. day02代码

    1.while.....else.....语句,break,continue,if,while,用户交互,输出,运算符 # 用户有三次登录机会 _username = 'tom' _password ...

  5. docker 创建docker用户组,应用用户加入用户组

    在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...

  6. python通配符之glob模块

    转自:https://blog.csdn.net/dcrmg/article/details/78309469 官方链接:https://docs.python.org/3.6/library/glo ...

  7. Dynamics 365—脚本

    Xrm.Page.getAttribute() 转控件:controls.get(0) 取赋值:getValue(),setValue() 是否改动:getIsDirty() 表单载入时的值:getI ...

  8. 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)

    自动发单,自动评价,自动评论,自动推广 微信小程序自运营器  微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...

  9. 高度自适应的div

    需求:有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度 1.用flex 来实现 思路:flex 垂直布局(column),第一个元素固定高度,第二个元素flex ...

  10. atom插件

    1.Sync Settings 搭配github,同步你的atom插件信息,配置信息,让你轻松实现一台电脑配置,多台电脑共享. 2.Emmet 能够基于Emmet语法产生HTML,做过前段开发的不会不 ...