検索

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 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。Apr 17, 2025 am 12:22 AM

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

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ヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

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