<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
private static $redis = null;
/*獲取redis對象*/
protected function getRedis(){
if(!self::$redis instanceof \Redis){
self::$redis = new \Redis();
self::$redis->connect(config('Redis.host'),config('Redis.port'));
self::$redis->auth(config('Redis.auth_password'));
self::$redis->select(0);
}
return self::$redis;
}
public function index2()
{
$this->init_redis();
/*******************列表(list)的一些操作**********************************/
$r = $this->redis->rpush('st_info','v1','v2');
$res = $this->redis->get('st_info');
$r = $this->redis->rpush('d1_list','v3','v4');
$r = $this->redis->rpush('d1_list','v5','v6');
$p = $this->redis->lpop('d1_list');
$p = $this->redis->lrange('d1_list',0,5);
/*******************集合(set)的一些操作**********************************/
$r = $this->redis->sadd('skey1','sv1','sv2',44,55);
$r = $this->redis->sadd('skey2','svs','svg',455,878,31,44,55);
$r = $this->redis->srem('skey1',11,22,33); //移除集合skey1中的一個或多個元素
$p = $this->redis->smembers('skey1'); //返回集合skey1的所有成員
$p1 = $this->redis->smembers('skey2'); //返回集合skey1的所有成員
$p = $this->redis->sismember('skey1','44'); //判斷sfsdf元素是否是集合skey1的成員
$p = $this->redis->smove('skey1','skey2','sv1'); //將sv1元素從skey1集合移動到skey2集合
$p = $this->redis->spop('skey2'); //移除并返回集合中的一個隨機元素
$p2 = $this->redis->srandmember('skey2'); //返回集合中的一個隨機元素(不移除)
$p2 = $this->redis->sinter('skey1','skey2'); //取到多個集合的交集
$p3 = $this->redis->sunion('skey1','skey2'); //取到多個集合的并集
$p4 = $this->redis->sdiff('skey1','skey2'); //取到多個集合的差集
$p5 = $this->redis->sinterstore('target_skey','skey1','skey2'); //等同于sinter,并把結果放到target_skey集合中。
$p6 = $this->redis->smembers('target_skey'); //返回集合skey1的所有成員
/***********************有序集合(sorted set)的一些操作********************************/
$r = $this->redis->zadd('zkey1',3,'aa',1,'bb',10,'cc1',7,'ee1');
$r = $this->redis->zadd('zkey2',1,'aa2',4,'bb2',6,'cc3',8,'ee2');
$r = $this->redis->zadd('zkey3',9,'aa3',2,'bb3','2.6','ee1','0.5','ee3');
$p = $this->redis->zrem('zkey1','aa','bb'); //移除有序集合zkey1中的一個或多個成員
$p = $this->redis->zcard('zkey1'); //返回有序集合key的基數(shù)
$p2 = $this->redis->zcount('zkey1',0,5); //返回有序集合zkey1中source值在0到5之間的成員數(shù)量
$p2 = $this->redis->zincrby('zkey1',3,'cc1'); //為有序集合zkey1的cc1成員的score加上增量3
$p3 = $this->redis->zscore('zkey1','cc1'); //返回有序集合中cc1成員的score值
$p3 = $this->redis->zrangebyscore('zkey1',0,5); //返回score值在區(qū)間的成員(從小到大)zrevrangebyscore是從大到小
$p3 = $this->redis->zrank('zkey1','cc1'); //返回cc1成員的排名(從小到大)
$p4 = $this->redis->zrevrank('zkey1','cc1'); //返回cc1成員的排名(從大到?。? $p3 = $this->redis->zremrangebyrank('zkey1',0,3); //移除指定排名(相當于按下標刪除)區(qū)間內(nèi)的所有成員,返回被移除成員的數(shù)量,zremrangebyscore按score值區(qū)間移除
$p1 = $this->redis->zrange('zkey1',0,5); //返回指定區(qū)間成員,順序從小到大
$p2 = $this->redis->zrange('zkey2',0,5); //返回指定區(qū)間成員,順序從小到大
$p3 = $this->redis->zrange('zkey3',0,5); //返回指定區(qū)間成員,順序從小到大
$p2 = $this->redis->zrevrange('zkey1',0,5); //返回指定區(qū)間成員,順序從大到小
$p4 = $this->redis->zinterstore('target_zkey',['zkey2','zkey3']); //計算交集
$p4 = $this->redis->zunionstore('target_zkey',['zkey2','zkey3']); //計算并集
/************************************事物和字符串(string)的一些操作*******************************************/
$this->redis->watch('key');//監(jiān)視一個或多個key,如果在執(zhí)行事物之前這個key被改動(可能有多個客戶端在操作這個key),事物將被打斷
$this->redis->multi();//用于標記一個事物塊的開始
$this->redis->set('string1','s_value1');
$this->redis->get('string1');
$this->redis->exists('apple');
$this->redis->setnx('apple','my_apple');
$this->redis->setnx('apple','my_apple2');
$this->redis->get('apple');
$this->redis->unwatch('key');//取消監(jiān)視
$this->redis->discard();//取消事物
$e = $this->redis->exec(); //執(zhí)行事物,返回每條命令執(zhí)行結果組成的數(shù)組
pr($e);
/*Array
(
[0] => 1
[1] => s_value1
[2] => 1
[3] =>
[4] =>
[5] => my_apple
)
* */
$this->redis->lpush('jjkey',111,222,333);
echo $this->redis->type('jjkey').'<br><hr>';
pr($this->redis->lrange('jjkey',0,5));
$this->redis->set('jjkey','dsfffffffffffffffff');
echo $this->redis->get('jjkey').'<br><hr>';
echo $this->redis->type('jjkey').'<br><hr>';
$this->redis->setex('str11',3,'vvv1');//把key的值設置為3秒,并將key的生存時間設為3秒
$this->redis->set('str22','vvv22222');
$this->redis->setrange('str22',20,'ccc222');//從偏移量開始填充字符串,會覆蓋原來的
var_dump($this->redis->get('str22'));//vvv22222ccc222
# 情況2:對空字符串/不存在的ke y進行SETRANGE
$this->redis->EXISTS('empty_string');//bool(false)
$this->redis->SETRANGE('empty_string', 5 ,"Redis!"); # 對不存在的key使用SETRANGE //int(11)
var_dump($this->redis->get('empty_string')); # 空白處被"\x00"填充 #"\x00\x00\x00\x00\x00Redis!" //return string(11) "Redis!"
$a = ['s1'=>'v1','s2'=>'v2'];
$this->redis->mset($a);//同時設置一個或多個key-value對,會覆蓋原來已存在的key值,如果想不覆蓋,需要使用msetnx
pr($this->redis->mget(['s1','s2']));
/*
* Array
(
[0] => v1
[1] => v2
)
* */
//======================================SETBIT===========================================//
$bit_val=67;
echo decbin($bit_val).'<br>'; //1000011
var_dump($this->redis->SETBIT('bit',1,1));//int(0) 空位上都是0
var_dump($this->redis->SETBIT('bit',2,0));//int(0)
var_dump($this->redis->SETBIT('bit',3,0));//int(0)
var_dump($this->redis->SETBIT('bit',4,0));//int(0)
var_dump($this->redis->SETBIT('bit',5,0));//int(0)
var_dump($this->redis->SETBIT('bit',6,1));//int(0)
var_dump($this->redis->SETBIT('bit',7,1));//int(0)
var_dump($this->redis->GET('bit')); //string(1) "C" ,二進制為:1000011 ,ASCII:67
var_dump($this->redis->GETBIT('bit', 6 )); //int(1) 取出第6位(從左到右)為“1”
var_dump($this->redis->SETBIT('bit',5,1));//int(0) 把第5位的0改為1
var_dump($this->redis->SETBIT('bit',6,0));//int(1) 把第6位的1改為0
var_dump($this->redis->GET('bit')); //string(1) "E ,二進制為:1000101,ASCII:69l
var_dump(decbin(ord($this->redis->GET('bit')))); //1000101
$key = $this->redis->randomkey();//隨機返回一個key
$p = $this->redis->move('s1',0);//移動指定的key到db庫中去
$p = $this->redis->rename('s2','new_s2');
$p = $this->redis->object('ENCODING','new_s2');
$this->redis->lpush('website2',30,'1.5',44,15);
$this->redis->flushall();
$redis_sort_option = [
'by' => 'user_level_*',#按這個key來排序
'sort' => 'desc',
'get' => ['#','user_name_*','user_level_*'],//#代表輸出原有的key-user_id
'store'=> 'target2'
];
$p = $this->redis->SORT('user_id',$redis_sort_option);
$this->redis->expire('target2',6);
$p2 = $this->redis->lrange('target2',0,20);
$p = array_chunk($p,3);
pr($p);
$p = $this->redis->ping();#測試時候使用
$p = $this->redis->echo('sssssssssssssssss');#測試時候使用
#quit 關閉連接
$p = $this->redis->LASTSAVE();//返回最后一次操作成功的時間,以unix時間戳表示
$p = date('Y-m-d H:i:s',$p);
$p = $this->redis->dbsize(); //返回當前數(shù)據(jù)庫的key的數(shù)量
$p = $this->redis->shutdown();
$p = $this->redis->info(); //返回redis服務器的各種統(tǒng)計信息和統(tǒng)計值
$p = $this->redis->monitor(); //報錯
pr($p);
$this->redis->hmset('test',['name'=>'tank','sex'=>"man"]);
pr( $this->redis->sMembers('citys'));
/*Array(
[name] => tank
[sex] => man
)*/
}
tp5使用redis
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 利用php(以及開源工具)實現(xiàn)爬蟲 流程說明 從數(shù)據(jù)庫或者循環(huán)構建爬蟲的url(包括分頁參數(shù))** 分段取出使用多...
- 利用php(以及開源工具)實現(xiàn)爬蟲 流程說明 從數(shù)據(jù)庫或者循環(huán)構建爬蟲的url(包括分頁參數(shù))** 分段取出使用多...
- 一 、//連接redis use think\Cache; 可以用Tp5自帶的Cache操作redis funct...
- 其實想寫個博客系統(tǒng)很久了就是一直拖拖拖了好久,從2017年初拖到了今年清明節(jié)才打算花點時間去寫一個。寫這個博客差不...