RedisJSON尝鲜

一、描述

RedisJSON 是一个高性能的 NoSQL 文档存储,允许开发人员构建现代应用程序。它提供本地 API 以在本地和云中作为托管服务对 JSON 文档进行摄取、索引、查询和运行全文搜索。

二、优势

  • 高性能

使用以 C 语言实现的内存数据结构专门构建,以提供性能和可扩展性。

  • 友好

开发人员友好的 API,用于执行原子更新、创建索引和运行全文搜索。支持所有流行语言。

  • 水平可扩展

在多个分片和节点上横向扩展和分区索引,以获得更高的速度和内存容量。

  • 企业级

在具有 5 个 9 可用性和主动-主动故障转移的任何情况下享受持续运营。
RedisJSON尝鲜

三、功能

内存中 JSON 存储
在内存中存储和处理无方案 JSON,支持每秒数百万次操作,响应时间为亚毫秒级。允许对内存中的 JSON 子元素进行原子操作。
RedisJSON尝鲜
索引和查询
RedisJSON 允许您在 JSON 文档上快速创建索引,并使用允许您即时查询已被索引的文档的实时索引。这些索引让您能够以闪电般的速度查询数据、执行复杂的聚合以及按属性、数值范围和地理距离进行过滤。
RedisJSON尝鲜
全文和模糊搜索
RedisJSON* 支持多种语言的全文索引和基于词干的查询扩展。它提供了丰富的查询语言,可以执行文本搜索以及复杂的结构化查询。此外,您可以通过使用“模糊”搜索实现自动完成建议来丰富搜索体验。
RedisJSON尝鲜
可在本地和作为托管服务使用
RedisJSON 的企业和企业云产品让您可以毫不费力地在整个集群中扩展 RedisJSON,让您可以将索引扩展到数百台服务器上的数十亿个文档。
RedisJSON尝鲜

四、使用

官方文档:https://developer.redis.com/howtos/redisjson/
maven配置:

<dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.16</version>
      </dependency>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.71</version>
      </dependency>
      <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>4.0.0</version>
      </dependency>
  </dependencies>

redisjson 客户端配置,地址配置修改为自己访问的地址

@Configuration
public class RedisJsonConfig {

    @Bean
    public UnifiedJedis unifiedJedis() {
        HostAndPort config = new HostAndPort("localhsot", 6379);
        PooledConnectionProvider provider = new PooledConnectionProvider(config);
        UnifiedJedis unifiedJedis = new UnifiedJedis(provider);
        unifiedJedis.sendCommand(Protocol.Command.AUTH, new String[]{"123456"});
        return unifiedJedis;

    }
}

DeviceSerice

@Service
public class DeviceService {
    @Resource
    private UnifiedJedis unifiedJedis;

    public DeviceInfo start() {
        DeviceInfo device= new DeviceInfo ();
        device.setDevicename("楼道海康摄像头");
        device.setDeviceType(8);
        device.setDeviceNo("8a7fa05b4efc4f808738d73b83ce50fb");
        unifiedJedis.jsonSet("device:8a7fa05b4efc4f808738d73b83ce50fb",   JSON.toJSONString(device));
        DeviceInfo d = unifiedJedis.jsonGet("device:8a7fa05b4efc4f808738d73b83ce50fb", DeviceInfo .class);
        log.info(JSONUtil.toString(d));
        return d;
    }
}
上一篇:设计模式是什么鬼(模板方法)


下一篇:SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?