前言

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]基本数据库操作的更多相关文章

  1. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  2. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  3. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  4. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

  5. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  7. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  8. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  9. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  10. python之数据库操作

    数据库操作 Python 操作 Mysql 模块的安装 1 2 3 4 5 linux:     yum install MySQL-python   window:     http://files ...

随机推荐

  1. 面试精灵:Java后端靠谱、强大的面试题网站(稳拿offer)

    ​面试精灵:一个给力的Java后端面试题网站. 网址:https://offer.skyofit.com 这套题真实.高频.全面.有详细答案.保你稳过面试,让你成为offer收割机.题目包括:Java ...

  2. 2023-03-10:YUV420P像素数据编码为JPEG图片,请用go语言实现。

    2023-03-10:YUV420P像素数据编码为JPEG图片,请用go语言实现. 答案2023-03-10: 方法一.使用 github.com/moonfdd/ffmpeg-go 库,基于雷霄骅的 ...

  3. vue全家桶进阶之路24:Mock

    Mock 是一个 JavaScript 库,用于生成随机数据或模拟 HTTP 请求响应,用于前端开发中的单元测试.功能测试.集成测试等场景. Mock 可以生成各种类型的数据,包括字符串.数字.布尔值 ...

  4. c3p0的配置及简单应用

    首先简单了解一下JDBC和c3p0 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸 ...

  5. 【GiraKoo】Git工具使用指南

    Git工具使用指南 Git是一个分布式版本控制工具,可以用于管理代码.本文介绍了如何使用git工具. 1. SVN和Git的区别 1.1 SVN SVN是集中式版本控制工具,所有的代码都存储在一个中央 ...

  6. phpstudy-sqlilabs-less-4

    题目:GET - Error based - Double Quotes - String              基于错误的GET双引号字符型注入 可能的注入点(不全) ' " ) ') ...

  7. 《Generative Adversarial Nets》论文精读

    论文精读<Generative Adversarial Nets> 导言:生成模型是目前爆火的一个研究方向,据Microsoft对于ChatGPT-4的研究称"ChatGPT-4 ...

  8. 数据科学工具 Jupyter Notebook 教程(一)

    ipython notebook 是一个基于浏览器的 python 数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果.jupyter 是它的升级版,它的安装也非常方便,一般 Ana ...

  9. RDD练习:词频统计

    一.词频统计: 1.读文本文件生成RDD lines lines=sc.textFile("file:///home/hadoop/word.txt") #读取本地文件 lines ...

  10. 自然语言处理 Paddle NLP - 检索式文本问答-理论

    问答系统(Question Answering System,QA) 是信息检索系统的一种高级形式,它能用准确.简洁的自然语言回答用户用自然语言提出的问题.其研究兴起的主要原因是人们对快速.准确地获取 ...