分享好友 编程语言首页 频道列表

Laravel 中使用 Redis 数据库

PHP教程  2017-02-05 16:230

一、前言

Redis 是一个开源高效的键值对存储系统,它通常用作为一个数据结构服务器来存储键值对,它可以支持字符串、散列、列表、集合、有序集合。

1. 安装 predis/predis

在 Laravel 中使用 Redis 之前,你需要通过 Composer 来安装 predis/predis 包(~1.0):

$ composer require predis/predis

2. 配置

Redis 的配置文件在 config/database.php 。在该文件中,我们可以看到一个包含 Redis 服务信息的配置数组,如下:

'redis' => [

    'cluster' => false,

    'default' => [
        'host' => env('REDIS_HOST', 'localhost'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],

然后在 .env 文件中配置如下三项为自己的信息:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

对于开发来说,默认的配置已经完全可以满足大部分的应用了。但是,你可以自由的在你环境中修改这个配置。你可以简单的添加 Redis 服务的名称,并且指定相应的服务器地址和端口。

cluster 选项会告诉 Laravel Redis 客户端在你的 Redis 集群中进行客户端的分片,这样就可以构成节点池并且创建大量有效的 RAM。但是,你需要注意的是客户端分片并不能处理故障转移。因此,它主要用来从一个主要数据存储地址获取可用的缓存数据。

另外,你可以在你的 Redis 连接定义里添加一个 options 数组,这样你可以指定 Predis 的客户端选项。

如果你的 Redis 服务器引入了认证机制,那么你需要在你的 Redis 服务配置数组中添加一个 password 配置项来提供凭证。

二、与 Redis 进行交互

在 Laravel 中,我们可以通过使用 Redis 假面 的各种方法来与 Redis 进行交互。Redis 假面支持动态方法,这意味着我们可以在 Redis 假面上调用任何的 Redis 命令,假面会直接将命令传递给 Redis。

1. 基本使用

下面演示 Redis 的 string 类型使用:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Redis;

class RedisController extends Controller
{
    public function set()
    {
        Redis::set('name', 'sean');
    }

    public function get()
    {
        $name = Redis::get('name');
        var_dump($name);
    }
}

2. 使用多个 Redis 连接

可以通过使用 Redis::connection 方法来获取 Redis 的实例:

$redis = Redis::connection();

这会返回默认的 Redis 服务器的实例。如果你没有使用集群服务,你可以传递配置文件中所定义的服务名称到 connection 方法中:

$redis = Redis::connection('other');

3. 管道命令

管道流水线可以允许你在一个操作中对 Redis 服务器执行多个命令。 pipeline 方法接收一个参数: Closure ,它会接收 Redis 的实例。你可以在闭包中发布所有的命令,它们将会在一个操作中进行处理:

Redis::pipeline(function ($pipe) {
    for ($i = 0; $i < 1000; $i++) {
        $pipe->set("key:$i", $i);
    }
});

其它的使用,大家如果有兴趣可以自己进行继续摸索!

查看更多关于【PHP教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Redis调用Lua脚本并测试
一、为什么使用Lua脚本    为了一次通信执行多个Redis命令,我们可以用pipline ,但是多个命令间没有逻辑联系 。    Lua脚本可以一次通信执行多个Redis命令,而且内部可以写自己的逻辑,整个脚本执行是原子性的。 二、命令行调用Lua脚本EVAL script numk

0评论2023-02-09647

扩展Redis的Lua调用方式 redis+lua
Redis是支持Lua脚本的,但是我以为并不方便。1. SCRIPT LOAD一个字符串拿到一个SHA,首先这个Lua script脚本就很难拿到。Linux一般用cat什么的。但是你作为PHP怎么拿到Lua的代码呢?2. 记录一个SHA,而且SHA是随着Lua代码的变化而变化的。而且给EVALSHA的时候

0评论2023-02-09512

redis+lua库存扣减和冲正
package spring;import org.redisson.Redisson;import org.redisson.api.RScript;import org.redisson.api.RedissonClient;import org.redisson.config.Config;import java.util.ArrayList;import java.util.List;import static org.redisson.api.RScript.Mod

0评论2023-02-09439

Nginx 内嵌lua脚本,结合Redis使用
0x00 Nginx 内嵌Lua脚本有下面特点:20k个并发连接Lua脚本能够在Nignx 11个层次的不同层次发挥作用,扩展Ngnix功能Lua速度极快(寄存器指令)0x01 应用场景在web server端做请求过滤处理(如:WAF、Anti CC等)0x02 简单配置过程測试环境Ubuntu Server 14.04.

0评论2023-02-09878

使用lua脚本和jedis实现redis的hmsetnx命令,操作hash表时不覆盖原有数据
redis中set系列命令(包括set,hset等等),基本上都包括两个版本,纯粹的set和setnx, setnx即set not exist, 也就是只有Key不存在时才会执行set, 而不会覆盖原有的值。但是hmset这个命令,包括redis本身,jedis都没有提供nx版本的支持。当然,hset这个命令是有

0评论2023-02-09321

使用Nginx Lua实现redis高性能http接口
使用Nginx Lua实现redis高性能http接口时间 2015-01-27 18:26:53峰云就她了原文http://xiaorui.cc/2015/01/27/使用nginx-lua实现redis高性能http接口/主题 Lua Nginx HTTP某些时候用python实现的接口性能不够强劲,需要换种方法来提高性能,这不就用lua试试。

0评论2023-02-09618

Php+Redis 实现Redis提供的lua脚本功能
?phprequire_once "predis-0.8/autoload.php";$config['schema'] = 'tcp';$config['host']= "192.168.1.7";$config['port'] = 6379;$redis = new Predis\Client($config);class wode extends Predis\Command\Sc

0评论2023-02-09377

PHP 使用redis set锁 PHP中使用redis执行lua脚本示例
const LOCKRSETUSR = 'lockuser';const SETNXKEYS = 'user_nx_%s'; const NOT_FREQUENT_OPERATION = '请勿频繁操作,请等待%s s'; //防刷:防止重复刷新页面,加锁随机码产生变动无法解锁$setnxkeys = sprintf(self::SETNXKEYS,$edata['uid']); //$data['uid

0评论2023-02-09783

c#中用lua脚本执行redis命令
直接贴出代码,实现执行lua脚本的方法,用到的第三方类库是 StackExchange.Redis(nuget上有)注:下面的代码是简化后的,实际使用要修改,using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Threading.Tasks;us

0评论2023-02-09514

redis+lua实现脚本一键查询 redis lua脚本语法
场景经常需要查redis某个key的值,需要执行三条命令才能查到redis-cli,启动redisselect num,选择dbget key,查询语句需要执行三条命令才能实现某个key的查询有没有一种方式,直接一条命令搞定,并且做成脚本,实现快捷查询?通过redis+lua实现的bat脚本替代

0评论2023-02-09695

nginx+lua+redis nginx lua redis 那个源码值得阅读
git clone --branch master https://github.com/openresty/lua-resty-redis.git yum install openssl openssl-devel wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz tar xf L

0评论2023-02-09483

redis ruby客户端学习( 二)
接上一篇redis ruby客户端学习( 一)对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串。 1,哈希(Map) hset。设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集

0评论2023-02-09675

redis集群搭建 不用ruby
redis 从5开始 可以直接用redis-cli命令创建集群了,不用那么麻烦 安装ruby环境  redis配置文件需要修改的地方port 7000cluster-enabled yescluster-config-file nodes.7000.confcluster-node-timeout 5000appendonly yes  mkdir /usr/local/clustercd /us

0评论2023-02-09915

redis ruby客户端学习(一)
  一,安装redis服务器  自行解决吧,没什么好说的。  二,安装redis的ruby客户端  这里使用的是redis-rb,自行安装, https://github.com/redis/redis-rb  三,连接服务器require "redis"r = Redis.new  这是最简单的连接方式,其他方式参见gith

0评论2023-02-09398

redis ruby客户端学习( 三)
接上一篇 redis ruby客户端学习( 二)对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了哈希和列表。一,集合mset。添加一个或者多个元素到集合(set)里 require "redis"r = Redis.n

0评论2023-02-09841

更多推荐