配置

修改 /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. 谈一谈socket与java

    用java中socket实现socket聊天 1,      什么是socket Socket 是指网络套接字,什么是套接字呢?    这是网络上一种端对端的网络协议,端口就是进程号,socket在网 ...

  2. windows7 64位系统安装CPU版本TensorFlow(anaconda3.6)

    1>下载anaconda3.6,https://www.anaconda.com/download/,选择64位的anaconda3.6,安装时候,路径可以自定义,但是要选择把路径添加到环境变量 ...

  3. mailto链接

    mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息,但是需要你电脑安装默认的E-mail软件,类似Microsoft Outlook等,那么点击mailto链接就可以获得默认设置的 ...

  4. vue-router 路由跳转:和name配对的是params,和path配对的是query

    1.命名路由name搭配params,刷新页面参数会丢失 2.路由path搭配query,刷新页面数据不会丢失 3.接收参数使用this.$router,就能获取到参数的值

  5. tomcat catalina.out乱码

    启动参数添加-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8解决

  6. centos7系统优化定制

    #!/bin/bash #author junxi by #this script is only for CentOS 7.x #check the OS platform=`uname -i` i ...

  7. day10 while else continue break

    a. while else b. continue   break                   continue ,终止当前循环,开始下一次循环                   break ...

  8. 0002-小牛学堂大数据24期视频-架构Hadoop-Spark

  9. mysql原生分页

    select * from table limit (pageNo-1)*pageSize, pageSize; 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数 ...

  10. (最详细)小米Note 2的usb调试模式在哪里开启的教程

    当我们使用安卓手机链接Pc的时候,或者使用的有些工具比如我们学院营销团队当使用的工具引号精灵,之前使用的老版本就需要开启USB开发者调试模式下使用,现当新版本不需要了,如果手机没有开启USB开发者调试 ...