官方提供的模块
RedisBloom
支持布隆过滤模块
GitHub
使用
1
| docker run -p 6379:6379 --name redis-redisbloom redislabs/rebloom:latest
|
1
| redis-server --loadmodule /path/to/redisbloom.so
|
命令
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 添加元素 BF.ADD key value bf.madd key value value...
# 判断元素是否存在 BF.EXISTS key value bf.mexists key value value...
# 创建一个过滤器 # one-more-filter: 键 # 0.0001: 期望错误率,期望错误率越低,需要的空间就越大。默认为0.01 # 1000000: 初始容量,当实际元素的数量超过这个初始化容量时,误判率上升。默认为100 bf.reserve one-more-filter 0.0001 1000000
|
CuckooFilter
布谷鸟过滤器:Cuckoo hash算法的哈希函数是成对的(具体的实现可以根据需求设计),每一个元素都有两个哈希函数用来分别映射到两个位置,其中一个是记录的位置,另一个是备用位置,这个备用位置是处理碰撞时用的。
GitHub
Redisjson
RedisJSON是一个Redis模块,它实现了JSON数据交换标准ECMA-404,作为原生数据类型。它允许从Redis中存储、更新和获取JSON值.
GitHub
使用
1
| docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest
|
1
| loadmodule /usr/lib/redis/module/rejson.so
|
命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| 命令和子命令的名称是大写的,例如JSON.SET 和INDENT 强制参数用尖括号括起来,例如<path> 可选参数用方括号括起来,例如[index] 其他可选参数由三个句点字符表示,即... 管道字符|表示异或
##标量命令 #设置json值 JSON.SET <key> <path> <json> [NX | XX] 说明: NX: 如果不存在就添加 XX: 如果存在就更新
#查询key的值 JSON.GET <key> [INDENT indentation-string] [NEWLINE line-break-string] [SPACE space-string] [path ...] 说明: 可以接受多个path,默认是root INDENT: 设置嵌套级别 NEWLINE: 每行末尾打印的字符串 SPACE: 设置key和value之间的字符串 JSON.GET myjsonkey INDENT "\t" NEWLINE "\n" SPACE " " .
JSON.SET doc $ '{"a":2, "b": 3, "nested": {"a": 4, "b": null}}' JSON.GET doc $..b JSON.GET doc ..a $..b
#查询指定路径下的多个key,不存在的key或path返回null JSON.MGET <key> [key ...] <path>
JSON.SET doc1 $ '{"a":1, "b": 2, "nested": {"a": 3}, "c": null}' JSON.SET doc2 $ '{"a":4, "b": 5, "nested": {"a": 6}, "c": null}'
JSON.MGET doc1 doc2 $..a
#删除值 JSON.DEL <key> [path] 说明: 不存在的key或path会被忽略 返回integer
#增加数字的值 JSON.NUMINCRBY <key> <path> <number>
#数字乘法,过时了 JSON.NUMMULTBY <key> <path> <number>
#追加字符串 JSON.STRAPPEND <key> [path] <json-string>
#字符串的长度 JSON.STRLEN <key> [path]
##数组命令 #追加数组元素 JSON.ARRAPPEND <key> <path> <json> [json ...]
#搜索指定元素在数组中第一次出现的位置,如果存在返回索引,不存在返回-1 JSON.ARRINDEX <key> <path> <json-scalar> [start [stop]] 说明: [start [stop]] 从start开始(包含)到stop(不包含)的范围
#在数组指定位置插入元素 JSON.ARRINSERT <key> <path> <index> <json> [json ...] 说明: index: 0是数组第一个元素,负数表示从末端开始计算
#数组的长度 JSON.ARRLEN <key> [path] 说明: 如果key或path不存在,返回null
#删除返回数组中指定位置的元素 JSON.ARRPOP <key> [path [index]] 说明: index: 默认是-1,最后一个元素
#去掉元素,使其仅包含指定的包含范围的元素 JSON.ARRTRIM <key> <path> <start> <stop>
##对象命令 #返回对象中的key JSON.OBJKEYS <key> [path]
#返回对象key的数量 JSON.OBJLEN <key> [path]
##模块命令 #返回json value的数据类型 JSON.TYPE <key> [path]
#返回key的字节数 JSON.DEBUG MEMORY <key> [path]
|
redlock
分布式锁