最近在看redis的一些用法,下面就來(lái)說(shuō)說(shuō)我的使用歷程!redis在很多項(xiàng)目中使用頻率很高!而且技術(shù)的提升redis也是必會(huì)使用的!多做總結(jié),慢慢的吃成技術(shù)的‘胖紙’!
首先Redis的使用場(chǎng)景想必大家多多少少都了解一些了。比如新浪的首頁(yè)那么多模塊,那么多文章,如果讀數(shù)據(jù)庫(kù)是不是壓力特別大,反應(yīng)是不是特別慢?但是為什么新浪為什么能很快的響應(yīng)頁(yè)面?其中一部分功勞就是靠的Reids的緩存技術(shù)。
1.Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
2.Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
3.Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
Laravel中 使用的Redis
在使用 Redis 之前,你必須通過(guò) Composer 安裝 predis/predis 擴(kuò)展包
composer require "predis/predis" (直接安裝最新的即可)
然后配置 應(yīng)用程序的 Redis 設(shè)置都在 config/database.php 配置文件中。在這個(gè)文件里,你可以看到 redis 數(shù)組里面包含了應(yīng)用程序使用的 Redis 服務(wù)器:
'redis' => [
'cluster' => false,
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
],
STRING類型 - 寫入字符串類型的redis
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'STRING:TEST';
$value = 'Hello-World';
// 寫入一個(gè)字符串類型的redis
$info = \Redis::Set($key,$value);
dd($info);
return view('test');
}
}
讀取相應(yīng)的字符串
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'STRING:TEST';
// 讀取一個(gè)字符串類型的redis
$info = \Redis::get($key);
dd($info);
return view('test');
}
}
和redis語(yǔ)法同樣的 字串也有incr和decr等遞增、遞減...
HASH類型
存數(shù)據(jù)
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'HASH:TEST';
$names = ['id'=>'99',
'name'=>'AXiBa',
'age'=>'23',
'tel'=>'13995578699',
'addtime'=>'1231231233'];
// 將數(shù)據(jù)寫入hash
$info = \Redis::hMset($key,$names);
dd($info);
return view('test');
}
}
取數(shù)據(jù)(取所有)
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'HASH:TEST';
$names = ['id'=>'99',
'name'=>'AXiBa',
'age'=>'23',
'tel'=>'13995578699',
'addtime'=>'1231231233'];
// 取出hash里的數(shù)據(jù)
$info = \Redis::hGetall($key);
dd($info);
return view('test');
}
}
取數(shù)據(jù)(取個(gè)別字段)
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'HASH:TEST';
$names = ['id'=>'99',
'name'=>'AXiBa',
'age'=>'23',
'tel'=>'13995578699',
'addtime'=>'1231231233'];
// 取出hash里的 某一個(gè)字段的數(shù)據(jù)
$info = \Redis::hGet($key,'name');
dd($info);
return view('test');
}
}
// 判斷這個(gè)redis key是否存在
\Redis::exists($key);
SET類型
寫入一個(gè)無(wú)序集合(數(shù)據(jù)插入無(wú)順序)
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'SET:TEST';
$value = ['a','b','c','d','e'];
$info = \Redis::sadd($key,$value);
$info = \Redis::smembers($key);
dd($info);
return view('test');
}
}
求兩個(gè)集合的交集
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'SET:TEST';
$key1 = 'SET:TEST:1';
$value = ['a','b','c','d','e'];
$value1 = ['a','b','c','1','2'];
// 寫入另一個(gè)集合
\Redis::sadd($key1,$value1);
// 交集
$info = \Redis::sinter($key,$key1);
dd($info);
return view('test');
}
}
求兩個(gè)集合的并集
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'SET:TEST';
$key1 = 'SET:TEST:1';
$value = ['a','b','c','d','e'];
$value1 = ['a','b','c','1','2'];
// 并集
$info = \Redis::sunion($key,$key1);
dd($info);
return view('test');
}
}
求兩個(gè)集合的差集
class PhotoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$key = 'SET:TEST';
$key1 = 'SET:TEST:1';
$value = ['a','b','c','d','e'];
$value1 = ['a','b','c','1','2'];
// 差集
$info = \Redis::sdiff($key,$key1);
dd($info);
return view('test');
}
}
哪個(gè)key在前,就以哪個(gè)key的值為基準(zhǔn)。。
參考 redis中文官網(wǎng) http://www.redis.cn/