Python客户端redis-py

Python015

Python客户端redis-py,第1张

使用pip进行安装: pip install redis

redis-py的使用方法也比较简单,下面将逐步骤介绍。

1)导入依赖库:

import redis

2)生成客户端连接:需要Redis的实例IP和端口两个参数:

client = redis.StrictRedis(host='127.0.0.1', port=6379)

3)执行命令

# True 

client.set(key, "python-redis") 

# world 

client.get(key)

输出结果为:

True 

key:hello, value:python-redis

5中数据类型API

eval(String script, int keyCount, String... params) 

script_load(String script) 

evalsha(String sha1, int keyCount, String... params:

eval函数有三个参数,分别是:

·script:Lua脚本内容。

·keyCount:键的个数。

·params:相关参数KEYS和ARGV。

script_load和evalsha函数要一起使用,首先使用script_load将脚本加载到 Redis中

evalsha函数用来执行脚本的哈希值,它需要三个参数:

·scriptSha:脚本的SHA1。

·keyCount:键的个数。

·params:相关参数KEYS和ARGV。

import redis

client = redis.StrictRedis(host='127.0.0.1', port=6379)

script = "return redis.call('get',KEYS[1])"

scriptSha = client.script_load(script)

print client.evalsha(scriptSha, 1, "hello")

立即开始

快捷安装

TDengine 包括服务端、客户端和周边生态工具软件,目前 2.0 版服务端仅在 Linux 系统上安装和运行,后续将支持 Windows、macOS 等系统。客户端可以在 Windows 或 Linux 上安装和运行。在任何操作系统上的应用都可以使用 RESTful 接口连接服务端程序 taosd,其中 2.4 之后版本默认使用单独运行的独立组件 taosAdapter 提供 http 服务和更多数据写入方式。taosAdapter 需要手动启动。 之前版本 TDengine 服务端,以及所有服务端lite版,均使用内置 http 服务。

TDengine 支持 X64/ARM64/MIPS64/Alpha64 硬件平台,后续将支持 ARM32、RISC-V 等 CPU 架构。

通过 Docker 容器安装

docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp tdengine/tdengine

详细操作方法请参照 通过 Docker 快速体验 TDengine。

注:暂时不建议生产环境采用 Docker 来部署 TDengine 的客户端或服务端,但在开发环境下或初次尝试时,使用 Docker 方式部署是十分方便的。特别是,利用 Docker,可以方便地在 macOS 和 Windows 环境下尝试 TDengine。

从 2.4.0.10 开始,除 taosd 以外,Docker 镜像还包含:taos、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码。启动 Docker 容器时,将同时启动 taosAdapter 和 taosd,实现对 RESTful 的支持。

通过安装包安装

TDengine 的安装非常简单,从下载到安装成功仅仅只要几秒钟。

为方便使用,从 2.4.0.10 开始,标准的服务端安装包包含了 taos、taosd、taosAdapter、taosdump、taosBenchmark、TDinsight 安装脚本和示例代码;如果您只需要用到服务端程序和客户端连接的 C/C++ 语言支持,也可以仅下载 lite 版本的安装包。

在安装包格式上,我们提供 tar.gz, rpm 和 deb 格式,为企业客户提供 tar.gz 格式安装包,以方便在特定操作系统上使用。需要注意的是,rpm 和 deb 包不含 taosdump、taosBenchmark 和 TDinsight 安装脚本,这些工具需要通过安装 taosTool 包获得。

发布版本包括稳定版和 Beta 版,Beta 版含有更多新功能。正式上线或测试建议安装稳定版。您可以根据需要选择下载:

TDengine-server-2.4.0.12-Linux-x64.rpm (14.5 M)

TDengine-server-2.4.0.12-Linux-x64.deb (12.8 M)

TDengine-server-2.4.0.12-Linux-x64.tar.gz (15.5 M)

TDengine-server-2.4.0.12-Linux-x64-Lite.tar.gz (3.4 M)

TDengine-server-2.3.5.0-beta-Linux-x64-Lite.tar.gz (3 M)

TDengine-server-2.3.5.0-beta-Linux-x64.rpm (18.4 M)

TDengine-server-2.3.5.0-beta-Linux-x64.deb (16.8 M)

TDengine-server-2.3.5.0-beta-Linux-x64.tar.gz (18.8 M)

具体的安装方法,请参见 TDengine 多种安装包的安装和卸载 以及 视频教程。

请点击这里查看 release notes。

使用 apt-get 安装

如果使用 Debian 或 Ubuntu 系统,也可以使用 apt-get 工具从官方仓库安装,设置方法为:

wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add -echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list[ 如果安装 Beta 版需要安装包仓库 ] echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.listsudo apt-get updateapt-cache policy tdenginesudo apt-get install tdengine

仅安装客户端

如果客户端和服务端运行在不同的电脑上,可以单独安装客户端。下载时请注意,所选择的客户端版本号应该和在上面下载的服务端版本号严格匹配。Linux 和 Windows 安装包如下(其中 lite 版本的安装包仅带有 C/C++ 语言的连接支持,而标准版本的安装包还包含和示例代码):

TDengine-client-2.4.0.12-Linux-x64.tar.gz (8.2 M)

TDengine-client-2.4.0.12-Windows-x64.exe (9 M)

TDengine-client-2.4.0.12-Windows-x86.exe (9 M)

TDengine-client-2.4.0.12-Linux-x64-Lite.tar.gz (3.1 M)

TDengine-client-2.3.5.0-beta-Linux-x64-Lite.tar.gz (2.7 M)

TDengine-client-2.3.5.0-beta-Linux-x64.tar.gz (7.6 M)

TDengine-client-2.3.5.0-beta-Windows-x64.exe (8.9 M)

TDengine-client-2.3.5.0-beta-Windows-x86.exe (8.8 M)

通过源码安装

如果您希望对 TDengine 贡献代码或对内部实现感兴趣,请参考我们的 TDengine GitHub 主页 下载源码构建和安装.

下载其他组件、最新 Beta 版及之前版本的安装包,请点击这里

轻松启动

安装成功后,用户可使用 systemctl 命令来启动 TDengine 的服务进程。

systemctl start taosd

检查服务是否正常工作:

systemctl status taosd

如果 TDengine 服务正常工作,那么您可以通过 TDengine 的命令行程序 taos 来访问并体验 TDengine。

注意:

systemctl 命令需要 root 权限来运行,如果您非 root 用户,请在命令前添加 sudo 。

为更好的获得产品反馈,改善产品,TDengine 会采集基本的使用信息,但您可以修改系统配置文件 taos.cfg 里的配置参数 telemetryReporting,将其设为 0,就可将其关闭。

TDengine 采用 FQDN(一般就是 hostname)作为节点的 ID,为保证正常运行,需要给运行 taosd 的服务器配置好 hostname,在客户端应用运行的机器配置好 DNS 服务或 hosts 文件,保证 FQDN 能够解析。

systemctl stop taosd 指令在执行后并不会马上停止 TDengine 服务,而是会等待系统中必要的落盘工作正常完成。在数据量很大的情况下,这可能会消耗较长时间。

TDengine 支持在使用 systemd 做进程服务管理的 Linux 系统上安装,用 which systemctl 命令来检测系统中是否存在 systemd 包:

 which systemctl

如果系统中不支持 systemd,也可以用手动运行 /usr/local/taos/bin/taosd 方式启动 TDengine 服务。

使用 TDengine 客户端程序

执行 TDengine 客户端程序,您只要在 Linux 终端执行 taos 即可。

taos

如果连接服务成功,将会打印出欢迎消息和版本信息。如果失败,则会打印错误消息出来(请参考 FAQ 来解决终端连接服务端失败的问题)。客户端的提示符号如下:

taos>

在 TDengine 客户端中,用户可以通过 SQL 命令来创建/删除数据库、表等,并进行插入查询操作。在终端中运行的 SQL 语句需要以分号结束来运行。示例:

CREATE DATABASE demoUSE demoCREATE TABLE t (ts TIMESTAMP, speed INT)INSERT INTO t VALUES ('2019-07-15 00:00:00', 10)INSERT INTO t VALUES ('2019-07-15 01:00:00', 20)SELECT * FROM t          ts            |    speed    |======================================== 2019-07-15 00:00:00.000 |          10 | 2019-07-15 01:00:00.000 |          20 |Query OK, 2 row(s) in set (0.003128s)

除执行 SQL 语句外,系统管理员还可以从 TDengine 客户端进行检查系统运行状态、添加删除用户账号等操作。

命令行参数

您可通过配置命令行参数来改变 TDengine 客户端的行为。以下为常用的几个命令行参数:

-c, --config-dir: 指定配置文件目录,默认为 /etc/taos

-h, --host: 指定服务的 FQDN 地址或 IP 地址,默认为连接本地服务

-s, --commands: 在不进入终端的情况下运行 TDengine 命令

-u, --user: 连接 TDengine 服务端的用户名,缺省为 root

-p, --password: 连接 TDengine 服务端的密码,缺省为 taosdata

-?, --help: 打印出所有命令行参数

示例:

taos -h h1.taos.com -s "USE dbSHOW TABLES"

运行 SQL 命令脚本

TDengine 终端可以通过 SOURCE 命令来运行 SQL 命令脚本。

taos>SOURCE <filename>

taos shell 小技巧

可以使用上下光标键查看历史输入的指令

修改用户密码:在 shell 中使用 ALTER USER 命令,缺省密码为 taosdata

Ctrl+C 中止正在进行中的查询

执行 RESET QUERY CACHE 可清除本地缓存的表 schema

批量执行 SQL 语句。可以将一系列的 shell 命令(以英文 结尾,每个 SQL 语句为一行)按行存放在文件里,在 shell 里执行命令 SOURCE <file-name> 自动执行该文件里所有的 SQL 语句

输入 q 回车,退出 taos shell

TDengine 极速体验

使用 taosBenchmark 体验写入速度

启动 TDengine 的服务,在 Linux 终端执行 taosBenchmark (曾命名为 taosdemo)。taosBenchmark 在 TDengine 2.4.0.7 和之前发布版本在 taosTools 安装包中发布提供,在后续版本中 taosBenchmark 将在 TDengine 标准安装包中发布。

taosBenchmark

该命令将在数据库 test 下面自动创建一张超级表 meters,该超级表下有 1 万张表,表名为 "d0" 到 "d9999",每张表有 1 万条记录,每条记录有 (ts, current, voltage, phase) 四个字段,时间戳从 "2017-07-14 10:40:00 000" 到 "2017-07-14 10:40:09 999",每张表带有标签 location 和 groupId,groupId 被设置为 1 到 10, location 被设置为 "beijing" 或者 "shanghai"。

这条命令很快完成 1 亿条记录的插入。具体时间取决于硬件性能,即使在一台普通的 PC 服务器往往也仅需十几秒。

taosBenchmark 详细功能列表

taosBenchmark 命令本身带有很多选项,配置表的数目、记录条数等等,请执行 taosBenchmark --help 详细列出。您可以设置不同参数进行体验。

taosBenchmark 详细使用方法请参照 如何使用 taosBenchmark 进行性能测试。

使用 taos shell 体验查询速度

1)通过paramiko的ssh模块连接指定主机;

2) 通过SSHClient.exec_command在远程主机上执行命令;

3)通过exec_command返回的stdout,stdin,stderr进行交互;

4)保存成功连接的主机信息(session),可以通过ls命令查看, session id命令,直接启动新连接;

5)可在windows和linux下运行,写程序时需要注意他们的差别。

代码ssh.py

#!/usr/bin/python

# -*- coding: utf-8 -*-

 

import os,sys

import paramiko  

import threading  

import platform

 

curr_ssh = None 

curr_prompt = ">>"

 

#使用说明       

def printUsage():

    print "    !ls                     :list sessions."

    print "    !session id             :connect session."

    print "    !conn host user password:connect host with user."

    print "    !exit                   :exit."

 

#连接 

def conn(ip,username,passwd):

    try:

        ssh = paramiko.SSHClient()  

        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  

        ssh.connect(ip,22,username,passwd,timeout=5)  

        print "Connect to ",ip," with ",username

        global curr_prompt

        curr_prompt=username+"@"+ip+">>"

        return ssh

    except:

        return None

         

#加载以前的连接信息

sessions=[]

def loadSessions():

    global sessions

    try:

        f = open("sessions")

        sessions = f.readlines()

        f.close()

    except:

        pass

 

#执行本地命令,ssh.py的命令       

def exe_cmd_local(cmd):

    if(cmd == "!ls"):

        loadSessions()

        global sessions

        i=0

        print "Sessions:"

        for s in sessions:

            print"[%d] %s" %(i,s)

            i+=1

    else:

        vals = cmd.split(' ')

        if(vals[0]=="!session"):

            id = (int)(vals[1])

            if(id<len(sessions)): os_name="platform.system()" new_console_cmd="" if(os_name="=" "linux"):="" .="" ssh.py="" "="" +="" sessions[id]+"\""="" elif(os_name="=" "windows"):="" sessions[id]="" os.system(new_console_cmd)="" else:="" print="" "didn't="" hava="" sessoin="" ",vals[1]="" elif(vals[0]="="!conn"):" global="" curr_ssh="" f="open("sessions","a")" line="vals[1]+"" "+vals[2]+"="" "+vals[3]+"\n"="" f.write(line)="" f.close()="" #在ssh连接的主机上执行命令="" def="" exe_cmd_ssh(ssh,cmd):="" if(ssh="=" none):="" connect="" to="" a="" server.="" use="" '!conn'="" please."="" return="" stdin,="" stdout,="" stderr="ssh.exec_command(cmd)" #stdin.write("y")="" #简单交互,输入="" ‘y’="" #屏幕输出="" stdout.read()="" stderr.read()="" #入口函数="" if="" __name__="='__main__':" loadsessions()="" if(len(sys.argv)="=4):" printusage()="" while="" true:="" cmd="raw_input(curr_prompt)" if(len(cmd)="=0):" continue="" if(cmd="=" "!exit"):="" if(curr_ssh="" !="None):" curr_ssh.close()="" break="" if(cmd[0]="=" '!'):="" exe_cmd_local(cmd)="" exe_cmd_ssh(curr_ssh,cmd)<="" pre="">