一、描述
RedisJSON 是一个高性能的 NoSQL 文档存储,允许开发人员构建现代应用程序。它提供本地 API 以在本地和云中作为托管服务对 JSON 文档进行摄取、索引、查询和运行全文搜索。
二、优势
- 高性能
使用以 C 语言实现的内存数据结构专门构建,以提供性能和可扩展性。
- 友好
开发人员友好的 API,用于执行原子更新、创建索引和运行全文搜索。支持所有流行语言。
- 水平可扩展
在多个分片和节点上横向扩展和分区索引,以获得更高的速度和内存容量。
- 企业级
在具有 5 个 9 可用性和主动-主动故障转移的任何情况下享受持续运营。
三、功能
内存中 JSON 存储
在内存中存储和处理无方案 JSON,支持每秒数百万次操作,响应时间为亚毫秒级。允许对内存中的 JSON 子元素进行原子操作。
索引和查询
RedisJSON 允许您在 JSON 文档上快速创建索引,并使用允许您即时查询已被索引的文档的实时索引。这些索引让您能够以闪电般的速度查询数据、执行复杂的聚合以及按属性、数值范围和地理距离进行过滤。
全文和模糊搜索
RedisJSON* 支持多种语言的全文索引和基于词干的查询扩展。它提供了丰富的查询语言,可以执行文本搜索以及复杂的结构化查询。此外,您可以通过使用“模糊”搜索实现自动完成建议来丰富搜索体验。
可在本地和作为托管服务使用
RedisJSON 的企业和企业云产品让您可以毫不费力地在整个集群中扩展 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;
}
}