温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RedisMod怎么安装和使用

发布时间:2022-07-08 09:24:52 来源:亿速云 阅读:593 作者:iii 栏目:开发技术

本篇内容介绍了“RedisMod怎么安装和使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    RedisMod简介

    Redis是开发中非常常用的内存数据存储中间件,之前基本上用它来做内存存储使用。最近发现Redis推出了很多增强模块,例如通过RedisJSON可以支持原生JSON对象的存储,使用RediSearch可以作为搜索引擎使用,并且支持中文搜索!

    首先介绍下RedisMod这个东西,它是一系列Redis的增强模块。有了RedisMod的支持,Redis的功能将变得非常强大。目前RedisMod中包含了如下增强模块:

    • RediSearch:一个功能齐全的搜索引擎;

    • RedisJSON:对JSON类型的原生支持;

    • RedisTimeSeries:时序数据库支持;

    • RedisGraph:图数据库支持;

    • RedisBloom:概率性数据的原生支持;

    • RedisGears:可编程的数据处理;

    • RedisAI:机器学习的实时模型管理和部署。

    安装

    首先我们需要安装带所有RedisMod的Redis,使用Docker来安装非常方便的!

    使用如下命令下载RedisMod的镜像;

    docker pull redislabs/redismod:preview

    在容器中运行RedisMod服务。

    docker run -p 6379:6379 --name redismod \
    -v /mydata/redismod/data:/data \
    -d redislabs/redismod:preview

    RedisJSON

    有了RedisJSON模块,Redis就可以存储原生JSON类型数据了,通过它你可以很方便地访问JSON中的各个属性,类似在MongoDB中那样,下面我们就来体验下,这里我们将使用RedisInsight 来操作Redis。

    首先通过JSON.SET命令向Redis中添加JSON类型键值对,几个商品对象数据,由于JSON是树形结构的,使用$符号代表往JSON的根节点中添加数据;

    JSON.SET product:1 $ '{"id":1,"productSn":"7437788","name":"小米8","subTitle":"全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","brandName":"小米","price":2699,"count":1}'
    JSON.SET product:2 $ '{"id":2,"productSn":"7437789","name":"红米5A","subTitle":"全网通版 3GB+32GB 香槟金 移动联通电信4G手机 双卡双待","brandName":"小米","price":649,"count":5}'
    JSON.SET product:3 $ '{"id":3,"productSn":"7437799","name":"Apple iPhone 8 Plus","subTitle":"64GB 红色特别版 移动联通电信4G手机","brandName":"苹果","price":5499,"count":10}'

    数据插入成功后,在RedisInsight中将看到如下信息,JSON数据支持格式化高亮显示;

    RedisMod怎么安装和使用

    接下来可以通过JSON.GET命令获取JSON类型键值对的值;

    JSON.GET product:1

    RedisMod怎么安装和使用

    也可以只获取值的指定属性,在RedisJSON中,获取JSON对象中的属性时需要以.开头;

    JSON.GET product:1 .name .subTitle

    RedisMod怎么安装和使用

    还可以通过JSON.TYPE命令来获取JSON对象类型。

    JSON.TYPE product:1 .

    RedisMod怎么安装和使用

    RediSearch

    通过RediSearch模块,Redis可以变成一个功能强大的全文搜索引擎,并且原生支持中文搜索,下面我们就来体验下!

    使用RediSearch来搜索数据之前,我们得先创建下索引,建立索引的语法有点复杂,我们先来看下;

    FT.CREATE {index}
      [ON {data_type}]
         [PREFIX {count} {prefix} [{prefix} ..]
         [LANGUAGE {default_lang}]
      SCHEMA {identifier} [AS {attribute}]
          [TEXT | NUMERIC | GEO | TAG ] [CASESENSITIVE]
          [SORTABLE] [NOINDEX]] ...

    使用FT.CREATE命令可以建立索引,语法中的参数意义如下;

    • index:索引名称;

    • data_type:建立索引的数据类型,目前支持JSON或者HASH两种;

    • PREFIX:通过它可以选择需要建立索引的数据前缀,比如PREFIX 1 "product:"表示为键中以product:为前缀的数据建立索引;

    • LANGUAGE:指定TEXT类型属性的默认语言,使用chinese可以设置为中文;

    • identifier:指定属性名称;

    • attribute:指定属性别名;

    • TEXT | NUMERIC | GEO | TAG:这些都是属性可选的类型;

    • SORTABLE:指定属性可以进行排序。

    看了语法可能不太好理解,直接对之前的商品数据建立索引试试就懂了;

    FT.CREATE productIdx ON JSON PREFIX 1 "product:" LANGUAGE chinese SCHEMA $.id AS id NUMERIC $.name AS name TEXT $.subTitle AS subTitle TEXT $.price AS price NUMERIC SORTABLE $.brandName AS brandName TAG

    建立完索引后,我们就可以使用FT.SEARCH对数据进行查看了,比如使用*可以查询全部;

    FT.SEARCH productIdx *

    RedisMod怎么安装和使用

    由于我们设置了price字段为SORTABLE,我们可以以price降序返回商品信息;

    FT.SEARCH productIdx * SORTBY price DESC

    RedisMod怎么安装和使用

    还可以指定返回的字段;

    FT.SEARCH productIdx * RETURN 3 name subTitle price

    RedisMod怎么安装和使用

    我们把brandName设置为了TAG类型,我们可以使用如下语句查询品牌为小米苹果的商品;

    FT.SEARCH productIdx '@brandName:{小米 | 苹果}'

    RedisMod怎么安装和使用

    由于priceNUMERIC类型,我们可以使用如下语句查询价格在500~1000的商品;

    FT.SEARCH productIdx '@price:[500 1000]'

    RedisMod怎么安装和使用

    还可以通过前缀进行模糊查询,类似于SQL中的LIKE,使用*表示;

    FT.SEARCH productIdx '@name:小米*'

    RedisMod怎么安装和使用

    FT.SEARCH中直接指定搜索关键词,可以对所有TEXT类型的属性进行全局搜索,支持中文搜索,比如我们搜索下包含黑色字段的商品;

    FT.SEARCH productIdx '黑色'

    RedisMod怎么安装和使用

    当然我们也可以指定搜索的字段,比如搜索副标题中带有红色字段的商品;

    FT.SEARCH productIdx '@subTitle:红色'

    RedisMod怎么安装和使用

    通过FT.DROPINDEX命令可以删除索引,如果加入DD选项的话,会连数据一起删除;

    FT.DROPINDEX productIdx

    通过FT.INFO命令可以查看索引状态;

    FT.INFO productIdx

    RedisMod怎么安装和使用

    RediSearch的搜索语法比较复杂,不过我们可以对比SQL来使用它,具体可以参考下表。

    RedisMod怎么安装和使用

    对比Elasticsearch

    Redis官方曾公布了RediSearch与Elasticsearch的性能对比测试,大家可以看下。

    索引能力

    对Wikipedia的560万(5.3GB)文档进行索引,RediSearch耗时221s,Elasticsearch耗时349s,RediSearch快了58%

    RedisMod怎么安装和使用

    查询能力

    数据建立索引后,使用32个客户端对两个单词进行检索,RediSearch的吞吐量达到12.5K ops/sec,Elasticsearch的吞吐量为3.1K ops/sec,RediSearch比Elasticsearch要快4倍。同时RediSearch的延迟为8ms,而Elasticsearch为10ms,RediSearch延迟稍微低些!

    RedisMod怎么安装和使用

    “RedisMod怎么安装和使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI