タグ

redisに関するdmizuno55のブックマーク (14)

  • システム開発で得たRedis利用ノウハウ | フューチャー技術ブログ

    こんにちは。初投稿です。 2012年新卒入社の竹内です。入社当時を振り返るとOracle10g,11gを良く利用していおり、データモデリングなどテーブル設計が好きで、2018年4月ぐらいまでRDBとバッチに浸ってました。 さて、現在プロジェクトでRedisを使っているのですが、いままでRDB人間だっただけにKVSやRedisならではの特徴に四苦八苦してます。 苦しんだ分、色々な知見を得ることができているので、その内容をご紹介します! 対象者 Redisの業務システム導入を検討している方 RDBとRedisの違いを知りたい方 現場的なRedisの利用方法を知りたい方 書いてないこと データ型やコマンドなど、HelloWorld的に公式ドキュメントを見て得られる情報 インストールなど、Redisを利用できるまでの手順 フェイルオーバーやバックアップをはじめとする運用に関する内容 データ永続化に

    システム開発で得たRedis利用ノウハウ | フューチャー技術ブログ
  • Is there any limit on the number of arguments that redis commands such as ZADD or HMGET can handle?

    dmizuno55
    dmizuno55 2020/06/30
    “PROTO_MAX_QUERYBUF_LEN”
  • redis sortコマンドの使い方まとめ - Qiita

    SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] 参考 redis command - sort 使い方の確認方法 次のサンプルデータを使用してsortコマンドの使い方を確認します。 サンプルデータ 果物データ 「果物データ」は果物の名前、重量、糖度などをハッシュで格納します。 ハッシュのキー名はfruits:に続けて果物の名前を付加します。 例えば、りんごのハッシュキーは下記のようになります。

    redis sortコマンドの使い方まとめ - Qiita
  • Redisでオブジェクトを検索方法について - AltPlus Tech Blog

    ※この記事は「AltPlus Advent Calendar 2016」の13日目の記事です。 こんにちは、オルトプラスのニャムです。 ベトナムの新卒で日語がまだ不慣れですので、読みにくかったらすみません! Redisを学び始めた時、Mysqlに慣れていた私はこれを結構使いづらいと思っていました。 「キーバリューだけでどうやってMysqlのような複雑なクエリを実行できるだろう??」 色々調べてみて、こんなクエリの実行方法を見つけました! 背景: 例えば、 "make"、 "model"、 "color"、 "topSpeed"、 "manufactureDate"などのプロパティを持つCarsオブジェクトがあるとして、Redisに保存します: redis> HMSET cars:1 make Ferrari model 458 color red topSpeed 202mph 複数の基

    Redisでオブジェクトを検索方法について - AltPlus Tech Blog
  • More Transactional Redis (2) - Lua Scripting in Action - 愛と勇気と缶ビール

    前回の記事: More Transactional Redis (1) - Redis is not a transactional storage - 愛と勇気と缶ビール Lua Scriptingでatomicな処理を実現できるぜい!ってとこで前回の記事は終わっていました。今回は、Lua Scriptingを試す際に踏むとよいであろうstep、実用する際のTIPSなどを書いていきます。 おそらく、多くの方はLua以外の言語で書かれたWebアプリからRedisのLua Scriptingを利用することになるでしょう。実際にホスト言語に文字列として埋め込むか別ファイルにするかは別にして、Redis上でLuaを動かすことは即ち ホスト言語(Perl, Ruby, Python, etc, ...) -> (Redis) -> ゲスト言語(この場合はLua)という異言語間のコミュニケーションを

    More Transactional Redis (2) - Lua Scripting in Action - 愛と勇気と缶ビール
  • Redisでツリー構造を扱うなら「入れ子区間モデル」でOK - Qiita

    「ソート済セット型」すげえいい。 これね 「入れ子区間モデル」が超容易かつ効率的に実装できる。 んでもって、これね。リンク先に書いてない「入れ子区間モデル」の凄いところをひとつ挙げておこう。それは、ある枝の配下のノードを「乱択」するアルゴリズムが書けるのだ。 あと、これは元々RDBSで入れ子区間モデルが有効な理由でもあるのだが、操作する区間ごとにロックをかけられるのが素敵なのだ。 これだけ書いただけでも、鋭い人は判ってくれると思う。 まあ、Redisにツリー構造を入れるなら、このやり方がベストだと思うわけよ。ただね、ちょっと弄ってみた結果、子ノードが指定された時の親ノード獲得の効率が悪いところが気になる。あと、親ノードを特定するまで、まともにロックがかけられないのもイタイ。だから、隣接リストモデルを兼用して親を得る必要があるときにはそっちを参照する方が良いかもしれない。 後でちゃんと書く。

    Redisでツリー構造を扱うなら「入れ子区間モデル」でOK - Qiita
  • Redisで超簡単にReader-Writer-Lockを実装する方法 - Qiita

    考え方と原理 私のロック魂をアピールさせてください!(多田李衣菜) RedisでSETNXを使えば簡単に排他ロックが実現できる。MSETNXを使えば、複数のロックを同時に評価できる。それは良いのだが、並行実行性を考えると、なるべく競合しない方が良いよね。データ構造でも、競合しにくいように考えていると思うので、制御の方でも競合しにくい作りにしよう。 その代表が、Reader-Writer-Lock。読み出しはいくらでも競合したまえ。書き込みは別だ。というやつだね。賢いロックの賢いついでにreaderlock獲得中のコンテクストが、writerlockに昇格できるってのいいかも、と思ったけど、それ、ちょっと考えたら、同じことを考えてる奴が複数いたら、デッドロックになるじゃんね? 書き込みをしたい人が、書き込みをするための情報を得るために読み出す場合、読み出しの段階からwriterlock獲得し

    Redisで超簡単にReader-Writer-Lockを実装する方法 - Qiita
    dmizuno55
    dmizuno55 2017/03/21
    “Redisでツリー構造を扱うなら「入れ子区間モデル」でOK”
  • Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ

    はじめまして。アカツキのサーバエンジニアのこうのです。サウザンドメモリーズで主にサーバ側のプログラム・インフラを担当しています。 今回はサウザンドメモリーズで発生した、Redisにまつわるトラブルを紹介したいと思います。 TL;DR RedisのSorted SetのZRANGE系のコマンドは計算量がO(log(N)+M)(Mは取得結果の数)になるので、 適切にLIMITをつけるなどして取得結果数を制限しないと負荷が高くなってしまいますよ、というお話。 背景 サウザンドメモリーズではバトル出撃時に一緒に出撃するフレンドやランダムに選ばれた他のプレイヤーを選択することができます。 この「ランダムに選ばれた他のプレイヤー」の選択ロジックに弊社ではRedisのSorted Setを利用した実装を行っています。 ランダムといってもすべてのプレイヤーからランダムで選んでしまってはアクティブでないプレ

    Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ
  • Redis 2.8 の Sentinel の動きを検証してみた - chrone's external storage

    Redis 2.8 の redis-sentinel によるレプリケーションの自動フェイルオーバーについて、 比較的発生しそうな障害を想定して動作検証してみました。 結論から redis-server の自動再起動を構成している場合は要注意。 daemontools とか。 Master が落ちた後すぐ(例えば数秒)に再起動してきた場合、 再び Master としてレプリケーションに参加します。 よって、Master 再起動の前後でデータに差異があった場合でも、 再起動後のデータをもとに同期される為、データが破壊される可能性があります。 これを回避する為には、Sentinel により sdown/odown として認識されるのを待ってからインスタンスを復帰させるようにします。 復帰が早すぎると、障害(sdown/odown)ではなく再起動(reboot)と認識します。 レプリケーションの再

  • Redis の永続化 — Redis Documentation (Japanese Translation)

    このページでは Redis の永続化について、技術的な説明を提供します。すべての Redis ユーザーはこの内容に目を通しておくことを推奨します。Redis の永続化と障害耐性の保証について、より広範に概観するため Redis persistence demystified も参照すると良いでしょう。 Redis の永続化¶ Redis は、守備範囲の異なる永続化オプションを提供します: RDB 永続化は、ある時点のデータセットのスナップショットを、特定の間隔ごとに作成します。 AOF 永続化では、サーバーが受け付けたすべての書き込みコマンドを記録します。サーバーは起動時にログをリプレイし、元のデータを再構成します。コマンドは Redis プロトコルと同じフォーマットを使い、追記方式で記録されます。ログが大きくなりすぎたら、Redis はバックグラウンドでそれをリライトします。 サーバーが

  • Redis Sentinelで自動フェイルオーバー - Qiita

    この投稿は自分のブログ記事からRedis Sentinel関連の項目だけ抜粋したものです。追記事項があればブログの方に書いていきます。 「Redisの監視/分析系ツールまとめ」 http://rest-term.com/archives/3045/ Redisプロジェクトで開発されている、Redisサーバの死活監視/通知および自動フェイルオーバー機能を提供する管理サーバ(redis-sentinel)です。v2.4.16または2.6.0-rc6以降のバージョンから利用可能になりました。公式ドキュメントを参考にしつつ動作確認をします。 環境: CentOS 5.9 (x86_64), Redis 2.6.10 構成 ここでは2つのホストでSlaveを2プロセス、Sentinelを3プロセスの構成で試します。 Master db0:6379 Slave db0:6380, db1:6379

    Redis Sentinelで自動フェイルオーバー - Qiita
  • moco(beta)'s backup: Redis Sentinel を動かしてみる (1)

    Redis Sentinel は、Redis インスタンスを複数立ち上げて、マスター・スレーブ構成をとる際の、HA周りを支援する仕組みです。2014/5 現在 “beta stage, active development” ですが、プロダクション環境での利用も可能 (already usable) のようです。 Redis Sentinel は具体的に、以下の機能を提供します。 インスタンスのモニタリング(死活監視)Sentinel API による障害通知(※プッシュ通知ではないので要ポーリング)自動フェイルオーバー(マスターのDOWN検知とスレーブのマスター昇格)サービスディスカバリ(≒ 現在のマスターのアドレスはどれか)設定項目など、詳しいことは後回しにして、とりあえずモニタリングと自動フェイルオーバーを試してみたメモ。 【参考】 すでに試している・使っている方がたくさんいますが、日

  • Redisの機能 — redis 2.0.3 documentation

    Redisの機能¶ Redisを見るのは初めてでしょうか?ここでは、重要な機能と、多くの情報へのリンクが書かれています。 スピード¶ RedisはANSI Cで書かれていて、すべてのデータセットをメモリ内に読み込むため、危険なほどのスピードで動作します!エントリーレベルのLinuxマシンで、110,000 SET/秒、81,000 GET/秒を達成することができます。これについては、 speed を参照してください。 また、Redisはコマンドの パイプライニング をサポートしているため、複数の値を1つのコマンドで取得したり設定できるため、クライアントライブラリとの通信をスピードアップすることができます。 永続化¶ すべてのデータがメモリ上にあり、変更は非同期でディスク上に書き込まれます。書き込むタイミングについては、最後に保存してからの経過時間および、アップデートの回数、もしくはその両方

  • ソート済みセット型 — redis 2.0.3 documentation

    ソート済みセット型¶ Redisソート済みセット型はRedisセット型とよく似ていて、Redis文字列型の集合となっています。違いはソート済みセットのすべてのメンバはスコアに関連したハッシュ値を持っています。元となっているスコアを用いてメンバを順番に並べます。 Redisソート済みセットに新しいメンバを追加するには要素のスコアを指定して ZADD コマンドを用います。すでにソート済みセット内に存在するメンバに対して異なるスコアを用いて ZADD を呼ぶと、順番が正しくなるようにその要素を正しい場所に移動させます。 Redisソート済みセットからある範囲の要素を取得することが可能です。これはRedisリストの LRANGE と同様に ZRANGE コマンドを用います。 またあるスコアの範囲で要素を取得または削除することも可能で、それには ZRANGEBYSCORE や ZREMRANGEBY

  • 1