redis pipeline+lua+es
2021/5/24 2:25:37
本文主要是介绍redis pipeline+lua+es,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis pipeline
可以一次性插入多个key的数据
@RequestMapping(value = "/add/pipeline", method = RequestMethod.GET) public void addpipeline() { stringRedisTemplate.executePipelined(new RedisCallback<String>() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { for (int i = 0; i < 10; i++) { connection.set(("pipel:" + i).getBytes(), "123".getBytes()); } return null; } }); }
redis lua
根据脚本插入数据,插入数据分为 eval和evalsha,evalsha是将脚本存到缓存中,等到插入数据的时候调用缓存。eval直接调用脚本
@RequestMapping(value = "/lua", method = RequestMethod.GET) public void redislua(){ DefaultRedisScript<Void> redisScript = new DefaultRedisScript<>(); redisScript.setLocation(new ClassPathResource("redis.lua")); stringRedisTemplate.execute(redisScript, Collections.singletonList("key1"), new String[]{"value1" }); }
源码是先调用的evalsha,不可以在用eval
protected <T> T eval(RedisConnection connection, RedisScript<T> script, ReturnType returnType, int numKeys, byte[][] keysAndArgs, RedisSerializer<T> resultSerializer) { Object result; try { result = connection.evalSha(script.getSha1(), returnType, numKeys, keysAndArgs); } catch (Exception var9) { if (!ScriptUtils.exceptionContainsNoScriptError(var9)) { throw var9 instanceof RuntimeException ? (RuntimeException)var9 : new RedisSystemException(var9.getMessage(), var9); } result = connection.eval(this.scriptBytes(script), returnType, numKeys, keysAndArgs); } return script.getResultType() == null ? null : this.deserializeResult(resultSerializer, result); }
redis.lua 放到resource下面,KEYS[1]是能够取出key,ARGV是为了取出值。
return redis.call('set',KEYS[1],ARGV[1])
elasticsearch
1.倒排索引
与数据库的对应
ElasticSearch Index(索引) Type(类型) Document(文档) Fiedls(字段)
MySQL Database(数据库) Table(表) Row(行) Column(列)
2.postman查询所有的索引
http://127.0.0.1:9200/_cat/indices?v
3.添加索引:get
4.删除索引:delete
5.添加数据内容:
需要通过post添加数据
post:不是幂等性的,每次返回的_id不同
put:是幂等性的,每次添加的id需要相同
6.更新数据内容
用put全量更新数据,put是幂等性,更新数据唯一
用post更新部分数据,请求改成_update
更改之后的数据
删除数据,只能删除一次,再次删除会发现not_found
查询指定数据
查询确定字段的数据
当查询字段比如华为手机,因为包含手机,会把小米手机也查询出来
查询全量数据
选择从第二页开始,只显示“title”字段
按照价格price顺序查询数据
{
“query”:{
“match_all”:{
} }, "from":2, "size":2, "_source":["price"], "sort":{ "price":{ "order":"desc" } }
}
这篇关于redis pipeline+lua+es的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18Redis安装入门:新手必读指南
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作