[TIL] # 40 Redis


時間はデータ交換の重要な部分だと思います.
将来的には、JOINを使用してDBへのアクセス回数を減らすために事前にキャッシュする
しかしselect relatedとprefetch relatedの2つの面では不足している.
プライマリ・データベースとして使用する以外は、
キャッシュではなくメモリからデータを取得してデータベースにアクセスします.
データの効率的な交換が可能

Redis


MONGO DBというNOSQLを聞いたことがありますが
Redisは初めて聞いた単語で、よくわかりません
まず実験をするために.
brew install redis
Reddisをインストールし、Reddisを実行

NOSQLは初めてなので何が違うのかわかりません🥲
まず、django-seedを使用して元のデータを処理します.
私たちは彼らのために3000のデータを作った.
loadtestを用いて実験を行う
loadtest -n 10 http://127.0.0.1:8000/spaces
全部で500回リクエストを出しましたが、結果は

20秒くらいかかりました
24個のリクエストが処理されたことを1秒で確認できます.
500人が入るのに20秒かかりますか?思い出した.
単純にmysqlでDB 1個だと500名もキツいでしょう.

Redis使用後


わあ.素晴らしいちょっと驚いた
まず,結果から見ると,速度が半分以上減少し,毎秒解決の要求があった.
明らかに増えた

Redisを使ってキャッシュしてデータをインポートするとこうなると思います.

Redisの使用

from django.core.cache import cache

class SpaceView(View):
    def get(self, post):
        context = cache.get('spaces')
        if not context:
            spaces = Space.objects.values("id", "name")
            context = {}
            for i in spaces:
                context[f'space_{i["id"]}'] = i
            cache.set('spaces', context)
        return JsonResponse(context)
まず、最初のテストのために、このようにビューを整理します.
Redisにキャッシュされたデータがある場合、
cache.setを使用してspacesという名前のキーにcontextを加える方法

cache.set(キー、値、有効期限)


有効期限を指定できます.指定しない場合は、永続的に保存されます.
Redis以外にもいい方法がたくさんあると思います.
本当にすごいみたい
どうして聞くともっと勉強しなければならないことがあるのですか.
開発者の世界は不思議すぎるようだ.
Django Viewコードを記述する場合はredisを使用します.