Redisの一般的な操作

10313 ワード

Redisの概要
Redisは完全にオープンソースで無料の高性能Key-Valueデータベースで、以下の特徴があります.
  • Redisはデータの永続化をサポートし、メモリのデータをディスクに保存し、再起動して再ロードして使用することができます.
  • Redisは、単純なKey-Valueタイプの額面データだけでなく、list、set、zset(整列集合)、hashなどのデータ構造の記憶も提供する.
  • Redisは、データのバックアップ、すなわちmaster-slaveモードのデータバックアップをサポートします.

  • Redis基本操作
    1、文字列関連操作
    方法
    説明
    パラメータ
    説明

    set
    値の設定
    EX
    キャッシュ時間/有効期限の設定set animal 'cat' EX 5
    ユーザー情報の設定など、複数のフィールドを使用して値を設定します.set user:Joshua;age:24 "19950427"
    get
    値の取得get animal
    複数のフィールドから値を取得get user:Joshua;age:24
    append
    文字列の追加append animal " Dog"
    mset
    複数の値を追加mset user1 'Joshua' user2 'root'
    mget
    複数の値の取得mget user1 user2 animal
    del
    削除
    del del animal
    incr/decr
    増加1/減少1incr num\decr num #num
    2、リスト関連操作
    方法
    説明

    rpush
    リストの右端に1つ以上の値をプッシュrpush mylist Joshua
    lpush
    リストの左端に1つ以上の値をプッシュlpush mylist Hello
    rpop
    リストの最右端の要素を削除rpop mylist
    lpop
    リストの左端の要素を削除lpop mylist
    lindex
    オフセット値の問合せlindex mylist 0
    lrange
    オフセット範囲の要素をクエリーlrange mylist 0 2
    ltrim
    値を切り取り、その他の値を削除ltrim mylist 0 3
    blpop
    空でないリストの左端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素の出現を待つblpop mylist 0
    brpop
    リストの最右端から要素を抽出して削除するか、timeout秒以内にポップアップ可能な要素が現れるのを待つbrpop mylist 0
    rpoplpush
    ソースからリスト右端から要素を抽出して削除しdesc_に追加lsitの一番左rpoplpush mylist youlist
    brpoplpush
    ソースからList最右端timeout秒で要素を抽出して削除しdesc_に追加リストの一番左、source_Listが空の場合、timeout秒以内に要素のポップアップを待つbrpoplpjush mylist youlist 5
    lpushx
    keyが存在する場合、リストの左端に1つ以上の値をプッシュします.そうしないと、処理は行われません.lpushx itslist 0
    rpushx
    keyが存在する場合、リストの右端に1つ以上の値をプッシュします.そうしないと、何もしません.
    3、集合関連操作
    方法
    説明

    sadd/srem
    コレクションに要素を追加/削除sadd myset cat dog / srem myset cat
    smembers
    コレクションのすべての要素を取得smembers myset
    sismember
    エレメントがコレクションにあるかどうかを確認しますsismember myset cat
    sdiff
    集合が他の集合とは異なる場所を返すsdiff myset1 myset2 # myset2 myset1
    sinter
    いくつかの集合の交差を返しますsinter myset1 myset2
    sunion
    いくつかのコレクションの並列セットを返します.sunion myset1 myset2
    4、ハッシュ操作
    方法
    説明

    hset
    ハッシュ値の設定hset News:1 title "News Title" # News:1 id 1 News
    hget
    ハッシュ値の取得hget News:1 title
    hsetnx
    ハッシュ値を設定し、存在する場合は設定しません.hsetnx News:1 title "Title"
    hmset
    複数のハッシュ値の設定hmset News:1 title content "Content" is_valid 1
    hmget
    複数のハッシュ値の取得hmget News:1 title content is_valid
    hdel
    ハッシュ値の削除hdel News:1 title
    hkeys
    すべてのkeysを取得hkeys News:1
    hvals
    すべてのvaluesを取得hvals News:1
    hlen
    ハッシュに含まれるドメイン(プロパティ)の数を取得hlen News:1
    hexists
    存在するか否かを判断するhexists News:1 title
    pythonオペレーションstring
    import redis
    
    
    class Test_String(object):
        def __init__(self):
            self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
    
        def test_set(self):
            """
                 
            :return:
            """
            res = self.r.set('user2','Joshua')
            print(res)
    
        def test_get(self):
            """
                 
            :return:
            """
            res = self.r.get('user2')
            print(res)
    
        def test_mset(self):
            """
                   
            :return:
            """
            d = {'user3': 'qi', 'user4': 'shuai'}
            res = self.r.mset(d)
            print(res)
    
        def test_mget(self):
            """
                   
            :return:
            """
            d = ['user3', 'user4']
            res = self.r.mget(d)
            print(res)
    
        def test_del(self):
            """
                   
            :return:
            """
            res = self.r.delete('user3')
            print(res)
    
        def test_incr(self):
            """
              1
            :return:
            """
            res = self.r.incr('num')
            print(res)
    
        def test_decr(self):
            """
              1
            :return:
            """
            res = self.r.decr('num')
            print(res)
    
        def test_append(self):
            """
                 
            :return:
            """
            res = self.r.append('user3','qi')
            print(res)
    
    def main():
        t = Test_String()
        # t.test_mset()
        # t.test_mget()
        # t.test_del()
        # t.test_set()
        # t.test_get()
        # t.test_incr()
        # t.test_decr()
        t.test_append()
    
    if __name__ == '__main__':
        main()

    pythonアクションリスト
    import redis
    
    
    class Test_List(object):
        def __init__(self):
            self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
    
        def test_push(self):
            l_eat = ['Joshua', 'Amy']
            lres = self.r.lpush('eat2', *l_eat)
            print(lres)
            rres = self.r.rpush('eat2', *l_eat)
            print(rres)
    
        def test_pop(self):
            res = self.r.lpop('eat2')
            print(res)
            res = self.r.rpop('eat2')
            print(res)
    
        def test_lindex(self):
            #          
            res = self.r.lindex('eat2',0)
            print(res)
    
        def test_lrange(self):
            res = self.r.lrange('eat2',0,2)  #          
            print(res)
            res = self.r.lrange('eat2',0,-1)  #        
            print(res)
    
        def test_ltrim(self):
            res = self.r.ltrim('eat2', 1,2)  #      ,      
            print(res)
            res = self.r.lrange('eat2', 0, -1)
            print(res)
    
        def test_bpop(self):
            res = self.r.blpop('eat2',timeout=3)  #  3             
            print(res)
            res = self.r.brpop('eat2',timeout=3)  #  3             
            print(res)
    
        def test_rpoplpush(self):
            res = self.r.rpoplpush('mylist', 'youlist')  #  mylist         ,   youlist    
            print(res)
    
        def test_brpoplpush(self):
            #  mylist         ,   youlist    ,  mylist     3 
            res = self.r.brpoplpush('mylist', 'youlist',timeout=3)
            print(res)
    
        def test_pushx(self):
            #  key                 
            res = self.r.lpushx('youlist', 1)
            print(res)
    
            # ~  
            res = self.r.rpushx('itslist',1)
            print(res)
    
    
    if __name__ == '__main__':
        t = Test_List()
        # t.test_push()
        # t.test_pop()
        # t.test_lindex()
        # t.test_lrange()
        # t.test_ltrim()
        # t.test_blpop()
        # t.test_rpoplpush()
        # t.test_brpoplpush()
        t.test_pushx()

    pythonオペレーションセット
    import redis
    
    
    class Test_Set(object):
        def __init__(self):
            self.r = redis.StrictRedis(host='localhost',port=6379,db=0)
    
        def test_sadd(self):
            data = ['cat', 'dog']
            res = self.r.sadd('zoo1', *data)
            print(res)
            res = self.r.smembers('zoo1')  #          
            print(res)
    
        def test_srem(self):
            # data = ['cat', 'dog']
            # res = self.r.srem('zoo', *data)  #       
            res = self.r.srem('zoo','dog')  #       
            print(res)
            res = self.r.smembers('zoo')
            print(res)
    
        def test_sinter(self):  #          
            res = self.r.sinter('zoo','zoo1')
            print(res)
    
        def test_sunion(self):  #          
            res = self.r.sunion('zoo','zoo1')
            print(res)
    
        def test_sdiff(self):  #           
            res = self.r.sdiff('zoo','zoo1')
            print(res)
    
    
    if __name__ == '__main__':
        t = Test_Set()
        # t.test_sadd()
        # t.test_srem()
        # t.test_sinter()
        # t.test_sunion()
        t.test_sdiff()
    

    pythonオペレーションハッシュ
    import redis
    
    
    class Test_Hash(object):
        def __init__(self):
            self.r = redis.StrictRedis(host='localhost', port=6379, db=0)
    
        def test_hset(self):  #        
            res = self.r.hset('News:1', 'Title', 'News Title')
            print(res)
    
        def test_hdel(self):  #        
            res = self.r.hdel('News:1', 'Title')
            print(res)
    
        def test_hget(self):  #      
            res = self.r.hget('News:1', 'Title')
            print(res)
    
        def test_heists(self):  #       
            res = self.r.hexists('News:1', 'Title')
            print(res)
    
        def test_hgetall(self):  #       
            res = self.r.hgetall('News:1')
            print(res)
    
        def test_hmset(self):  #       
            data = {'content':'this is content', 'data':'20190101'}
            res = self.r.hmset('News:1', data)
            print(res)
    
        def test_hmget(self):  #       
            fields = ['content', 'data']
            res = self.r.hmget('News:1',fields)
            print(res)
    
        def test_hkeys(self):  #     keys
            res = self.r.hkeys('News:1')
            print(res)
    
        def test_hvalues(self):  #     values
            res = self.r.hvals('News:1')
            print(res)
    
        def test_hlen(self):  #   fields   
            res = self.r.hlen('News:1')
            print(res)
    
        def test_hsetnx(self):  #        ,        
            res = self.r.hsetnx('News:1', 'content', 'fuck')
            print(res)
    
    
    if __name__ == '__main__':
        t = Test_Hash()
        # t.test_hset()
        # t.test_hdel()
        # t.test_hget()
        # t.test_heists()
        # t.test_hgetall()
        # t.test_hmset()
        # t.test_hmget()
        # t.test_hkeys()
        # t.test_hvalues()
        # t.test_hlen()
        t.test_hsetnx()