プロジェクトリーダー知識学習--01-(Redisのメモリデータベース、Redisの、5つの共通のデータ・タイプのRedis:文字列/リスト/ハッシュ/セット/ ZSET、Pythonの操作のRedis、Redisのマスター・スレーブ構成)

1、Redisのメモリデータベース

背景
インターネット+ビッグデータ時代の到来により、従来のリレーショナルデータベースのデータトラフィックと会うの成長量で、もはや大規模なサイトすることができます。今回はすぐにデータベースサーバI / Oへの圧力を緩和するために、システムのパフォーマンス上のボトルネックを解決するためのコンポーネントのデータにアクセスするための方法が必要です。

データベースの開発の歴史

  • 1.インターネット+ビッグデータ時代の前に、いくつかの企業内情報管理システム、単一のデータベース・インスタンスは、システムのニーズに応えることができるようになり
    、単一のデータベース・インスタンスを

  • ユーザのシステムへのアクセス、データ量の増加の増加に伴い、データベース・システムの単一のインスタンスは、リードのニーズを満たすことができなかった。2.
    バッファ(メモリキャッシュを)+単一のデータベース・インスタンス

  • 3.リードキャッシュは、システムの圧力を緩和することができるが、圧力に書き込まれたデータの量は増加し続け、
    バッファ+ +データベースは、主分離器から読み出します

  • 4.再度データ量が増加し、別読み出し及び書き込み、メインボトルネックデータベースの書き込みライブラリ圧後、
    マスター+ + +サブライブラリ別個読み出し及び書き込みサブテーブルからキャッシュ・クラスタ・データベース

  • 5.インターネット+ビッグデータの時代には、リレーショナルデータベースは非常に良い、高並行性、高いリアルタイムの一部にアクセスすることはできませんし、データ形式は、データを固定されていません。メイン+サブライブラリデータベースクラスタのサブテーブルから+ +のNoSQL別読み書き

2 Redisの

Redisのデータを格納するための高性能、オープンソース、C言語の開発、キーのNoSQLデータベースです。

NoSQLの:だけではなく、SQL、非リレーショナルデータベースのRedis / MongoDBの/ HBaseのHadoopのを指し、
リレーショナルデータベース:MySQLの、オラクル、のSQLServer

Redisのプロパティ

  • 永続Redisのサポートデータは、メモリ内のデータがディスクに保存することができた場合、再起動が使用して再ロードすることができます
  • また、リスト、セットのデータ型を提供しながらのRedisは、だけではなく、単純なキーと値のデータ型をサポートしています
  • Redisのは、バックアップデータをサポートしています

Redisの使用は何ですか?
Redisの主な役割:高速アクセス

Redisのアプリケーションシナリオ
/スパイク/放送プラットフォーム/製品アップオンラインバディリストの親指ランキング/シングルサインオン

Redisのは、どのように使用するには?
公式サイトのアドレス:公式サイト
コマンドアドレス:コマンドアドレス

Redisの5つのデータタイプとシナリオ
の文字列/リスト/セット/ハッシュ/ ZSET

Redisのインストールと起動
Ubuntuシステムで

sudoのRedisのサーバーをインストールapt-getを

ビューヘルプコマンド
のRedisサーバ--help
ここに画像を挿入説明

Redisの編集設定ファイル
はsudo vimの/etc/redis/redis.confは
何の変化のデーモン化のはいをデーモン化しません
保存して終了します
ここに画像を挿入説明

スタート
のRedisサーバ
ここに画像を挿入説明

サービスsudoのサービスのRedisを開始開きます

閉じるサービスsudoのサービスRedisの停止

Windowsシステムで開いプロセスのRedis:直接抽出し、窓はデーモン化をサポートしていません。
ここに画像を挿入説明

Redisのさんのプロフィール

/etc/redis/redis.conf

Redisのはデーモンとして実行すると、それは/var/run/redis.pid内部へのpidファイルを書き込みます。
デーモン化なし

あなたが0に設定されている場合、ポート番号、デフォルトは6379でリスニング、Redisのソケットに接続されていない任意のクライアントに耳を傾けます。
ポート6379

データベースのセット数。
データベース16

回数与えられた時間間隔とディスクへの書き込みデータを保存し
、次の例を意味している。
少なくとも一つのキーと値の変更された場合は、その後、900秒内に格納され
、少なくとも300秒がある場合は、値の変更キー10を保存された
60秒少なくとも10,000個のキー値の変更は、保存された場合は
900 1のセーブ
セーブで300 10
万60保存

あなたが0に設定されている場合、ポート番号、デフォルトは6379でリスニング、Redisのソケットに接続されていない任意のクライアントに耳を傾けます。
ポート6379

