検索
PHP操作 Redis詳細事例Jan 23, 2017 pm 03:39 PM
phpredis

$redis = new Redis();

接続、オープンリンクredisサービス

パラメータ

host:文字列、サービスアドレス

port:int、ポート番号

timeout:float 、リンク期間 (オプション、デフォルトは 0、リンク時間に制限なし)

注: redis.conf にも時間があります。デフォルトは 300 です

pconnect、アクティブに閉じられないリンクを開きます

を参照してください。上記

setOption redisのモードを設定する

getOption redisで設定されているモードを表示する

ping 接続状態を表示する

get 特定のキーの値(文字列値)を取得する

キーが存在しない場合はfalseを返す

set キーと値(文字列値)を書き込む

書き込みに成功したらtureを返す

setex 生存時間付きの値を書き込む

$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.

setnx 重複しているかどうかを判定し、値を書き込む

$redis->setnx('key', 'value');
$redis->setnx('key', 'value');

delete指定されたキーの値

削除されたキーの数値を返します(long integer)

$redis->delete('key1', 'key2');
$redis->delete(array('key3', 'key4', 'key5'));

キーの生存時間を取得します

persist

生存時間が期限切れになったキーを削除します

キーの有効期限が切れた場合は true、期限切れの場合は false期限切れではありません

mset (redis バージョン 1.1 以降でのみ使用可能))

同時に複数のキーに値を割り当てます

$redis->mset(array('key0' => 'value0', 'key1' => 'value1'));

multi、exec、discard

トランザクション モードを開始または終了します

パラメータRedis::MULTI または Redis::PIPELINE を指定できます。デフォルトは Redis::MULTI です

Redis:: MULTI: 複数の操作を 1 つのトランザクションとして実行します

Redis::PIPELINE: (複数の) 実行コマンドをサーバーに送信しますシンプルかつ高速ですが、アトミック性の保証はありません

discard: トランザクションを削除します

戻り値

multi() は、redis オブジェクトを返し、マルチモード モードに入ります。マルチモード モードに入ると、すべてのメソッドが呼び出されます。 future は、exec() メソッドが呼び出されるまで、同じオブジェクトを返します。

監視、監視解除 (コードをテストした後、前述の効果は達成できません)

キーの値が他のプログラムによって変更されているかどうかを監視します。このキーが watch と exec (メソッド) の間で変更されると、この MULTI/EXEC トランザクションの実行は失敗します (false を返す)

unwatch は、こ​​のプログラムによって監視されているすべてのキーをキャンセルします

パラメータ、キーのペアのリスト

$redis->watch('x');
$ret = $redis->multi() ->incr('x') ->exec();
subscribe *

メソッドのコールバック。この方法は将来変更される可能性があることに注意してください

publish *

コンテンツを特定のチャンネルに公開します。このメソッドは、キーが存在するかどうかを判断するために将来変更される可能性があることに注意してください

exists

。 true

incrがあり、falseではない場合、incrBy

keyの値は1ずつ増加します。2番目のパラメータが入力されている場合、2番目のパラメータの値は増加します

$redis->incr('key1');
$redis->incrBy('key1', 10);

decr、decrBy

が減算され、使用方法はincrと同じ

getMultiple

パラメータを渡す

キーで構成される配列

パラメータを返す

キーが存在する場合は値を返し、存在しない場合はfalseを返す

$redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); $redis->getMultiple(array('key1', 'key2', 'key3'));
$redis->lRem('key1', 'A', 2);
$redis->lRange('key1', 0, -1);

関連する操作をリストする

lPush

$redis->lPush(key, value);

という名前に値

rPush

$redis->rPush(key, value);

をもつ要素をkeyという名前のリストの左(先頭)に追加します

rPush

$redis->lPushx(key, value);

lPushx/をもつ要素を追加しますrPushx

$redis->lPop('key');

をkeyという名前のリストの右(末尾)に 値valueを持つ要素をリストの左(頭)/右(末尾)に追加します 値が既に存在する場合は追加されません

lPop /rPop

$redis->blPop('key1', 'key2', 10);

左(先頭)/右(尾)からkeyという名前のリストを出力)、要素

blPop/brPop

$redis->lSize('key');

のlpopコマンドのブロック版を削除します。つまり、タイムアウトが 0 の場合、key i という名前のリストが存在しないか、リストが空の場合、コマンドは終了します。 timeout>0 の場合、上記の状況が発生した場合は、timeout 秒間待ちます。問題が解決しない場合は、keyi+1 から始まるリストに対して Pop 操作を実行します

lSize

$redis->lGet('key', 0);

key という名前のリストに含まれる要素の数を返します

lIndex, lGet

$redis->lSet('key', 0, 'X');

