开发常用命令

一.Redis

exists

  exists key

 确认一个key是否存在 

 例如: exists ruanl

 如果存在返回(integer)1 不存在 返回(integer)0

type

  type key

 返回值的类型

 例如 :type ruanl

 返回 string ,hash,list,set 

randomkey

randomkey 

随机返回key空间的一个

rename

rename oldkey newkey

重命名key

当 oldkey 和 newkey 相同,或者 oldkey 不存在时,返回一个错误

当 newkey 已经存在时, RENAME 命令将覆盖旧值

慎用 ! rename 命令执行后,oldkey会在redis 中消失 ,如果newkey 已经存在,oldkey会覆盖newkey的类型和value

select

select index

Redis Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值

Redis 默认数据库个数是16,索引范围为0-15,就像mysql服务器可以有多个实例,各个数据库之间是相互分离的,每个数据库都有属于自己的空间,不必担心之间的key冲突。

redis下,数据库是由一个整数索引标识,而不是由一个数据库名称.

例如:

select 1;

提示符切换到:

127.0.0.1:6379[1]> 

move

将当前数据库的 key 移动到给定的数据库 db 当中

MOVE key db

移动成功返回 1 ,失败则返回 0

expire

设定一个key的活动时间(s)

EXPIRE key seconds

当 key 过期时(生存时间为 0 ),它会被自动删除

ttl

以秒为单位,返回给定 key 的剩余生存时间

TTL key

当 key 不存在时,返回 -2

当 key 存在但没有设置剩余生存时间时,返回 -1

否则,以秒为单位,返回 key 的剩余生存时间

删除

del key [key …]

删除多个key,这种对于几个以内的key还好,但对于包含数量比较多的时候不适用

flushdb

删除当前选择数据库中的所有key

flushall

删除所有数据库中的所有key

这2种在正式环境中使用非常不合适,如果我们想要删除匹配某一规则的key怎么处理呢

可以参考这2种

eval 脚本删除

eval “return redis.call(‘del’,unpack(redis.call(‘keys’,ARGV[1])))” 0 RULE_FIXED_REPAYMENT_*

这样的方式,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本

但这种处理方式,量大的情况下,lua函数unpack会出现问题

可以采用脚本循环处理

xargs

但是有的redis版本过低没有内置lua解释器,可以使用linux xargs 命令处理

 redis-cli -h ip -a password keys SILK_BAG_DETAIL_* |xargs redis-cli -h ip -a password del

如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径

如:/opt/redis/redis-cli keys “*” | xargs /opt/redis/redis-cli del

既然讲到了linux 的 xargs,简单介绍一下

xargs

xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题.

相当于给命令传递参数的过滤器,组合多个命令的一个工具。

例如:我们想要获得/usr/ 下所有*.test 结尾的文件列表,并删除

find /etc -name "*.test" | rm

这样linux 是不支持的

但是我们可以通过

find /usr -name "*.test" | xargs rm

find -name '*.log' -print0 | xargs -0 rm

find -print和-print0的区别:

-print每一个输出后会添加一个回车换行符,而-print0则不会.

例如:

find -name "*.te" -print0

显示:

./test1.te./test2.te

 find -name "*.te" -print

./test1.te
./test2.te

-0
当stdin含有特殊子元的时候,将其当成一般字符

mysql

查询分析

慢查询日志

慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询;

 通过

 SHOW VARIABLES LIKE '%query%'

查看慢查询日志的信息;

SHOW VARIABLES LIKE '%slow_query_log%'
Variable_nameValue
slow_query_logon
slow_query_log_file/var/lib/mysql/slow_queries.log
SHOW VARIABLES LIKE 'long%';

查看 long_query_time
Variable_nameValue
long_query_time10.000

默认值为10秒

# Time: 161117 15:30:33
# User@Host: db_write[db_write] @  [192.168.1.91]  Id: 31477
# Query_time: 63.218828  Lock_time: 0.000127 Rows_sent: 0  Rows_examined: 12777
use zglc_zjcg;
SET timestamp=1479367833;

SELECT
r.*   FROM  base_interest_record r JOIN base_invest t  ON t.transaction_id = r.assoc_id WHERE t.free_product_type = 2
GROUP BY r.user_id = 11341
ORDER BY id desc
LIMIT 0, 1000;

通过慢查询记录的 那条语句导致慢查询(sql_text),该慢查询语句的查询时间(query_time),锁表时间(Lock_time),以及扫描过的行数  
(rows_examined)等信息。

使用 show profile;

  show profiles ;

  Empty set (0.00 sec)

 说明profiles功能是关闭的,使用下面命令开启

 mysql> set profiling = 1;
 Query OK, 0 rows affected, 1 warning (0.00 sec) 

 show profiles ;

+———-+————+—————————————————-+
| Query_ID | Duration | Query |
+———-+————+—————————————————-+
| 1 | 0.00025850 | select id,username from user_info where id = 11556 |
+———-+————+—————————————————-+
1 row in set, 1 warning (0.00 sec)

以很高的精度显示了查询的相应时间

show profile for query 1;

给出了执行每个步骤及其花费的时间

使用 SHOW STATUS

MYSQL 的 SHOW STATUS命令返回了一些计数器,查看mysql 的服务器状态信息

当我们执行show status语句时,MySQL将会列出多达300多条的状态信息记录,其中包括了供我们查看了解的各种信息。

不过,如果直接使用show status指令得到300多条记录,会让我们看得眼花缭乱,

因此我们希望能够「按需查看」一部分状态信息。这个时候,我们可以在show status语句后加上对应的like子句

show status like ''

一些常用:

Connections : 查看试图连接到MySQL(不管是否连接成功)的连接数

threads_cached :查看线程缓存内的线程的数量

threads_connected :查看当前打开的连接的数量

threads_running : 查看激活的(非睡眠状态)线程数

table_locks_waited : 查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询

Handler_read_rnd_next : 没有用到索引的读操作

使用 SHOW PROCESSLIST;

显示哪些线程正在运行

Id :
User:
Host:
db:
Command:
Time:
state 状态
Info:

关键列 state 

这个大家可以自行查询具体的状态信息

如果发现被锁

通过Kill QUERY xx 为Id的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值