配置

修改 /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. openWRT报错

    1.报错内容 /usr/lib/lua/luci/dispatcher.lua:533: bad argument #1 to 'pairs' (table expected, got nil)sta ...

  2. day-10初级函数

    函数 函数的定义 函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数-- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名=> 通 ...

  3. FPGA Asynchronous FIFO设计思路(2)

    FPGA Asynchronous FIFO设计思路(2) 首先讨论格雷码的编码方式: 先看4bit的格雷码,当MSB为0时,正向计数,当MSB为1时,即指针已经走过一遍了,最高位翻转,此时的格雷码是 ...

  4. 基于scrapy源码实现的自定义微型异步爬虫框架

    一.scrapy原理 Scrapy 使用了 Twisted异步网络库来处理网络通讯.整体架构大致如下 Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框 ...

  5. H3C交换机IRF典型配置举例LACP MAD检测方式

    一.组网需求 由于公司人员激增,接入层交换机提供的端口数目已经不能满足PC的接入需求.现需要在保护现有投资的基础上扩展端口接入数量,并要求网络易管理.易维护. 二.组网图 三.配置思路 Device ...

  6. tensorflow训练中出现问题Couldn't open CUDA library cupti64_80.dll

    参考链接:http://blog.csdn.net/lanchunhui/article/details/62242568 在代码中添加了tensorboard可视化代码后,原程序运行报错,以上链接方 ...

  7. CentOS install duplicity

    yum -y updateyum -y install epel-releaseyum -y install ncftp screen # Compilers and related tools:yu ...

  8. maven编译下载源码

    下载源码 mvn dependency:sources 跳过TEST mvn  -DskipTests

  9. 51nod1220 约数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1220 $G(n)=\sum\limits_{i=1}^n\sum\lim ...

  10. 3.Qt GUI中一些操作记录

    一.如何在Widget中利用代码添加背景图片 this->setAutoFillBackground(true); // QPalette palette = this->palette( ...