keyという名前のリストのインデックス位置にある要素を返します

lSet

$redis->lRange('key1', 0, -1);

keyという名前のリストのインデックス位置にある要素をvalueに代入します

lRange, lGetRange

$redis->lTrim('key', start, end);

keyという名前の要素を返しますリストの開始と終了の間の要素 (終了は -1、すべてを返す)

lTrim、listTrim

$redis->lRem('key', 'A', 2);

key という名前のリストをインターセプトし、開始と終了の間の要素を保持します

lRem、lRemove

$redis->delete('key1'); $redis->lInsert('key1', Redis::AFTER, 'A', 'X'); $redis->lPush('key1', 'A'); $redis->lPush('key1', 'B'); $redis->lPush('key1', 'C'); $redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
$redis->lRange('key1', 0, -1);
$redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
$redis->lRange('key1', 0, -1);
$redis->lInsert('key1', Redis::AFTER, 'W', 'value');

削除される count の要素value は、key という名前のリスト内の値です。 count は 0、値を持つすべての要素を削除します、count>0 は値を持つ count 要素を最初から最後まで削除します、count

lInsert

キーのあるリストに、ピボットの値で値を見つけ、パラメーター Redis::BEFORE | Redis::AFTER に従って、新しい値がピボットの前に配置されるか後ろに配置されるかを決定します。キーが存在しない場合は挿入されません。ピボットが存在しない場合は、-1

$redis->delete('x', 'y');
$redis->lPush('x', 'abc'); $redis->lPush('x', 'def'); $redis->lPush('y', '123'); $redis->lPush('y', '456'); // move the last of x to the front of y. var_dump($redis->rpoplpush('x', 'y'));
var_dump($redis->lRange('x', 0, -1));
var_dump($redis->lRange('y', 0, -1));
string(3) "abc"
array(1) { [0]=> string(3) "def" }
array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }

rpoplpush

Return を返し、srckey という名前のリストの末尾の要素を削除し、その要素を先頭に追加します。 dstkeyという名前のリスト

$redis->sAdd(key , value);

SET操作に関連します

sAdd

keyという名前のセットに要素の値を追加します。値が存在する場合は書き込まず、falseを返します

$redis->sAdd('key1' , 'set1');
$redis->sAdd('key1' , 'set2');
$redis->sAdd('key1' , 'set3');
$redis->sRem('key1', 'set2');

sRem、sRemove

内の要素の値を削除します。 key という名前のセット

$redis->sMove(seckey, dstkey, value);

sMove

srckey という名前のコレクションから dstkey という名前のコレクションに value 要素を移動します

$redis->sIsMember(key, value);

sIsMember, sContains

🎜 key という名前のコレクションに value 要素があるかどうかを調べます (存在する場合)。偽りはありません🎜
$redis->sInterStore('output', 'key1', 'key2', 'key3')
🎜sCard、sSize🎜

返回名称为key的set的元素个数

sPop

随机返回并删除名称为key的set中一个元素

sRandMember

随机返回名称为key的set中一个元素,不删除

sInter

求交集

sInterStore

求交集并将交集保存到output的集合

$redis->sInterStore('output', 'key1', 'key2', 'key3')

sUnion

求并集

$redis->sUnion('s0', 's1', 's2');

s0,s1,s2 同时求并集

sUnionStore

求并集并将并集保存到output的集合

$redis->sUnionStore('output', 'key1', 'key2', 'key3');

sDiff

求差集

sDiffStore

求差集并将差集保存到output的集合

sMembers, sGetMembers

返回名称为key的set的所有元素

sort

排序,分页等

参数

'by' => 'some_pattern_*',
'limit' => array(0, 1),
'get' => 'some_other_pattern_*' or an array of patterns,
'sort' => 'asc' or 'desc',
'alpha' => TRUE,
'store' => 'external-key'

例子

$redis->delete('s'); $redis->sadd('s', 5); $redis->sadd('s', 4); $redis->sadd('s', 2); $redis->sadd('s', 1); $redis->sadd('s', 3);
var_dump($redis->sort('s')); // 1,2,3,4,5
var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5

string命令

getSet

返回原来key中的值,并将value写入key

$redis->set('x', '42');
$exValue = $redis->getSet('x', 'lol'); // return '42', replaces x by 'lol'
$newValue = $redis->get('x')' // return 'lol'

append

string,名称为key的string的值在后面加上value

$redis->set('key', 'value1');
$redis->append('key', 'value2');
$redis->get('key');

getRange (方法不存在)

返回名称为key的string中start至end之间的字符

$redis->set('key', 'string value');
$redis->getRange('key', 0, 5);
$redis->getRange('key', -5, -1);

setRange (方法不存在)

