
一 单机安装
解压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命令定时重启手机或关机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)