MultiGet

ES系列四、ES6.3常用api之文档类api

落爺英雄遲暮 提交于 2020-12-27 01:00:22
1.Index API: 创建并建立索引 PUT twitter/tweet/ 1 { " user " : " kimchy " , " post_date " : " 2009-11-15T14:12:12 " , " message " : " trying out Elasticsearch " } 官方文档参考: Index API 。 2.Get API: 获取文档 curl -XGET 'http://localhost:9200/twitter/tweet/1' 官方文档参考: Get API 。 3.DELETE API: 删除文档 $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1' 官方文档参考: Delete API 。 4.UPDATE API: 更新文档 PUT test/type1/1{ "counter" : 1, "tags" : ["red"]} 官方文档参考: Update API 。 5.Multi Get API: 一次批量获取文档 PUT ' localhost:9200/_mget { " docs " : [ { " _index " : " test " , " _type " : " type " , " _id " : " 1 " }, { " _index " : "

RedisTemplate常用集合使用说明-opsForHash(四)

被刻印的时光 ゝ 提交于 2020-08-14 12:06:47
1、 put ( H key, HK hashKey, HV value) 新增hashMap值。 redisTemplate.opsForHash().put( "hashValue" , "map1" , "map1-1" ); redisTemplate.opsForHash().put( "hashValue" , "map2" , "map2-2" ); 2、 values ( H key) 获取指定变量中的hashMap值。 List<Object> hashList = redisTemplate.opsForHash().values( "hashValue" ); System.out.println( "通过values(H key)方法获取变量中的hashMap值:" + hashList); 3、 entries ( H key) 获取变量中的键值对。 Map<Object,Object> map = redisTemplate.opsForHash().entries( "hashValue" ); System.out.println( "通过entries(H key)方法获取变量中的键值对:" + map); 4、 get ( H key, Object hashKey) 获取变量中的指定map键是否有值,如果存在该map键则获取值

OpenUOM移动性改造-靠新的session iD而不是IP/Port识别客户端

蹲街弑〆低调 提交于 2020-08-04 17:20:55
写于2014/06/07 设备移动性的挑战 1.设备会经常由于小区或模式切换而更改IP地址。 这种地址更新是移动网络的正常行为,不应作为故障或事故看待,因此理应对应用程序透明,应用不应被此类事件打扰,更无责做善后处理。 2.移动设备存在多张3G/4G/2.75G网卡时,希望这些网卡同时收发数据。 由于这些网卡一般属于不同运营商网络,其网络架构又不同,一般要求数据包携带本运营商网卡的IP地址作为源(这一般是为了在该运营商核心网终点处做NAT),因此为了支持多运营商多网卡负载均衡,一个应用程序业务流数据包必然要支持不同的IP地址作为源,不幸的是,即便对于UDP而言,大多数应用也都是只支持单一源(它们会针对UDP socket调bind),以减少服务端的复杂性。 3.经常性的失联 电梯里,高铁上,山区景点盲区,公司的厕所...你会突然失联,然后突然出现!但是应用程序却不希望受到如此的折腾,对于OpenUOM而言,经过测试,一次重连大约要5秒时间,代价是高昂的,重新TLS握手,重新push,...实际上只要你的ping-restart时间足够小,对于信号缺失就会很迅速的被OpenUOM感知,解决方案就是将ping-restart放大,可是你也不知道自己失联多久。 4.RRC相关造成的额外延时 有时候,即便你处在信号很好的地方,也会发现打开一个网页非常慢,然后迅速就会变快

redis 大key 问题

空扰寡人 提交于 2020-07-29 00:51:26
命令:redis-cli ******* --bigkeys redis-cli --bigkeys的优点是可以在线扫描,不阻塞服务;缺点是信息较少,内容不够精确。扫描结果中只有string类型是以字节长度为衡量标准的。List、set、zset等都是以元素个数作为衡量标准,元素个数多不能说明占用内存就一定多 处理方法: 由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以业务上通常会以以下方式进行分拆。 分拆 单个key存储大value 每次都是整存整取 这种操作一般都是每次整存整取,这种情况可以尝试将对象拆分成多个key-value,使用multiGet获取值,这样分拆意义在于分拆操作的压力,将操作压力平摊到多个redis实例,降低对于单个redis的io压力。 每次只存取部分数据 同样可以拆成几个key-value,也可以将这些存储在一个hash中,每个field代表具体属性,使用hget,hmget来获取部分value,使用hset,hmset来更新部分属性。 hash,set,zset,list中存储过多数据 同样可以将这部分元素拆分,以hash为例,正常的流程是:hget(hashKey, field);hset(hashKey, field, value)。 现在可以固定一个桶数量,比如1w,每次存取的时候

search(6)- elastic4s-CRUD

♀尐吖头ヾ 提交于 2020-04-23 07:18:02
如果我们把ES作为某种数据库来使用的话,必须熟练掌握ES的CRUD操作。在这之前先更正一下上篇中关于检查索引是否存在的方法:elastic4s的具体调用如下: // 删除索引 val rspExists = client.execute(indexExists( " company " )). await if (rspExists.result.exists) client.execute(deleteIndex( " company " )). await 在下面我们还会示范如何检查一条记录(document)是否存在的方法。 先示范新建一条记录。一般来讲数据库表都有个唯一字段,最好用ES里的id来代表,否则ES会自动产生一个唯一id,那么随机读取get时就会很不方便。如果新插入的记录id已经在表里存在,ES会替换新的内容,不会产生异常。可以在elastic4s里使用createOnly(true)来强制产生重复id异常: import com.sksamuel.elastic4s.{ElasticClient, ElasticProperties} import com.sksamuel.elastic4s.akka._ import akka.actor._ import scala.concurrent.ExecutionContext.Implicits. global

search(6)- elastic4s-CRUD

扶醉桌前 提交于 2020-04-23 05:05:08
如果我们把ES作为某种数据库来使用的话,必须熟练掌握ES的CRUD操作。在这之前先更正一下上篇中关于检查索引是否存在的方法:elastic4s的具体调用如下: // 删除索引 val rspExists = client.execute(indexExists( " company " )). await if (rspExists.result.exists) client.execute(deleteIndex( " company " )). await 在下面我们还会示范如何检查一条记录(document)是否存在的方法。 先示范新建一条记录。一般来讲数据库表都有个唯一字段,最好用ES里的id来代表,否则ES会自动产生一个唯一id,那么随机读取get时就会很不方便。如果新插入的记录id已经在表里存在,ES会替换新的内容,不会产生异常。可以在elastic4s里使用createOnly(true)来强制产生重复id异常: import com.sksamuel.elastic4s.{ElasticClient, ElasticProperties} import com.sksamuel.elastic4s.akka._ import akka.actor._ import scala.concurrent.ExecutionContext.Implicits. global

[转帖]RocksDB简介

人盡茶涼 提交于 2020-04-17 08:25:31
【推荐阅读】微服务还能火多久?>>> RocksDB简介 https: // www.jianshu.com/p/a0088d7e9b97 1、RocksDB简介 RocksDB项目起源于Facebook的一个实验项目,该项目旨在开发一个与快速存储器(尤其是闪存)存储数据性能相当的数据库软件,以应对高负载服务。 这是一个c++库,可用于存储键和值,可以是任意大小的字节流。它支持原子读和写。 RocksDB具有高度灵活的配置功能,可以通过配置使其运行在各种各样的生产环境,包括纯内存,Flash,硬盘或HDFS。它支持各种压缩算法,并提供了便捷的生产环境维护和调试工具。 2、假设和目标 性能: RocksDB的主要设计目标是保证存取快速存储器和高负载服务器更高效,保证充分利用Flash或RAM子系统提供的高速率读写,支持高效的查找和范围scan,支持高负载的随机读、高负载的更新操作或两者的结合。其架构应该支持高并发读写和容量大增时系统的一致性。 向后兼容性: 这个软件的新版本应该是向后兼容的,因此,当升级到新版本时现有的应用程序不需要改变。 3、高级体系结构 RocksDB是一个嵌入式键值存储器,其中键和值是任意的字节流。RocksDB中的所有数据是按序存放的。常见操作包括Get(key), Put(key), Delete(key) and Scan(key)。

聊聊storm trident的state

↘锁芯ラ 提交于 2019-12-01 02:11:09
序 本文主要研究一下storm trident的state StateType storm-2.0.0/storm-client/src/jvm/org/apache/storm/trident/state/StateType.java public enum StateType { NON_TRANSACTIONAL, TRANSACTIONAL, OPAQUE } StateType有三种类型,NON_TRANSACTIONAL非事务性,TRANSACTIONAL事务性,OPAQUE不透明事务 对应的spout也有三类,non-transactional、transactional以及opaque transactional State storm-2.0.0/storm-client/src/jvm/org/apache/storm/trident/state/State.java /** * There's 3 different kinds of state: * * 1. non-transactional: ignores commits, updates are permanent. no rollback. a cassandra incrementing state would be like this 2. * repeat-transactional: