Skip to main content

custom_redis

DESCRIPTION

python实现简单redis,实现redis基本功能以及可插拔数据结构

主要功能

1 通过继承DataStore类,可以定制个性化数据类型,通过调用redis类的install方法安装数据类型,目前已实现的数据类型有str, set, queue, hash,
2 Redis 的keys, expire, ttl, del等功能已实现
3 数据持久化功能已实现

data flow

server类图

INSTALL

windows && ubuntu

    git clone https://github.com/ShichaoMa/custom_redis.git
    sudo python setup.py install

    or

    sudo pip install custom-redis

START

    custom-redis-server

HELLOWORD

demo1

    custom-redis-client -c keys
    [u'a']
    custom-redis-client -c zcard a
    1
    custom-redis-client -c zpop a
    2

demo2

>>> from custom_redis.client import Redis
>>> r = Redis("127.0.0.1", 6379)
>>> r.zadd('a', 3, 'aaa')
''
>>> r.zadd('b', 4, 'bbb')
''
>>> r.zadd('a', 1, 'ccc')
''
>>> r.keys()
[u'a', u'b']
>>> r.expire('b', 10)
''
>>> import time
>>> time.sleep(10)
>>> r.ttl('b')
'-1'
>>> r.keys()
[u'a']

demo3

# 服务端实现
# 数据类型个性化定制
# 参见default_data_types.py
# 安装数据类型
cr = CustomRedis.parse_args()
cr.install(datatype=datatype())
cr.start()

demo4

# 客户端实现
# 在functions.CMD_DICT中配置指令
"hgetall":  # 指令名
{
"args": ["name"], # 指令所需参数
"recv": lambda data: json.loads(data), # 转换函数,将接收到的报文转换成所需数据类型,若是简单字符串则无需提供
}
"hincrby": {
"args": ["name", "key", "value"],
"send": lambda *args:(args[0], json.dumps(dict([args[1:]]))),# 转换函数,返回key 和value组成的元组
"default":[1] # 指令所需参数的默认值, 从后往前排列 如:1代表value的值
},
# 发送报文的格式:"func_name#-*-#key<->value#-*-#1" # 如 "hincrby#-*-#a<->{'b':1}#-*-#1"
# 最后一位1代表keep-alive, 否则为空
# key:在redis中存储的key,在上例中所指的是参数中的name
# value:要往redis中存储的值 如json.dumps("key":"value")
# 接收报文格式:"200#-*-#success#-*-#data"
# 200为响应码
#      200:成功
#      404:没有找到方法
#      502:Empty
#      503:服务器异常
# success为响应信息
# data为recv中要处理的接收数据

Release files for custom-redis 3.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for custom-redis 3.2.2
File Size Uploaded
custom-redis-3.2.2.tar.gz 15.0 kB Details

Release files / custom-redis-3.2.2.tar.gz

Download URL custom-redis-3.2.2.tar.gz
Size 15.0 kB
Tags Source
SHA-256 checksum
How to use checksums
13f630f2bc96d12774d35e4ef589d0e1b9ff5ac7346670e56467669f870d739e
BLAKE2b-256 checksum
How to use checksums
10dd6041e3fd9b82e4a9087931f815bf1f44da03c0d68df418aa9277feb06b63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

Release history Release notifications | RSS feed

This release

3.2.2 This release

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.5

1 release file

3.1.4

1 release file

3.1.3

1 release file

3.1.2

1 release file

3.1.1

1 release file

3.1.0

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

1.1.4

1 release file

1.1.3

2 release files

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.11

1 release file

1.0.10

1 release file

1.0.9

2 release files

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page