Skip to content

当前支持 redis 接口与阿里云 redis 接口的比较

KG.Xu edited this page Oct 10, 2017 · 17 revisions

以下列出的是阿里云 redis 支持但 pika 尚未支持的接口。数量大约为50个左右。

接口支持情况

keys 相关 描述
未提供支持 dump, move, randomkey, rename, renamenx, restore, sort, object
pexpire, pexpireat 无法精确到毫秒,底层会自动截断按秒级别进行处理
scan 会顺序迭代当前 db 的快照,由于 pika 允许重名五次,所以 scan 有优先输出顺序,
依次为:string -> hash -> list -> sortedset -> set;
type 由于 pika 允许重名五次,所以 type 有优先输出顺序,依次为:
string -> hash -> list -> sortedset -> set,如果这个 key 在 string 中存在,
那么只输出 string,如果不存在,那么则输出 hash 的,依次类推。
操作 描述
string bitop, bitpos, getbit, setbit: 与 redis 不同,pika 的 bit 操作范围为218
(bitcount, msetnx, psetex) 未支持
list (blpop, brpop, brpoplpush) 未支持
set srandmember:pika 介绍提示时间复杂度为 O(n),耗时较多
ordered
set
zscore:目前支持的数据范围是 [-1013, 1013]。
精度支持 10-5,小于 redis 的数值精度。
pub/sub 未提供任何支持 (publish, pubsub, subscribe, ...)
transaction 未提供任何支持 (exec, multi, watch, ...)
connection (auth, echo, select) 未支持
server 除 config 外,未提供任何支持 (flushall, flushdb, dbsize, keys, ...)
scripting 未提供任何支持 (eval, script load, script kill, ...)

存在的问题

问题 描述
重名问题 由于 pika 每个类型独立运作, 所以允许重名。例如在 key abc 在 string 中存在的时候也同样允许在 hash 中存在,一个 key 最多重名 5 次(5 大类型),但在同一接口中是无法重名的。所以建议在使用的时候对于不同类型不要使用完全相同的 key;
长度问题 pika kv 的 key value 长度没有限制,其他数据结构 hash zset set list 的 key 长度限制 255, value 没有限制。
分库问题 pika 不支持 redis 的多个库功能(db0,db1,db2),对于 pika 只有一个库,也就是 db0,select 命令在 pika 中可以执行,但实际上没有任何效果。
数据展示 pika 对于 keyspace 的展示选择了分类型展示而非 redis 的分库展示(因为 pika 没有分库概念),pika 对于 keyspace 的统计是被动的,需要手动触发并不会立即输出,
命令为:info keyspace [ 0|1 ],默认为0不触发,pika 的 keyspace 统计是精确的。