Redis mcpack

mcpack

1.1 接口概述

import socket
from xlib import ral

send_dict = {"method":"SETEX","key":"ceshi", "value":"mykey value", "seconds":3}
rsp = ral.ral_request(("127.0.0.1", 6380), send_dict)
print rsp
"""
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': bytearray(b'OK')}}
"""

cmd

r: EXISTS key
r: TYPE key
w: DEL key
w: EXPIRE key seconds
w: EXPIREAT key timestamp
r: TTL key
w: PEXPIRE key milliseconds
w: PEXPIREAT key milli_timestamp
r: PTTL key
w: PERSIST key

r: GET key
w: SET key value
w: SETEX key seconds value
w: SETNX key value
w: APPEND key value
r: GETRANGE key start end
w: SETRANGE key start value
r: STRLEN key
w: GETSET key value
r: GETBIT key offset
w: SETBIT key offset value

w: INCR key
w: INCRBY key step
w: DECR key
w: DECRBY key step

r: HGET key field
w: HSET key field value
r: HMGET key +field
w: HMSET key +[ field value ](fields)
w: HSETNX key field value
w: HDEL key +field
r: HGETALL key : field value
r: HKEYS key
r: HVALS key
r: HLEN key
r: HEXISTS key field
w: HINCRBY key field step

w: LPUSH key +value
w: LPOP key
w: LPUSHX key value
w: RPUSH key +value
w: RPOP key
w: RPUSHX key value
r: LLEN key
r: LINDEX key index
r: LRANGE key start stop
w: LSET key index value
w: LREM key count value
w: LTRIM key start stop
w: LINSERTAFTER(LINSERT) key AFTER pivot value
w: LINSERTBEFORE(LINSERT) key BEFORE pivot value

w: SADD key +member
w: SREM key +member
r: SCARD key
r: SISMEMBER key member
r: SMEMBERS key
w: SPOP key

w: ZADD key +[ score member ](members)
w: ZREM key +member
r: ZCARD key
r: ZCOUNT key min max
w: ZINCRBY key step member
r: ZRANGE key start stop
r: ZRANGEWITHSCORES(ZRANGE) key start stop WITHSCORES : member score
r: ZREVRANGE key start stop
r: ZREVRANGEWITHSCORES(ZREVRANGE) key start stop WITHSCORES : member score
r: ZRANGEBYSCORE key min max [ LIMIT offset count ]
r: ZRANGEBYSCOREWITHSCORES(ZRANGEBYSCORE) key min max WITHSCORES [ LIMIT offset count ] : member score
r: ZREVRANGEBYSCORE key min max [ LIMIT offset count ]
r: ZREVRANGEBYSCOREWITHSCORES(ZREVRANGEBYSCORE) key min max WITHSCORES [ LIMIT offset count ] : member score
r: ZRANK key member
r: ZREVRANK key member
r: ZSCORE key member
w: ZREMRANGEBYRANK key start stop
w: ZREMRANGEBYSCORE key min max

1.2 Keys

1.2.1 EXISTS

$ Request
send_dict = {"method":"KEYS", "key":"ceshi"}

$ Response(exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}
$ Response(not exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 0}}

1.2.2 TYPE

$ Request
send_dict = {"method":"TYPE","key":"ceshi"}

$ Response(exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': bytearray(b'string')}}
$ Response(not exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': bytearray(b'none')}}

1.2.3 DEL

$ Request
send_dict = {"method":"DEL","key":"ceshi"}

$ Response(exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}
$ Response(not exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 0}}

1.2.4 EXPIRE

$ Request
send_dict={"method":"EXPIRE", "key":"ceshi", "seconds":20}

$ Response(exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}
$ Response(not exists)
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 0}}

1.2.5 EXPIREAT

Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。

$ Request
send_dict={"method":"EXPIREAT", "key":"ceshi", "timestamp":1400000000}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}

1.2.6 TTL

$ Request
{'method': 'TTL', 'key': 'ceshi'}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': -2}}

1.2.7 PEXPIRE

以毫秒为单位设置生存时间;为 0不设置生存时间

$ Request
{'milliseconds': 20, 'method': 'PEXPIRE', 'key': 'ceshi'}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}

1.2.8 PEXPIREAT

$ Request
{'milli_timestamp': 1555555555005, 'method': 'PEXPIREAT', 'key': 'ceshi'}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 1}}

1.2.9 PTTL

$ Request
{'method': 'PTTL', 'key': 'ceshi'}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': -2}}

1.2.10 PERSIST

$ Request
{'method': 'PERSIST', 'key': 'ceshi'}

$ Response
{u'err_no': 0, u'err_msg': u'OK', u'ret': {u'ceshi': 0}}

1.3 Strings

1.4 Lists

1.5 Hashes

1.6 Sets

1.7 Sorted Sets

1.8 批量接口

$ Request
send_dict = {
    "method":"SETEX",
    "reqs":[
        {"key":"ceshi0", "value":"mykey value", "seconds":3},
        {"key":"ceshi1", "value":"mykey value", "seconds":3},
        {"key":"ceshi2", "value":"mykey value", "seconds":3}
    ]
}

$ Response
{
    u'err_no': 0,
    u'err_msg': u'OK',
    u'ret': {
        u'ceshi0': bytearray(b'OK'),
        u'ceshi1': bytearray(b'OK'),
        u'ceshi2': bytearray(b'OK')
    }
}

可以把对多个 key 的请求,打包到一个 reqs 中,实现批量请求。批量的结果通过 key 进行索引。

如果 err_no 不是 0,则 ret、errors 可能同时存在;

  • ret 表示成功的部分

  • errors 表示失败的部分。

Last updated