zoukankan      html  css  js  c++  java
  • laravel 操作 redis

    laravel框架中本身已经存在相应的redis的配置我们在使用的时候只需要更改配置即可,但是在使用的时候一定要注意命名空间的问题,具体可查看config/app.php下面的aliases数组中具体的路径

    1、安装启动Redis及依赖包

    如果使用的是Homestead虚拟机作为本地开发环境的话,Homestead已经为我们安装好了Redis并开机启动,如果是使用Windows开发环境的话,可参考 这篇文章 安装启动Redis。

    Redis启动之后,还需要在Laravel项目根目录下运行如下命令使用Composer安装 predis 依赖包:

    composer require predis/predis 1.0.*

    2、配置Redis

    前面我们已经提到Redis可以用作主数据库,所以Laravel中Redis的配置信息位于 config/database.php 中:

    'redis' => [
      'cluster' => false,
      'default' => [
        'host' => '127.0.0.1',
        'port' => 6379,
        'database' => 0,
      ],
    ],
    

    其中 cluster 选项表示是否在多个Redis节点间进行分片,这里我们本地测试只有一个节点故将其设置为 false

    default 选项表示默认Redis主机连接,这里Redis和Web服务器共用一台主机,所以 host 为127.0.0.1,Redis默认端口是6379。

    此外, default 选项还支持更多连接参数(如果需要的话):

    参数
    意义
    默认值
    host 服务器IP地址/主机名称 127.0.0.1
    port Redis服务器监听的端口号 6379
    password 如果服务器需要认证密码 不使用密码
    database

    连接时选择的数据库索引

    没有设置索引
    timeout
    连接到Redis服务器超时时间 5秒
    read_write_timeout 通过网络连接进行读写操作的超时时间

    系统默认(不限制超时时间的话设置为-1)

    另外Redis如果是作为缓存工具,还需要在 config/cache.php 配置 redis 选项:

    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
    ],

    这里的 connection 对应 config/databaseredis 的默认主机 default 配置。

    完成上述配置之后我们就可以在应用代码中使用Redis进行数据存取了。

    3、基本使用

    由于Laravel默认已经将Redis门面添加到 config/app.phpaliases 数组中,所以在代码中可以直接使用该门面进行Redis操作。我们可以在Redis门面上以静态方法的方式调用Redis客户端提供的任何命令( Redis命令大全 ),然后Laravel使用魔术方法将命令传递给Redis服务器并返回获取的结果。

    下面我们来看最简单的读取操作:

    $key = 'user:name:6';
    $user = User::find(6);
    if($user){
      //将用户名存储到Redis中
      Redis::set($key,$user->name);
    }
    //判断指定键是否存在
    if(Redis::exists($key)){
      //根据键名获取键值
      dd(Redis::get($key));
    }
    

    以上是简单的字符串存取,下面我们看一个更复杂的例子,将获取到的数据存放到集合中:

    $key = 'posts:title';
    $posts = Post::all();
    foreach ($posts as $post) {
      //将文章标题存放到集合中
      Redis::sadd($key,$post->title);
    }
    //获取集合元素总数(如果指定键不存在返回0)
    $nums = Redis::scard($key);
    if($nums>0){
      //从指定集合中随机获取三个标题
      $post_titles = Redis::srandmember($key,3);
      dd($post_titles);
    }
    

    注:集合与列表的区别在于集合中是不允许重复元素出现的,没错,这就是数学中集合的互异性的体现;有序集合与集合的区别在于有序集合是有序的,这则是数学集合无序性的体现。

  • 相关阅读:
    LeetCode 230. Kth Smallest Element in a BST
    LeetCode 114. Flatten Binary Tree to Linked List
    LeetCode 222. Count Complete Tree Nodes
    LeetCode 129. Sum Root to Leaf Numbers
    LeetCode 113. Path Sum II
    LeetCode 257. Binary Tree Paths
    Java Convert String & Int
    Java Annotations
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/mzli/p/5748608.html
Copyright © 2011-2022 走看看