[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 ...
随机推荐
- Pwn系列之Protostar靶场 Stack6题解
源码如下: #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <stri ...
- 2022-07-01:某公司年会上,大家要玩一食发奖金游戏,一共有n个员工, 每个员工都有建设积分和捣乱积分, 他们需要排成一队,在队伍最前面的一定是老板,老板也有建设积分和捣乱积分, 排好队后,所有
2022-07-01:某公司年会上,大家要玩一食发奖金游戏,一共有n个员工, 每个员工都有建设积分和捣乱积分, 他们需要排成一队,在队伍最前面的一定是老板,老板也有建设积分和捣乱积分, 排好队后,所有 ...
- 2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,...,L[25]对应y。 S1 = a, S(i) = S(i-1) + L[i] + reverse(invert(S(
2021-11-23:规定:L[1]对应a,L[2]对应b,L[3]对应c,-,L[25]对应y. S1 = a, S(i) = S(i-1) + L[i] + reverse(invert(S(i- ...
- 手机app抓包个人简述
1.将在网上下载的手机软件放入apps 2.启动 3.查看结果 urls里是网址
- JavaScript原型与原型链深入理解
原型: 每一个js 对象(null除外)都会和另一个对象相关联,"另一个"对象就被我们称之为'原型', 而每一个原型拥有一个prototype 属性指向原型对象(就是原型的实例)的 ...
- 渗透测试-struts2攻防环境搭建拿shell
一.下载Jspstudy 打开目录D:\JspStudy\tomcat\webapps 二.打开struts2并进行拿shell 1.打开struts2 在浏览器中输入网址http://localho ...
- 简单了解一下国产CPU
这几天在B站.油管上刷了一些国产芯片真实上手视频,顺便自己也梳理一下芯片的一些基本概念,以及在美国科技制裁和围堵的情况下,国产CPU的发展情况.文末有我整理的一张思维导图,hope u find it ...
- WPF 入门笔记 - 03 - 样式基础及控件模板
原学习路线是按照圣殿骑士的<WPF基础到企业应用系列>的路线走的,但是布局之后直接依赖属性学起来有些僵硬,不太好理解,尝试了文章的前部分内容后放弃,调整为本篇博文内容.笔记路线将按照痕迹g ...
- 拒绝conda, 用virtualenv构建多版本的python开发环境
本文章转载自公众号 "生信码农笔记(ID:bio-coder)",已获得原作者授权. 1. 不喜欢用 conda 特别不喜欢 bioconda, miniconda, Anacon ...
- C++面试八股文:static和const的关键字有哪些用法?
某日二师兄参加XXX科技公司的C++工程师开发岗位第7面: 面试官:C++中,static和const的关键字有哪些用法? 二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量 ...