[etcd]基本数据库操作
前言
etcd数据库操作基本围绕着对键值和目录的CRUD操作,以及生命周期的管理。
之前在单节点部署了三实例集群,而etcdctl
默认找的是127.0.0.1:2379
,所以这里先声明一个临时全局变量
export ENDPS='http://192.168.0.41:12379,http://192.168.0.41:22379,http://192.168.0.41:32379'
键操作
增加和修改键值对
etcdctl --endpoints=${ENDPS} put /testdir/testkey1 "hello world"
etcdctl --endpoints=${ENDPS} put /testdir/testkey2 "hello world2"
etcdctl --endpoints=${ENDPS} put /testdir/testkey3 "hello world3"
删除键值对
# 删除指定键
etcdctl --endpoints=${ENDPS} del /testdir/testkey3
# 按范围删值.删除/testdir/testkey1 到 /testdir/testkey3 的键
etcdctl --endpoints=${ENDPS} del /testdir/testkey1 /testdir/testkey3
# 删除并返回被删除的键值对
etcdctl --endpoints=${ENDPS} del --prev-kv /testdir/testkey1
# 删除指定前缀的键
etcdctl --endpoints=${ENDPS} del --prefix /testdir
取值
etcdctl --endpoints=${ENDPS} get /testdir/testkey1
# 获取[testkey1, testkey3)之间的键值对
etcdctl --endpoints=${ENDPS} get /testdir/testkey1 /testdir/testkey3
# 根据键的前缀取值
etcdctl --endpoints=${ENDPS} get --prefix /testdir/testkey
# 根据键的前缀取值,限制结果只有2个
etcdctl --endpoints=${ENDPS} get --prefix /testdir/testkey --limit=2
# 添加 -w json 参数可以获取key的版本,新增的键版本为2
etcdctl --endpoints=${ENDPS} get --prefix -w=json /test
## 对一个键反复修改后,假设当前版本为7,想看历史的版本4的值
etcdctl --endpoints=${ENDPS} get --prefix --rev=4 /test
# 新增几个键
etcdctl put /test/k2 123
etcdctl put /test/k3 23
etcdctl put /test/k4 321
## 读取大于键k2值的键
etcdctl get --from-key /test/k2
watch历史改动(监测键值对的改动)
# 监测 /t/k1 键的变动,在另一个终端会话中修改该键进行测试
etcdctl watch /t/k1
# 监测 /t/k1 到 /t/k9 的变动
etcdctl watch /t/k1 /t/k9
压缩修订版本(删除历史版本)
# 删除版本5之前的数据
etcdctl compact 5
租约-lease
租约类似redis中的TTL
,实现存活周期控制。在实际应用中,常用来保持服务的心跳,即服务在启动时获取租约,将租约与服务地址绑定,并写入etcd,为了维持心跳状态,服务会定时刷新租约。
一旦租约的TTL到期,租约就过期并且所有附带的键都将被删除。(租约过期后,新增键就不能附加到租约)
创建租约
# 创建一个TTL为300秒的租约,注意返回的随机字符串
etcdctl lease grant 300
# lease 694d83d9830fba26 granted with TTL(100s)
# 新增一个绑定到694d83d9830fba26租约的键
etcdctl put --lease=694d83d9830fba26 /t/k10 't-k10'
撤销租约
etcdctl lease revoke 694d83d9830fba26
刷新租约
# 如果租约已经过期,则不能再刷新
etcdctl lease keep-alive 694d83d9830fba26
查看租约
etcdctl lease timetolive 694d83d9830fba26
# 查看租约存活时间,以及哪些key使用了该租约
etcdctl lease timetolive --keys 694d83d9830fba26
[etcd]基本数据库操作的更多相关文章
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
- ABP创建数据库操作步骤
1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- phpcms v9 中的数据库操作函数
1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') 返回 ...
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
- python之数据库操作
数据库操作 Python 操作 Mysql 模块的安装 1 2 3 4 5 linux: yum install MySQL-python window: http://files ...
随机推荐
- 面试精灵:Java后端靠谱、强大的面试题网站(稳拿offer)
面试精灵:一个给力的Java后端面试题网站. 网址:https://offer.skyofit.com 这套题真实.高频.全面.有详细答案.保你稳过面试,让你成为offer收割机.题目包括:Java ...
- 2023-03-10:YUV420P像素数据编码为JPEG图片,请用go语言实现。
2023-03-10:YUV420P像素数据编码为JPEG图片,请用go语言实现. 答案2023-03-10: 方法一.使用 github.com/moonfdd/ffmpeg-go 库,基于雷霄骅的 ...
- vue全家桶进阶之路24:Mock
Mock 是一个 JavaScript 库,用于生成随机数据或模拟 HTTP 请求响应,用于前端开发中的单元测试.功能测试.集成测试等场景. Mock 可以生成各种类型的数据,包括字符串.数字.布尔值 ...
- c3p0的配置及简单应用
首先简单了解一下JDBC和c3p0 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸 ...
- 【GiraKoo】Git工具使用指南
Git工具使用指南 Git是一个分布式版本控制工具,可以用于管理代码.本文介绍了如何使用git工具. 1. SVN和Git的区别 1.1 SVN SVN是集中式版本控制工具,所有的代码都存储在一个中央 ...
- phpstudy-sqlilabs-less-4
题目:GET - Error based - Double Quotes - String 基于错误的GET双引号字符型注入 可能的注入点(不全) ' " ) ') ...
- 《Generative Adversarial Nets》论文精读
论文精读<Generative Adversarial Nets> 导言:生成模型是目前爆火的一个研究方向,据Microsoft对于ChatGPT-4的研究称"ChatGPT-4 ...
- 数据科学工具 Jupyter Notebook 教程(一)
ipython notebook 是一个基于浏览器的 python 数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果.jupyter 是它的升级版,它的安装也非常方便,一般 Ana ...
- RDD练习:词频统计
一.词频统计: 1.读文本文件生成RDD lines lines=sc.textFile("file:///home/hadoop/word.txt") #读取本地文件 lines ...
- 自然语言处理 Paddle NLP - 检索式文本问答-理论
问答系统(Question Answering System,QA) 是信息检索系统的一种高级形式,它能用准确.简洁的自然语言回答用户用自然语言提出的问题.其研究兴起的主要原因是人们对快速.准确地获取 ...