乐趣区

关于laravel:laravel操作redis和缓存操作

一:操作 redis

1:redis 拓展装置

composer require predis/predis

或者你也能够通过 PECL 装置 PhpRedis PHP 扩大, 装置办法比较复杂, 集体不举荐

2:配置 redis

在 config/database.php 文件中配置 redis

(1):单个 redis 配置

'redis' => ['client' => env('REDIS_CLIENT', 'predis'),// 别名, 如果你装置的是 PhpRedis,将 client 值改为 phpredis

    'default' => ['host' => env('REDIS_HOST', '127.0.0.1'),//redis 服务器主机
        'password' => env('REDIS_PASSWORD', null),//redis 服务器明码
        'port' => env('REDIS_PORT', 6379),//redis 服务器端口
        'database' => env('REDIS_DB', 0),
    ],

    'cache' => ['host' => env('REDIS_HOST', '127.0.0.1'),//redis 服务器主机
        'password' => env('REDIS_PASSWORD', null),//redis 服务器明码
        'port' => env('REDIS_PORT', 6379),//redis 服务器端口
        'database' => env('REDIS_CACHE_DB', 1),
    ],

],

(2):redis 集群配置

'redis' => ['client' => env('REDIS_CLIENT', 'predis'),

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

],

3:操作 redis

(1):设置 redis

Redis::set('val1','asdasd');

(2):获取 redis

Redis::get('key')

(3):删除 redis

Redis::del('key');

二:缓存操作

1: 缓存配置

laravel 框架的缓存配置在 config/cache.php 文件中,配置参数有:

(1):配置 cache 的驱动

'default' => env('CACHE_DRIVER', 'file'),Laravel 自带了几个不错且可开箱即用的驱动 

• file – 将 Session 保留在 framework/cache/data 中。
• cookie – Session 保留在平安加密的 Cookie 中。
• database – Session 保留在关系型数据库中。
• memcached / redis – Sessions 保留在其中一个疾速且基于缓存的存储系统中。
• array – Sessions 保留在 PHP 数组中,不会被长久化。

(2):依据你所选的驱动配置

'stores' => [

        'apc' => ['driver' => 'apc',],

        'array' => ['driver' => 'array',],

        'database' => [
            'driver' => 'database',
            'table' => 'cache',
            'connection' => null,
        ],

        'file' => [
            'driver' => 'file',
            'path' => storage_path('framework/cache/data'),
        ],

        'memcached' => [
            'driver' => 'memcached',
            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
            'sasl' => [env('MEMCACHED_USERNAME'),
                env('MEMCACHED_PASSWORD'),
            ],
            'options' => [// Memcached::OPT_CONNECT_TIMEOUT => 2000,],
            'servers' => [
                ['host' => env('MEMCACHED_HOST', '127.0.0.1'),
                    'port' => env('MEMCACHED_PORT', 11211),
                    'weight' => 100,
                ],
            ],
        ],

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

        'dynamodb' => [
            'driver' => 'dynamodb',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
            'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
            'endpoint' => env('DYNAMODB_ENDPOINT'),
        ],

    ],

• 如果你抉择了的 database 作为驱动的时,就须要批改 stores 内的 database 配置

'database' => [
    'driver' => 'database',
    'table' => 'cache',// 配置的缓存表名
    'connection' => null,// 连贯名, 这个是在 config/database.php 文件配置的, 不进行配置应用默认连贯的数据库
],

你抉择了 database 作为缓存驱动的话,在目录命令行执行

php artisan cache:table
php artisan migrate

这时候会在数据库生成一个 cache 表用于存储缓存数据

• 如果你抉择了 file 作为驱动时,就须要批改 stores 内的 file 配置

'file' => [
    'driver' => 'file',
    'path' => storage_path('framework/cache/data'),// 这里配置的是缓存数据保留地址
],

• 如果你抉择了 redis 作为驱动时,就须要批改 stores 内的 redis 配置

'redis' => [
    'driver' => 'redis',
    'connection' => 'default',//redis 的连贯名, 对应 config/database.php 文件的 redis 配置, 如果不进行配置应用默认的 redis 连贯配置
],

2:缓存操作

(1):设置缓存

Cache::put('key', 'value', $minutes);

// 将不存在于缓存中的数据放入缓存中,如果寄存胜利返回 true,否则返回 false
Cache::add('key', 'value', $minutes);

// 数据永恒存入缓存
Cache::forever('key', 'value');

// 获取 users 缓存, 如果不存在, 执行第三个参数,将返回值存入缓存
$value = Cache::remember('users', $minutes, function () {return DB::table('users')->get();});

// 获取 users 缓存, 如果不存在, 执行第三个参数,将返回值存入缓存并永恒贮存
$value = Cache::rememberForever('users', function() {return DB::table('users')->get();});

(2):获取缓存

$value = Cache::get('key')

// 传递第二个参数,用来指定如果查找的数据不存在时,你心愿返回的默认值
$value = Cache::get('key', 'default');

// 第二个参数传递 Closure 作为默认值。如果指定的数据不存在于缓存中,将返回 Closure 的后果
$value = Cache::get('key', function () {return DB::table(...)->get();});

// 判断缓存是否存在,如果值为 null 或 不存在返回 false
Cache::has('key')

(3):删除缓存

// 从缓存中获取到数据之后再删除它, 如果缓存中不存在该数据,则返回 null
$value = Cache::pull('key');
// 删除缓存
Cache::forget('key');
// 清空缓存
Cache::flush();

(4):缓存递增递加

increment 和 decrement 办法能够用来调整高速缓存中整数项的值。这两个办法都能够传入第二个可选参数,用来批示要递增或递加值的数量

留神:应用 increment 和 decrement 前提对应的缓存之前必须有缓存数据, 不然返回 NULL

Cache::increment('key');
Cache::increment('key', 2);
Cache::decrement('key');
Cache::decrement('key', 2);

(5):应用多种缓存形式

如果你想要应用多种缓存, 你能够应用上面这种模式操作缓存, 其余办法同理

$value = Cache::store('file')->get('foo');// 获取
Cache::store('redis')->put('bar', 'baz', 10);// 设置 
退出移动版