Redisのは、デフォルトでローカル接続だけを許可する、に接続された他のマシンはできません
バインドを127.0.0.1

その他のプロフィールます。https://www.cnblogs.com/kreo/p/4423362.html

Redisのデータベースを使用するのは簡単

DBSIZEは-------------------------データベースの現在のキー番号表示
* ----------------キーを-----------キーコンテンツ閲覧
FLUSHDBを---------------------鍵データベースの現在の数クリア
fLUSHALLを----- ---------------すべてのライブラリキー(注意を)クリア
キー-----------------------裁判官をEXISTSキーがあるかどうか

ここに画像を挿入説明

3、データの5つの共通のタイプをRedisの

1.redis文字列

文字列は、最も基本的なタイプであり、値に対応するキーRedisの
ストリングが任意のデータを含めることができ、最大512Mを超えません

セット/取得/デル/ APPEND / strlen関数

set  ---- 设置值
get  ---- 获取值
mset  ---- 设置多个值
mget  ---- 获取多个值
append ---- 添加字段
del ---- 删除
strlen ---- 返回字符串长度

ここに画像を挿入説明
INCR / DECR / incrby / decrby

incr ---- 增加
decr ---- 减少
incrby  ----- 制定增加多少
decrby  ----- 制定减少多少

ここに画像を挿入説明

getrange / setrange

getrange ---- 获取指定区间范围内的值,类似between....and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始从0 -1表示全部

ここに画像を挿入説明

2.redisリスト(複数値の単一の値)

一覧(リスト)
リストには、文字列の単純なリスト、挿入順ソートで、要素が追加することができ、リストの先頭(左)またはテール部分(右側)
基礎となる実際のリストです

Lpus / RPUS / LRANGE

lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01  1 2 3 4 5  倒序排列
rpush list02  1 2 3 4 5  正序排列
lrange  list01  0  -1  获取list01 中的所有值

ここに画像を挿入説明
LPOP / RPOP

lpop/rpop ---- 移除最左/最右
lpop list01 删除最左元素
rpop list01 删除最右元素

ここに画像を挿入説明
LINDEX、割出添字素子により得られた(上から下へ)

lrange list01 0 -1
lindex list01 1

ここに画像を挿入説明
リストの長さを求めてllen、

llen list01 

lremキー

删N个value
lrem list01 2 1   在list01中删除2个1

ここに画像を挿入説明
LTRIMキー

ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2    截取list01 从0到2的数据在赋值给list01

ここに画像を挿入説明
rpoplpushリスト1リスト2リスト1の最後にlist2の中で最初に押され

lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2

キーインデックス値をLSET

lset list01 0 x     将list02中第一位换成x

ここに画像を挿入説明
linsertキーの前/後

linsert list01b  before x php  在x之前加字段php

ここに画像を挿入説明

3.redis - ハッシュ

ハッシュキーの集合である
ハッシュは、文字列型とフィールドマッピングテーブル、ハッシュの値は、オブジェクトを格納するのに特に適しています

HSET / hget / hmset / hmget / hgetall / HDEL

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id 
hmset customer id 11 name juran age 26
hmget customer id name age      只返回相应的值
hgetall   customer              返回全部
hdel user id   删除id

ここに画像を挿入説明
ハッシュ長を求めてHLEN

hlen customer   

hexistsキー

hexists ---- 在key里面的某个值
存在返回1 ,不存在返回0

HKEY /クジラ

hkeys students
hvals students

ここに画像を挿入説明

4.redisセット(重複しません)

セット(セット)
文字列型のSET順不同コレクション、無重複要素

サッド/ smembers / sismember

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3   去掉重复添加
smembers set01         得到set01
sismember set01 1      如果存在返回1  不存在返回0

ここに画像を挿入説明
SCARD

scard ---- 获取集合里面的元素个数
scard set01   

SREMキー値

srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01   3已经被删除掉

ここに画像を挿入説明
srandmemberキー

srandmembe ---- 随机出几个数
sadd set02  1 2 3 4 5 6 7 8
srandmember set02  2 

SPOPキー

spop ---- 随机出栈
spop set01

smove KEY1 KEY2

sadd set03 x y z 
smove set01 set03 2  将set01中的2 移动到set03中

ここに画像を挿入説明
数理コレクション

sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02   返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02   返回 1 2 3
并集
SUNION set01 set02  返回set01 set02 中的值  去掉重复

5.redis-ZSET

ZSET(順序集合)

zadd /のzrange

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 
带分数返回   withscores

ここに画像を挿入説明
zrangebyscoreスタートキーを終了

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70

zrangebyscore zset01 60 (90   表示不包含90

zrangebyscore zset01  60 90  limit  1 2 从第一条开始截取2条

ここに画像を挿入説明
zremキー

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1  

zcard / ZCOUNTキースコア区间/ zrankキー値

zcard   求zset01 总条数
zcount  zset01 60 90  求60-90个数
zrank   zset01  v2   返回1  返回对应下角标,从0开始

ここに画像を挿入説明

4、Pythonの動作のRedis

設置と接続redispy
インストール

pip install redis

接続

r = redis.StrictRedis(host='localhost',port=6379,db=0)

文字列関連の操作

import redis


class TestString(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
    
    # 设置值
    def string_set(self, keys, items):
        res = self.r.set(keys, items)
        print(res)                              # 返回的是布尔类型的值
    
    # 取值
    def string_get(self, keys):
        res = self.r.get(keys)
        return res
    
    # 设置多个值
    def string_mset(self, items):
        if isinstance(items, dict):
            res = self.r.mset(items)
            print(res)
        
    # 取多个值
    def string_mget(self, keys):
        if isinstance(keys, dict):
            res = self.r.mget(keys)
            print(res)
        
    # 删除
    def string_del(self, keys):
        if self.r.exists(keys):
            self.r.delete(keys)
        else:
            # return "{} is not found".format(keys)
            raise ValueError("{} is not found".format(keys))


if __name__ == '__main__':
    s = TestString()
    
    d = {
        "user": "123",
        "user1": "1"

    }
    s.string_mset(d)
    print(s.string_del("user"))

関連する操作のリスト

import redis


class List_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
    
    # 添加值
    def list_lpush(self, keys, items):
        res = self.r.lpush(keys, items)
        return res
    
    # 删除元素
    def list_lpop(self, keys):
        result = self.r.lpop(keys)
        return result


if __name__ == '__main__':
    l = List_Redis()
    # l.list_lpush('li9', '1 2 3 4 5 6  7 8 8 9')
    l.list_lpop("li9")

関連する操作のコレクション

import redis


class Set_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)
        
    # 添加数据
    def set_sadd(self,keys, items):
        result = self.r.sadd(keys, items)
        return result
    
    # 删除数据
    def set_srem(self, keys, values):
        res = self.r.srem(keys, values)
        return res
    
    # 随机删除元素
    def set_pop(self, keys):
        res = self.r.spop(keys)
        return res
    
    
if __name__ == '__main__':
    s = Set_Redis()
    s.set_sadd('s1', '1 2 3 4 5')
    s.set_pop('s1')

ハッシュ関連の操作

import redis


class Hash_Redis(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1', port=6379)

    # 设置值
    def hash_hset(self, keys, items,values):
        result = self.r.hset(keys, items, values)
        return result
    
    # 取值
    def hash_hgetall(self, keys):
        result = self.r.hgetall(keys)
        return result
    
    # 判断是否存在	存在返回1  不存在返回0
    def hash_hexists(self, keys, values):
        res = self.r.hexists(keys, values)
        print(res)
    
    
if __name__ == '__main__':
    h = Hash_Redis()
    h.hash_hset('h1', 'id', '1')

5、Redisのマスター・スレーブ構成

  • ⼀マスターが複数のスレーブを持つことができ、スレーブ⼀別保証は複数のスレーブを有していてもよく、それは強いズームマルチレベルサーバ・クラスタ・アーキテクチャを形成する、上に行きます
  • 書き込みデータ、データを読み込むため、スレーブ、統計に使用されるマスター:識字率サイトは10:1であります
  • コンフィギュレーションは、プライマリから分離読み取りおよび書き込みによって実現されてもよいです
  • マスタとスレーブはRedisの例である(Redisのサービス)
    ここに画像を挿入説明

マスター・スレーブ構成では、
マスターを設定しました

など/ Redisの/ redis.confファイルを変更します

0.0.0.0またはネイティブIPへの変更をバインド

からの設定

コピーなど/ Redisの/ redis.confファイル
のcp redis.confのslave.conf

変更のRedis / slave.confファイル
vimのslave.conf

バインド192.168.154.131(ホストIP)
slaveof 192.168.154.131(ホストIP)6379(ホストポート)
ポート6378(スレーブポート)

ホストサービスをオンにします

SRC / Redisのサーバーslave.conf

SRC / Redisの-CLI -h 0.0.0.0 -p 6379

クライアントから入力します。

SRC / Redisの-CLI -h 192.168.154.131 -p 6378

ここに画像を挿入説明

公開された60元の記事 ウォンの賞賛9 ビュー5040

おすすめ

転載: blog.csdn.net/weixin_42118531/article/details/104729275