redis-1-メモリベースの非リレーショナル・データベース|文字列タイプ|リスト・データ型

32825 ワード

文書ディレクトリ
  • Redis概要
  • インストール
  • プロファイル詳細
  • データ型
  • string
  • リストデータ型(List)
  • pythonと対話
  • Redisの概要
    Redisの紹介
  • 特徴及び利点
  • 1、   ,  C  ,  '  '      
    2、    Key-Value NoSQL(    )   
    3、        ,   strings,  hashes,  lists,  sets,    sorted sets   
    4、        (C C++ Python Java PHP ...
  • 他のデータベースと比較
  • 1、MySQL :       ,  ,    , 
    2、MongoDB:         ,  JSON  ,    , ,        
    3、Redis            ??
       #     IO       
    
  • 適用シーン
  • 1、  Redis          、             ,        redis  ,            
    2、    ,             ,               ,
                  、        ,      redis         ,      ,       ,        
    # redis            
    
  • redisバージョン
  • 1、    :5.0
    2、    :2.42.62.83.0(   )3.23.44.0(      )5.0
    3( #      )
    	RedisDesktopManager
    
  • Redis付加機能
  • 1、   
                  ,      ,           
    2、     
                 ,            
       <      >
       #      ,     ,      
    345、Sentinel  
    

    インストール
  • Ubuntu
  • #   
    sudo apt-get install redis-server
    #      
    sudo /etc/init.d/redis-server status | start | stop | restart
    #      
    redis-cli -h IP   -p 6379 -a   
    
  • Windows
  • 1、     
       https://github.com/ServiceStack/redis-windows/blob/master/downloads/redis-64.3.0.503.zip
    23、     
              redis-server.exe 
    4、     
              redis-cli.exe
    
    # Windows      :         
    #     : Redis         
    1、    redis.windows.conf   redis.conf,  redis       
    2、cmd   ,   redis-server.exe    
    3、  :redis-server --service-install redis.conf --loglevel verbose
    4-  -  -Redis-  
    
    #   
      redis-server.exe       :
    1、redis-server --service-uninstall
    2、sc delete Redis
    

    プロファイルの詳細
  • プロファイルの場所
  • 1、Ubuntu
    	/etc/redis/redis.conf
      mysql        ? : /etc/mysql/mysql.conf.d/mysqld.cnf
    
    2、windows       redis    
    	redis.windows.conf 
    	redis.conf
    
  • 接続パスワードの設定
  • $sudo vim /etc/redis/redis.conf[500   ]
    1、requirepass   
    2、    
       sudo /etc/init.d/redis-server restart
    3、     
       redis-cli -h 127.0.0.1 -p 6379 -a 123456
       127.0.0.1:6379>ping
    
  • リモート接続を許可
  • 1、     IP    
      69 : # bind 127.0.0.1 ::1
    2( yes  no)
      88 : protected-mode no
    3、    
      sudo /etc/init.d/redis-server restart
    
  • リモート接続テストWindows接続UbuntuのRedisサービス
  • # cmd   
    1、e:
    2、cd Redis3.0
    3、redis-cli -h x.x.x.x -a 123456
    4、x.x.x.x:6379>ping
    

    データ型
  • 汎用コマンドは、すべてのデータ型
  • に適用されます.
    #    (number   0-15  ,db0 ~ db15)
    select number
    #    
    keys      # keys *
    #     
    TYPE key
    #      
    exists key
    #    
    del key
    #     
    rename key newkey
    #           (  )
    flushdb
    #           (  )
    flushall
    

    文字列タイプ(string)
  • 特徴
  • 1、   、  ,          
    2

    文字列共通コマンド-マスターする必要があります
    # 1.     key-value
    set key value
    # 2.   key  
    get key
    # 3. key         (nx)
    set key value nx  # not exists
    # 4.       (ex)
    set key value ex seconds
    
    # 5.       key-value
    mset key1 value1 key2 value2 key3 value3
    # 6.       key-value
    mget key1 key2 key3 
    

    文字列の共通コマンド-理解として
    # 1.    
    strlen key
    # 2.          
    getrange key start stop
    # 3.      ,value     
    setrange key index value
    # 4.    value  
    append key value
    

    数値アクション-文字列タイプの数値(把握する必要があります)
    #     
    INCRBY key   
    DECRBY key   
    INCR key : +1  
    DECR key : -1  
    #     :          ,      INCR ,             DECR
    #      :          ,        ,    append
    incrbyfloat key step
    

    キーの命名規則
    ​ mset wang:email [email protected]
    127.0.0.1:6379> mset wang:email wangweichao@tedu.cn guo:email guods@tedu.cn
    OK
    127.0.0.1:6379> mget wang:email guo:email
    1) "[email protected]"
    2) "[email protected]"
    127.0.0.1:6379> 
    

    stringコマンド要約
    #      
    1set key value
    2set key value nx
    3、get key
    3、mset key1 value1 key2 value2
    4、mget key1 key2 key3
    5set key value nx ex seconds
    6、strlen key 
    #          (      ,      )
    7、getset key value
    #     
    7、incrby key   
    8、decrby key   
    9、incr key
    10、decr key
    11、incrbyfloat key number#(       )
    #            
    #    
    1set key value ex 3
    #    
    1set key value
    2、expire key 5 #  
    3、pexpire key 5 #   
    #       
    ttl key
    #     
    persist key
    
  • stringデータ型注意
  • # key     
    1、key     ,    ,                 
    2、    ,     
    #  
    1、              512M  
    

    練習する
    1、   db0       
    2、    trill:username       user001,   
    3、   trill:username     
    4、      trill:password 、trill:gender、trill:fansnumber    (    )                 
    5、    trill:score     
    610   
    72   (     )
    83         
    91         
    10、  、  、  ...,     
    11、       ,     
    

    リストデータ型(List)
  • 特徴
  • 12、       ,     ,       
    342^32 -1   
    5、   python  
    
  • リスト共通コマンド
  • #  
    1、         
    	LPUSH key value1 value2 
    2、         
    	RPUSH key value1 value2
    3、   src    1   ,     dst   
    	RPOPLPUSH src dst
    4/     
    	LINSERT key after|before value newvalue
    
    #  
    5、       
    	LRANGE key start stop
      #          : LRANGE key 0 -1
    6、      
    	LLEN key
    
    #  
    71   
    	LPOP key
    81   
    	RPOP key
    9,    ,       
    	BLPOP key timeout
    10,    ,       
    	BRPOP key timeout
      #   BLPOP   BRPOP
      	1、              ,    
    		20,      ,         
    		3、                ,  First In First Service  ,     
    11、      
    	LREM key count value
      count>0:            ,   value     ,   count
    	count<0:            ,   value     ,   count
    	count=0:       value    
    12、          
    	LTRIM key start stop
      LRTIM mylist1 0 2 #     3 
      #     :         500 
      LTRIM weibo:comments 0 499
    
    #  
    13、LSET key index newvalue
    

    練習する
    12、    spider:urls   RPUSH        :01_baidu.com、02_taobao.com、03_sina.com、04_jd.com、05_xxx.com
    345、    01_baidu.com    01_tmall.com
    6、    04_jd.com    1    02_taobao.com
    78、         02_taobao.com
    9、          ,   3 
    

    pythonとインタラクティブ
  • モジュール(redis)
  • Ubuntu
    sudo pip3 install redis
    

    Windows
    #   1. python -m pip install redis
    #   2.         cmd   
            pip install redis
    
  • 使用フロー
  • import redis
    #          
    r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')
    
  • 汎用コマンドコード例
  • import redis
    
    #       
    r = redis.Redis(host='192.168.153.146',port=6379,db=0)
    
    # r.keys('*') ->   
    key_list = r.keys('*')
    for key in key_list:
      print(key.decode())
    
    # b'list'
    print(r.type('mylist'))
    #    : 0    1
    print(r.exists('spider:urls'))
    #   key
    r.delete('mylist2')
    
  • python操作list
  • import redis
    
    r = redis.Redis(host='192.168.153.146',port=6379,db=0)
    
    # pylist: ['pythonweb','socket','pybase']
    r.lpush('pylist','pybase','socket','pythonweb')
    # pylist: ['spider','pythonweb','socket','pybase']
    r.linsert('pylist','before','pythonweb','spider')
    # 4
    print(r.llen('pylist'))
    # [b'spider', b'pythonweb', b'socket', b'pybase']
    print(r.lrange('pylist',0,-1))
    # b'pybase'
    print(r.rpop('pylist'))
    # [b'spider', b'pythonweb']
    r.ltrim('pylist',0,1)
    
    while True:
      #         ,   None
      result = r.brpop('pylist',1)
      if result:
        print(result)
      else:
        break
    
    
    r.delete('pylist')
    

    Listケース:プロセスはurlの生産を担当し、プロセスはurlの消費を担当します.
    プロセス1:生産者
    import redis
    import time
    import random
    
    r = redis.Redis(host='192.168.153.146',port=6379,db=0)
    
    #        url  
    for page in range(0,67):
      url = 'http://app.mi.com/category/2#page=%s' % str(page)
      r.lpush('spider:urls',url)
      time.sleep(random.randint(1,3))
    

    プロセス2:消費者
    import redis
    
    r = redis.Redis(host='192.168.153.146',port=6379,db=0)
    
    while True:
      # url: (b'spider:urls',b'http://xiaomixxx')
      url = r.brpop('spider:urls',5)
      if url:
        print('    :',url[1].decode())
      else:
        print('    ')
        break
    

    プロセスモジュールを使用して実装してみますか?
    
    
  • pythonオペレーションstring
  •