redisはランキング機能を実現

3784 ワード

目次
  • がランクイン
  • 操作ランキング
  • redisのzsetは、ランキング機能を容易に実現するために使用できます.pythonがredisを使用してランキング機能を実現する方法について簡単に説明します.
    ランキングに入る
    redisインスタンスの取得
    import redis
    main_rds = redis.StrictRedis(host='localhost',port=6379,db=0,password='')

    全量ランキングに入る
    注意redisパッケージのバージョンによってzaddとzincbyの参照方法も異なります
    redis 3.0(pythonのredisパッケージ)以下のバージョン
    #  key name zset      member,    score,         
    main_rds.zadd(name,score,member)

    main_rds.zadd("test",100,"a")

    redis 3.0(pythonのredisパッケージ)以上のバージョン
    #  key name zset      member,    score,         
    main_rds.zadd(name,{member:score})

    main_rds.zadd("test",{"b":90,"c":80})   #         

    ランキングに追加
    redis 3.0(pythonのredisパッケージ)以下のバージョン
    # #  key name zset      member,    score,           
    main_rds.zincrby(name,member,amount)

    main_rds.zincrby("test","love",10)      # 10.0,        
    main_rds.zincrby("test","love",-1)      # 9.0

    redis 3.0(pythonのredisパッケージ)以上のバージョン
    #  key name zset      member,      score,        
    main_rds.zincrby(name,amount,member)

    main_rds.zincrby("test",8,"beauty")     # 8.0
    main_rds.zincrby("test",-2,"beauty")        # 6.0

    操作ランキング
    メンバーのランキングを取得
    #     member   , score      , 0  
    main_rds.zrank(name,member)
    #     member   , score      , 0  
    main_rds.zrevrank(name,meber)

    main_rds.zadd("test",{"a":1,"b":2,"c":3})
    main_rds.zrank("test","a")  # 0
    main_rds.zrevrank("test","a")   # 2

    あるmeberのscoreを取得する
    main_rds.zscore(key,member)

    main_rds.zscore("test","c")     # 3.0

    ある区間でランキングされた要素を取得
    #   key name zset( score      )  index start end(     )     
    main.zrevrange(name, start, end, withscores=False)

    main_rds.zadd("test",{"d":5.1,"e":6,"f":7})     # 3
    #      
    main_rds.zrevrange("test",0,3)      # ['f', 'e', 'd', 'c']

    ある区間におけるscoreの要素を取得する
    #   key name zset score(    )     (     )   
    main_rds.zrangebyscore(name, min, max, start=None, num=None, withscores=False)

    #      
    main_rds.zrangebyscore("test",2,6)      # ['b', 'c', 'd', 'e']

    指定した区間におけるscoreの要素数の取得
    #   key name zset score        
    main_rds.zcount(name, min, max)

    main_rds.zcount("test",2,6)     # 4L

    zset全体の要素数を取得
    main_rds.zcard(name)

    main_rds.zcard("test")  # 6

    要素を削除
    #   key name     
    main_rds.zrem(name, *values)

    main_rds.zrevrange("test",0,10)         # ['love', 'f', 'beauty']
    main_rds.zrem("test","f")               # 1
    main_rds.zrem("test","love","beauty")   # 2     

    ある区間でランキングされた要素を削除
    #   key name zset           
    main_rds.zremrangebyrank(name, min, max)

    main_rds.zremrangebyrank("test",0,2)    # 3

    scoreの区間の要素を削除する
    #   key name zset score        
    main_rds.zremrangebyscore(name, min, max)

    main_rds.zremrangebyscore("test", 5, 6)     # 2