Redisのニュースリリースおよびサブスクリプションと取引メカニズム

Redisのニュースリリースおよびサブスクリプションと取引メカニズム

購読リリース

PUBLISH SUBSCRIBE

メッセージキューとポストメッセージを購読します。

# 首先要打开redis-cli shell窗口 一个用于消息发布 一个用于消息订阅
# SUBSCRIBE 订阅一个频道,如果频道不存在 就新增一个
# 返回参数 表示 第一个是命令 第二个是频道名称 第三个表示当前订阅该频道的数量
127.0.0.1:6379> SUBSCRIBE  mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1

# 在另外一个shell窗口 进行消息发布
127.0.0.1:6379> PUBLISH mychannel "hello world"
(integer) 1

# 在回到之前的shell 窗口 我们可以看到消息已经被订阅成功了
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
# 下面是本次接受到消息
1) "message"
2) "mychannel"
3) "hello world"

UNSUBSCRIBE

UNSUBSCRIBE:退会。

# 第三个返回值表示当前没有订阅者订阅该频道
127.0.0.1:6379> UNSUBSCRIBE mychannel
1) "unsubscribe"
2) "mychannel"
3) (integer) 0

PSUBSCRIBE PUNSUBSCRIBE

よる世帯が加入したり退会ワイルドカード。

127.0.0.1:6379> PSUBSCRIBE my*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "my*"
3) (integer) 1
# 在另外一个Shell发布消息
127.0.0.1:6379> PUBLISH mychannel "hello world"
(integer) 1
127.0.0.1:6379> PUBLISH mynewchannel "hello world new"
(integer) 1
# 此时第一个Shell窗口就可以到如下的订阅消息
1) "pmessage"
2) "my*"
3) "mychannel"
4) "hello world"
1) "pmessage"
2) "my*"
3) "mynewchannel"
4) "hello world new"

業務

Redisのサポートサービスは、四つの基本的なコマンドに基づいています。

  • MULTIオープン情勢
  • EXECの執行部
  • DISCARD総務を放棄
  • WATHC監視

MULTI EXEC

MULTIコマンドは、MULTIを実行した後に、クライアントがEXECを実行したときに、キュー内のすべてのコマンドが実行されますが、これらの命令はすぐに実行されませんが、キューに登録され、サーバーに複数の命令を送ることができ、ビジネスを開きます。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR age
QUEUED
127.0.0.1:6379> INCRBY age 3
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 1
2) (integer) 4
127.0.0.1:6379> get age
"4"
127.0.0.1:6379> del age 
(integer) 1
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set age 18
QUEUED
127.0.0.1:6379> INCR age
QUEUED
127.0.0.1:6379> INCRBY age 3
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) (integer) 19
3) (integer) 22
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> 

トランザクションエラーがあります

  • あなたはそれも入力EXECコマンドならば、与えられているチームにしている場合、トランザクションは実行されません。
  • チームが成功したが、実行時にエラーが、それは、エラーがスキップされる適切な命令を実行する場合は、それが取引を終了しません。
## 事务中出现错误的情况 入队错误 事务不执行
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR age
QUEUED
# 写错指令 出现错误提示
127.0.0.1:6379> INCR age 3
(error) ERR wrong number of arguments for 'incr' command
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get age
"22"

##  事务中出现错误的情况 入队正确 执行错误 事务正常执行
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR age
QUEUED
127.0.0.1:6379> INCRBY age abc
QUEUED
127.0.0.1:6379> INCRBY age 4
QUEUED
127.0.0.1:6379> exec
1) (integer) 23
2) (error) ERR value is not an integer or out of range
3) (integer) 27
127.0.0.1:6379> get age
"27"

2番目のエラーが見ることができる例としては、Redisのトランザクションのロールバックはサポートされていません。Redisのコマンドはシンプルに保ち、高速にすることができ、障害がエラーをプログラムすることによって引き起こされ、そしてこれらのエラーは、開発プロセスに記載されていなければならない、加えて、Redisのは、内部のRedisを維持するためにロールバックできるようサポートしていない検討しているためです。

DISCARD

トランザクションを放棄します。

127.0.0.1:6379> get age
"22"
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR age
QUEUED
127.0.0.1:6379> DISCARD
OK
127.0.0.1:6379> get age
"22"

時計

CAS操作をRedisの。WATCHは、EXECコマンドニーズを条件付きで実行されるようになります。この前提が満たされない場合の取引のみの前提の下で修正されていないすべての監視対象のキーで実行することができ、トランザクションは実行されません。EXECコマンドは、キー上WATCHはキャンセルされますとき。

WATCHは鍵が監視対象キーはEXECの実行前に変更されるのいずれか1つ以上が存在する場合、トランザクション全体がトランザクションが失敗したことを示すために、nilの返信EXECリターンをキャンセルされます、「監視対象」ことになるです。

# 第一个窗口
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> WATCH age
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set age 19
QUEUED
# 在第二个窗口 设置
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> get age
"20"
# 在第一个窗口执行事务 因为age已经被更改了,所以本次事务执行失败
127.0.0.1:6379> EXEC
(nil)


## 被监控的Key没有变化时 事务可以正确执行
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> WATCH age
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set age 25
QUEUED
127.0.0.1:6379> exec
1) OK
127.0.0.1:6379> get age
"25"

これらは、Redisの中にパブリケーションに対するサブスクリプションと共通取扱説明書の業務であり、それ以上の他の命令は、公式ウェブサイトを参照することができますRedisの公式サイト、読んでくれてありがとう、私はあなたの助けを願っています。

おすすめ

転載: www.cnblogs.com/enjoyitlife/p/11972110.html