redis如何在shell中建表

redis如何在shell中建表,第1张

一 单机安装

解压redis

进入文件夹执行mke and make install

1

2

# prefix指定安装路径

make && make prefix=/opt/hjf/redis-2818 install

配置环境变量

以后自动打开redis服务

进入解压包的utils目录, 执行:

1

/install_serversh

进入redis服务器:

1

redis-cli

二shell命令

1 strings

1 set:设置

SET key value [EX seconds] [PX milliseconds] [NX|XX]

EX: 过期时间(秒)

PX: 过期时间(毫秒)

NX: 键不存在时, 才能设置(只能创建, 不能修改)

XX: 键存在时, 才能设置(只允许修改, 不允许创建)

普通模式

1

2

# 默认永久保存

set k1 aa

设置生命周期

1

2

# 5s后自动删除

set k3 c ex 5

过时后就获取不了了

只允许创建, 不允许修改

1

2

# 相当于: setnx k4 abc

set k4 abc nx

只允许修改, 不允许创建

1

set k5 123 xx

2 get:获取

GET key

1

get k1

3 keys: 获取key列表

KEYS pattern

1

2

keys

keys k

4 setnx: 如果key不存在,则执行

SETNX key value

相当于只允许创建,而不允许修改。

1

2

setnx k3 5

set k3 5 nx #等价

5 strlen 获取长度:

STRLEN key

1

strlen k6

6 清空库

flushall 清空所有库的数据:

1

flushall

flushdb: 清空当前库数据:

1

flushdb

7 expire 设置过期时间:

EXPIRE key seconds

1

expire k1 5

8 type: 查看key的类型

1

TYPE key

虽然所有的数据类型都是以“string”存储,但是有属性加一区别:

9 自增/自减

incr / incrby: 增加

INCR key: 自增+1

INCRBY key num: 自增 + num

decr / decrby:减少

DECR key: 自减 - 1

INCRBY key num: 自减 - num

注意: 在遇到数值 *** 作时,redis会将字符串类型转换成数值

由于INCR等指令本身就具有原子 *** 作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果,假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的 *** 作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

10 getset 返回旧值,并设置新的值:

GETSET key value

11 append: 追加

APPEND key value

12 getrange获取子字符串

GETRANGE key start end

2 集合:

1 无序集合

sadd: 创建集合

1

sadd set1 s1 s2 s3 s2 s4 s1

smembers: 读取集合元素

1

smembers set1

sismember : 判断元素是否在集合中

如果在, 则返回1; 如果不在, 则返回0

1

sismember set1 "one"

srandmember : 随机获取集合元素

1

srandmember set1

mset:同时设置多组key-value

MSET key value [key value …]

1

mset key1 value1 key2 value2

sdiff: 差集

1

sdiff num1 num2

交集:sinter

1

sinter num1 num2

并集:sunion

1

sunion num1 num2

2 有序集合

zadd: 添加元素

ZADD key score member [score member …]

1

2

zadd set2 1 one

zadd set2 2 two 3 three 4 four 5 five

zrange: 获取元素

获取所有元素

1

zrange set2 0 -1

获取指定范围内的元素

1

zrange set2 2 4

列出所有元素,同时列出其位置

1

zrange set2 0 -1 withscores

3 哈希

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

hmset: 建立哈希,并赋值

1

hmset user1 user zhangsan age 20 gender m

hgetall: 列出哈希的内容

1

hgetall user1

hget: 获取哈希中的某一个值

1

hget user1 age

hset: 更改哈希中的某一个值

1

hset user1 user lisi

hkeys: 获取key列表

1

hkeys user1

hvals: 获取value列表

1

hvals user1

4 列表

lpush: 向列表头部(左侧)插入元素, 返回当前列表元素个数

1

2

lpush l1 a

lpush l1 b c

rpush: 向列表尾部(右侧)插入元素, 返回当前列表元素个数

1

2

rpush l1 c

rpush l1 d

lrange: 获取列表元素

1

2

3

4

# 获取编号0到倒数第一个元素

lrange l1 0 -1

# 获取编号0到编号2的

lrange l1 0 2

rpop: d出列表尾部(右侧)的元素

1

rpop l1

lpop: d出头部(左侧)的元素

1

lpop l1

lrem : 删除指定值

LREM key count value

如果count < 0, 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。

如果count > 0, 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。

如果count = 0, 移除表中所有与 VALUE 相等的值。

1

lrem l3 -2 a

1

lrem l3 -2 c

1

lrem l3 0 b

方式一

当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误 *** 作

在这里插入描述

方式二

使用shell脚本执行sql

1 先找到达梦数据库安装位置吧

[root@localhost ~]# ss -nlp |grep 5236

tcp LISTEN 0 128 [::]:5236 [::]: users:(("dmserver",pid=103380,fd=4))

[root@localhost ~]# ps -ef|grep dmserver

root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver

dmdba 103380 1 8 13:36 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dmini -noconsole

1

2

3

4

5

1

2

3

4

5

2 直接在linux上执行shell命令执行sql脚本

21 # disql username/password:port

使用这个命令可以进入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 5524(ms)

disql V8

SQL>

进入SQL>后:

直接输入sql语句,使用英文分号结尾,回车执行。

使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)

使用“start sql文件路径”,可以执行sql脚本文件。

22 # disql username/password:port `sql文件位置

使用这个命令可以执行sql脚本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/testsql

[root@localhost sql]#

1

2

1

2

但需注意

这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。

这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。

23 达梦sql脚本注意事项

目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束

例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 6121(ms)

disql V8

SQL> create schema test;

2

3 /

*** 作已执行

已用时间: 26698(毫秒) 执行号:700604

SQL>

sql脚本示例:

-- 创建schema

CREATE SCHEMA DB_ZFBA_MOBILE;

/

-- 执行过程

begin

if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then

EXECUTE immediate 'drop table DB_ZFBA_MOBILET_ZJTQD';

end if;

end;

/

create table DB_ZFBA_MOBILET_ZJTQD

(

"C_BH" char(32) NOT NULL, -- 主键

"C_BH_AJ" varchar2(32) NULL, -- 案件编号

……

"DT_ZHXGSJ" datetime NULL, -- 最后修改时间

constraint PK_T_ZJTQD primary key( C_BH )

);

sql文件结尾添加exit;,保证多个sql文件执行不会中断

3 编写shell脚本

注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)

例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b

#!/bin/bash

# 请先配置数据库连接信息,再执行此脚本

DM_PATH=/home/dmdba/dmdbms #达梦数据库的安装位置

USERNAME=cpuser #达梦数据库连接用户名

PASSWORD=cpuser123 #达梦数据库连接密码

PORT=5236 #达梦数据库连接端口号

# 下面的信息请不要随意修改

CONNECT_INFO=$USERNAME/$PASSWORD:$PORT

echo "连接信息:"$CONNECT_INFO

# STEP 1

echo "开始执行---- sql/02_创建数据库对象/00CS_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00CS_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/00CS_GSYSsql"

# STEP 2

echo "开始执行---- sql/02_创建数据库对象/01CT_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01CT_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/01CT_GSYSsql"

# STEP 3

echo "开始执行---- sql/02_创建数据库对象/02CC_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02CC_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/02CC_GSYSsql"

# STEP 4

echo "开始执行---- sql/02_创建数据库对象/03CI_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03CI_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/03CI_GSYSsql"

# STEP 5

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

# STEP 6

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_Code_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

# Complete

echo "SQL全部执行完成---- 日志请查看DB_DMlog"

执行完成后,通过shell控制台和DB_DMlog日志可以分析sql脚本是否执行成功。

首先来看这道题的本质,其原理就是定时的调用adb的关机命令,

这么来想就不难了。

其次,制定一个定时的线程,线程的休眠时间由控制者传入,例如需要5秒后关机,那线程的休眠时间就设置为5000毫秒。

等待倒计时结束后调用adb的关机命令adb

reboot即可,小编亲测,希望采纳

你在使用vbnet吧?

可以参照下面代码,他可以让你在自己程序输入dos命令

//dosCommand Dos命令语句

public string Execute(string dosCommand)

{

return Execute(dosCommand, 10);

}

/// <summary>

/// 执行DOS命令,返回DOS命令的输出

/// </summary>

/// <param name="dosCommand">dos命令</param>

/// <param name="milliseconds">等待命令执行的时间(单位:毫秒),

/// 如果设定为0,则无限等待</param>

/// <returns>返回DOS命令的输出</returns>

public static string Execute(string command, int seconds)

{

string output = ""; //输出字符串

if (command != null && !commandEquals(""))

{

Process process = new Process();//创建进程对象

ProcessStartInfo startInfo = new ProcessStartInfo();

startInfoFileName = "cmdexe";//设定需要执行的命令

startInfoArguments = "/C " + command;//“/C”表示执行完命令后马上退出

startInfoUseShellExecute = false;//不使用系统外壳程序启动

startInfoRedirectStandardInput = false;//不重定向输入

startInfoRedirectStandardOutput = true; //重定向输出

startInfoCreateNoWindow = true;//不创建窗口

processStartInfo = startInfo;

try

{

if (processStart())//开始进程

{

if (seconds == 0)

{

processWaitForExit();//这里无限等待进程结束

}

else

{

processWaitForExit(seconds); //等待进程结束,等待时间为指定的毫秒

}

output = processStandardOutputReadToEnd();//读取进程的输出

}

}

catch

{

}

finally

{

if (process != null)

processClose();

}

}

return output;

}

以上就是关于redis如何在shell中建表全部的内容,包括:redis如何在shell中建表、达梦数据库shell脚本怎么获取查询语句结果集、使用adb命令或shell命令定时重启手机或关机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9653888.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存