改变key的string中start至end之间的字符为value

$redis->set('key', 'Hello world');
$redis->setRange('key', 6, "redis");
$redis->get('key');

strlen

得到key的string的长度

$redis->strlen('key');

getBit/setBit

返回2进制信息

zset(sorted set)操作相关

zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

$redis->zAdd('key', 1, 'val1');
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 5, 'val5');
$redis->zRange('key', 0, -1); // array(val0, val1, val5)

zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

$redis->zAdd('key1', 0, 'val0');
$redis->zAdd('key1', 2, 'val2');
$redis->zAdd('key1', 10, 'val10');
$redis->zRange('key1', 0, -1); // with scores $redis->zRange('key1', 0, -1, true);

zDelete, zRem

zRem(key, member) :删除名称为key的zset中的元素member

$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zDelete('key', 'val2');
$redis->zRange('key', 0, -1);

zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出

$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zRevRange('key', 0, -1); // with scores $redis->zRevRange('key', 0, -1, true);
zRangeByScore, zRevRangeByScore
$redis->zRangeByScore(key, star, end, array(withscores, limit ));

返回名称为key的zset中score >= star且score

zCount

$redis->zCount(key, star, end);

返回名称为key的zset中score >= star且score

zRemRangeByScore, zDeleteRangeByScore
$redis->zRemRangeByScore('key', star, end);

删除名称为key的zset中score >= star且score

zSize, zCard

返回名称为key的zset的所有元素的个数

zScore

$redis->zScore(key, val2);

返回名称为key的zset中元素val2的score

zRank, zRevRank

$redis->zRevRank(key, val);

返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序

zIncrBy

$redis->zIncrBy('key', increment, 'member');

如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

zUnion/zInter

参数

keyOutput

arrayZSetKeys

arrayWeights

aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.

对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

Hash操作

hSet

$redis->hSet('h', 'key1', 'hello');

向名称为h的hash中添加元素key1—>hello

hGet

$redis->hGet('h', 'key1');

返回名称为h的hash中key1对应的value(hello)

hLen

$redis->hLen('h');

返回名称为h的hash中元素个数

hDel

$redis->hDel('h', 'key1');

删除名称为h的hash中键为key1的域

hKeys

$redis->hKeys('h');

返回名称为key的hash中所有键

hVals

$redis->hVals('h')

返回名称为h的hash中所有键对应的value

hGetAll

$redis->hGetAll('h');

返回名称为h的hash中所有的键(field)及其对应的value

hExists

$redis->hExists('h', 'a');

名称为h的hash中是否存在键名字为a的域

hIncrBy

$redis->hIncrBy('h', 'x', 2);

将名称为h的hash中x的value增加2

hMset

$redis->hMset('user:1', array('name' => 'Joe', 'salary' => 2000));

向名称为key的hash中批量添加元素

hMGet

$redis->hmGet('h', array('field1', 'field2'));

返回名称为h的hash中field1,field2对应的value

redis 操作相关

flushDB

清空当前数据库

flushAll

清空所有数据库

randomKey

随机返回key空间的一个key

$key = $redis->randomKey();

select

选择一个数据库

move

转移一个key到另外一个数据库

$redis->select(0); // switch to DB 0
$redis->set('x', '42'); // write 42 to x
$redis->move('x', 1); // move to DB 1
$redis->select(1); // switch to DB 1
$redis->get('x'); // will return 42

rename, renameKey

给key重命名

$redis->set('x', '42');
$redis->rename('x', 'y');
$redis->get('y'); // → 42
$redis->get('x'); // → `FALSE`

renameNx

与remane类似,但是,如果重新命名的名字已经存在,不会替换成功

setTimeout, expire

设定一个key的活动时间(s)

$redis->setTimeout('x', 3);

expireAt

key存活到一个unix时间戳时间

$redis->expireAt('x', time() + 3);

keys, getKeys

返回满足给定pattern的所有key

$keyWithUserPrefix = $redis->keys('user*');

dbSize

查看现在数据库有多少key

$count = $redis->dbSize();

auth

密码认证

$redis->auth('foobared');

bgrewriteaof

使用aof来进行数据库持久化

$redis->bgrewriteaof();

slaveof

选择从服务器

$redis->slaveof('10.0.1.7', 6379);

save

将数据同步保存到磁盘

bgsave

将数据异步保存到磁盘

lastSave

返回上次成功将数据保存到磁盘的Unix时戳

info

返回redis的版本信息等详情

type

返回key的类型值

string: Redis::REDIS_STRING
set: Redis::REDIS_SET
list: Redis::REDIS_LIST
zset: Redis::REDIS_ZSET
hash: Redis::REDIS_HASH
other: Redis::REDIS_NOT_FOUND
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール