一、 redis-cli命令行参数

1、-x参数:从标准输入读取一个参数:

【问题】

【解决】

因为echo命令是默认带有回车\n的,不带回车需要echo –n命令:

echo -n "haha"|redis-cli -x set name,从标准输入读入一个参数到redis,就不会有回车符;

2、-r参数:重复执行一个命令指定的次数; -i参数:设置命令执行的间隔;

例子:每隔1秒执行一次,一共执行3次info命令

3、-rdb文件:获取指定redis实例的rdb文件,保存到本地

可以利用这个办法,将远程其他redis服务器的rdb文件,集中保存到一个地方

4、--scan和pattern参数:用scan命令扫描redis中的key,pattern选择指定扫描的key的pattern,相比key pattern模式,scan命令不会长时间阻塞redis而导致其他客户端的命名请求一直处于阻塞状态;

(1)scan命令:SCAN   c u r s o r   [MATCH p a t t e r n]   [COUNT c o u n t]

即用法:

scan <游标值> ##遍历,默认返回key个数

scan <游标值>  <match [pattern]>  ##匹配模式

scan <游标值>   <count [count]>##自定义返回key个数

scan <游标值>  <match [pattern]> <count [count]>##匹配模式,自定义返回key个数

SCAN命令是一个基于游标的迭代器。这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程

当SCAN命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束;

SCAN命令的返回值 是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素。

在第二次调用 SCAN 命令时, 命令返回了游标 0 , 这表示迭代已经结束, 整个数据集已经被完整遍历过了;

(2)scan <pattern>命令和keys <pattern>命令功能一样,都是查看key的,但是scan命令相比keys命令,不会长时间阻塞;

或者

5、-s参数:客户端和服务器端在同一个机器,可以通过socket方式连接;

Socket方式连接,不用出网卡,类似于进程间通信,性能更高;

 

6、--stat参数:获取redis的诊断数据

 

7、-pipe参数:发送原始的redis protoc格式数据到服务器端执行,要对redis的传输协议了解

(1)

【总结】

*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n  这串字符,就是键值key:value在redis的rdb文件里存储的格式

(2)以redis protoc格式数据,将键值name:chenjing保存到redis里

*3\r\n$3\r\nset\r\n$4\r\nname\r\n$8\r\nchenjing\r\n

set name chenjing

*3表示一共3个参数;

\r\n表示空格;

$3表示参数的字节数,例如set是3个字母,set命令前先标记$3;

8、--bigkeys参数:对redis中key采样(调用scan命令),寻找较大的keys,给出数据统计

9、--latency参数:可以获取到命令的请求时间,包括min max  avg

二、数据结构基础

1、

(1)redis本身实现叫做字典,实质也是hash;

(2)string类型,包括文本字符串、数值(整数、浮点数)有符号的64位、二进制格式的数据等三种;

(3)list类型,就是链表;

(4)set类型,和java的set类型一样;

(5)hash类型,和java里的hash table类型;

(6)zset类型,有序的集合;

 

2、string类型相关命令:

(1)set命令

(2)get命令:返回键值;

(3)mget命令:

(4)mset命令:

(5)msetnx命令:

(6)append命令:实现字符串的拼接

(7)incr命令:对数字自增1

(8)decr命令:自减1命令

(9)incrby命令:自定义,自增的数值

(10)decrby命令:自定义,自减的数值

(11)incrbyfloat命令:对浮点数的自增

###需要注意,redis里对浮点数计算的命令,就一个incrbyfloat命令,没有decrbyfloat命令,浮点数的自减操作,可以通过incrbyfloat 一个负数来实现

 

(12)getset命令:设置新值的同时,把旧值返回给调用者

(13)strlen命令:返回key对应的value的长度

(14)getrange命令:返回字符串类型值的子串

###注释信息有误!getrange <key> start end,其中start从0开始

(15)getbit命令:获取字符串类型指定位置的二进制位的值

(16)setbit命令:设置字符串类型指定位置的二进制的值,返回值是该位置的旧值

(17)bitcount命令:获得字符串类型中值是1的二进制位个数

2、LIST类型相关命令

使用场景:微博评论、秒杀功能

(1)lpush命令: 向list插入元素

(2)lpop命令:

###lpop命令,left,是从左边移除;如果是lpush+lpop,这样的操作就是堆栈(先进后出)

 

(3)blpop命令:

###b是block,阻塞的意思

(4)llen命令:返回对应key的list中值的数量

(5)rpoplpush命令:

(5.1) name列表有元素:name2 name1;

number列表有元素:number2 number1

(5.2)将name列表的尾部元素移除,并加到number列表的头部

(5.3)可以看到,name列表的元素少了一个,number列表的元素多了一个

)查看number列表的头部元素是否是name1

 

(6)lindex命令:返回key指定的list中位置为index的值

(7)linsert命令:把value的值插入key对应的list中去

(8)lrange命令:返回一个区间的值,从list的头(左)到尾(右)

###可以用lindex命令,通过指定list中元素所在index来查看元素值,

也可以用lrange命令,指定index范围,同时查看list中多个元素

(9)lrem命令:删除值等于value的count个元素

(10)ltrim命令:对key指定的list进行裁剪,提取子集

(11)lset命令:修改key对应的list中,位置为index的元素的值为value

  

 

3、keys相关操作:

(1)del命令:删除指定的key

(2)dump命令:按照rdb的存储格式把指定的key的值序列化并返回客户端。此序列化值U币包含ttl信息

(3)restore命令:把通过dump命令序列化的值再存进去。

(3)restore命令:把通过dump命令序列化的值再存进去

###如果restore命令好的key是已存在的,需要加replace

(4)exists命令:判断key是否存在,粗过存在返回值1

(5)expire命令:设置key的超时时间,单位是秒

(6)expireat命令:设置key的超时时间,设置的是精确时间

(7)keys命令:返回符合pattern模式的所有key,该操作会阻塞影响性能

(8)scan命令:基于游标方式返回当前数据库的key,因为每次返回的数据不多,因此不会阻塞服务器

4、hash类型数据的命令操作:

(1)hset命令:定义hash类型的成员元素值

(2)hmset命令:和hset类似,但是一次设置多个值

(3)hsetnx命令:如果元素不存在则设置值

 

(4)hkey命令:获取key对应的hashmap里所有field

##hget命令:是获取key对应的hashmap里所有value

##hgetall命令:是获取key对应的hashmap里所有field-value

(5)hget命令:获取key对应的hashmap中某个field的值

(6)hmget命令:获取key对应的hashmap中指定的多个filed的值

(7)hval命令:获取key对应的hashmap中所有filed的值

(8)hstrlen命令:返回filed对应的值的长度  ##这个hstrlen命令在redis3.0测试,不支持

(9)hdel命令:删除key对应的hashmap里指定field,可以原子性删除多个field

(10)hexists命令:判断key对应的hashmap里指定的field是否存在,存在返回1

(11)hgetall命令:返回key对应的hashmap里所有的field-value对

第二课补充01——redis-cli命令行详解、string类型、list类型、hash类型命令操作详解的更多相关文章

  1. 命令行输入Jmeter提示不是内部或外部命令,处理方式:添加环境变量

    命令行输入Jmeter提示不是内部或外部命令,需要在环境变量path中添加jmeter的bin目录绝对路径 我的电脑 > 右击 >属性 > 高级系统变量 > 环境变量 > ...

  2. Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)详解 | JavaGuide

    首发于:Redis 5 种基本数据结构详解 - JavaGuide 相关文章:Redis常见面试题总结(上) . Redis 5 种基本数据结构(String.List.Hash.Set.Sorted ...

  3. webpack 命令行报错“webpack” 不是内部或外部命令的解决方法

    1. NodeJS安装,笔者安装在D盘.安装目录中有两个文件夹node_cache,node_global如下: 2. 配置 npm安装路径,输入如下命令: npm config set prefix ...

  4. modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法

    安装完modelsim后,用过命令行模式仿真,如“vsim -c -do run.do”,开始时是可以的. 后来偶然再用该仿真方式,发现命令行提示“vsim 不是内部或外部命令,也不是可运行的程序或批 ...

  5. 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令

    简介 在做Python开发时,安装需要的第三方库时,大多数人喜欢选择在命令行用pip进行安装. 然而有时敲入pip命令会提示‘pip’不是内部或外部命令..如图: 解决办法 1.在python安装目录 ...

  6. MAC - 命令行中用sublime打开指定文件,使用ln命令建立软链接

    眼下sublime是mac下最好的文本编辑软件.常常要使用它打开一些文件,比如html,js,txt,json等文件,可是sublime2默认不支持在命令行下调用.经过研究发现能够用建立软连接的方式调 ...

  7. DOS命令行(10)——reg/regini-注册表编辑命令行工具

    注册表的介绍 注册表(Registry,台湾.港澳译作登錄檔)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息.   1. 数据结构 注册表由键(key,或称 ...

  8. 第三课补充01——set类型 sorted类型命令操作详解,redis管道及事务

    1. set类型的命令操作: (1)sadd命令:向key指定的set集合添加成员 ##sadd命令:是设置set集合类型的数据,sadd  <key> <mumber> [& ...

  9. 在cmd命令行中弹出Windows对话框(使用mshta.exe命令)

    有时候用bat写一些小脚本最后会弹出对话框提示操作成功,可以用mshta.exe来实现,它是Windows系统的相关程序,用来执行.HTA文件,一般计算机上面都有这个程序,实现如下: mshta vb ...

随机推荐

  1. NoSQL(三)

    redis集群介绍 1.官方叫cluster,redis3.0才直接的一个架构,如果数据量很大,单台机器已经无法满足存储,查询的瓶颈,所以我们需要多台机器构成一个大集群,用来解决存储空间,查询速度,负 ...

  2. unity, break prefab instance

    菜单->GameObject->Break Prefab Instance,可以打断prefab实例与prefab的连接. 一个用处是:比如想从sceneA拷贝一部分Hierarchy结构 ...

  3. file's owner以及outlet与连线的理解

    转自:http://www.cnblogs.com/martin1009/archive/2012/06/01/2531028.html xib文件本身可以看做是一个xml,app启动的时候会根据xm ...

  4. flink on yarn部分源码解析 (FLIP-6 new mode)

    我们在https://www.cnblogs.com/dongxiao-yang/p/9403427.html文章里分析了flink提交single job到yarn集群上的代码,flink在1.5版 ...

  5. python学习之count()

    定义: count()方法用于统计对象中,某个字符出现的次数 语法: str.count(sub, start= ,end=len(string)) sub:搜索的对象 start和end:搜索的范围 ...

  6. 李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理

    李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理 问题 简单介绍 ARC 以及 ARC 实现的原理. 考查点 ARC 是苹果在 WWDC 2011 提出来的技术,因此很多新入行的 ...

  7. log4j容器初始化探究

    Log4j容器初始化探究 Log4j第一步就是初始化Logger容器Repository,这一章我们来探究Logger容器,从别从独立应用以及servlet容器下启动初始化两方面探究. 1 独立应用 ...

  8. Sqlserver 批量数据更改

    insert into AAA select GETDATE(),name from BBB where aid=0 update a set a = b.a,b=b.b,c=b.c from t a ...

  9. Jquery学习笔记(6)--jquery中attr和prop的区别【精辟】

    jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很 ...

  10. What is Web Application Architecture? How It Works, Trends, Best Practices and More

    At Stackify, we understand the amount of effort that goes into creating great applications. That’s w ...