第二课补充01——redis-cli命令行详解、string类型、list类型、hash类型命令操作详解
一、 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类型命令操作详解的更多相关文章
- 命令行输入Jmeter提示不是内部或外部命令,处理方式:添加环境变量
命令行输入Jmeter提示不是内部或外部命令,需要在环境变量path中添加jmeter的bin目录绝对路径 我的电脑 > 右击 >属性 > 高级系统变量 > 环境变量 > ...
- Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)详解 | JavaGuide
首发于:Redis 5 种基本数据结构详解 - JavaGuide 相关文章:Redis常见面试题总结(上) . Redis 5 种基本数据结构(String.List.Hash.Set.Sorted ...
- webpack 命令行报错“webpack” 不是内部或外部命令的解决方法
1. NodeJS安装,笔者安装在D盘.安装目录中有两个文件夹node_cache,node_global如下: 2. 配置 npm安装路径,输入如下命令: npm config set prefix ...
- modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法
安装完modelsim后,用过命令行模式仿真,如“vsim -c -do run.do”,开始时是可以的. 后来偶然再用该仿真方式,发现命令行提示“vsim 不是内部或外部命令,也不是可运行的程序或批 ...
- 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
简介 在做Python开发时,安装需要的第三方库时,大多数人喜欢选择在命令行用pip进行安装. 然而有时敲入pip命令会提示‘pip’不是内部或外部命令..如图: 解决办法 1.在python安装目录 ...
- MAC - 命令行中用sublime打开指定文件,使用ln命令建立软链接
眼下sublime是mac下最好的文本编辑软件.常常要使用它打开一些文件,比如html,js,txt,json等文件,可是sublime2默认不支持在命令行下调用.经过研究发现能够用建立软连接的方式调 ...
- DOS命令行(10)——reg/regini-注册表编辑命令行工具
注册表的介绍 注册表(Registry,台湾.港澳译作登錄檔)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息. 1. 数据结构 注册表由键(key,或称 ...
- 第三课补充01——set类型 sorted类型命令操作详解,redis管道及事务
1. set类型的命令操作: (1)sadd命令:向key指定的set集合添加成员 ##sadd命令:是设置set集合类型的数据,sadd <key> <mumber> [& ...
- 在cmd命令行中弹出Windows对话框(使用mshta.exe命令)
有时候用bat写一些小脚本最后会弹出对话框提示操作成功,可以用mshta.exe来实现,它是Windows系统的相关程序,用来执行.HTA文件,一般计算机上面都有这个程序,实现如下: mshta vb ...
随机推荐
- java类的初始化和构造函数
本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ...
- unity, GetComponent<Renderer>().bounds.size vs GetComponent<MeshFilter>().sharedMesh.bounds.size
GetComponent<MeshFilter>().sharedMesh.bounds.size获得的是未经缩放的大小. GetComponent<Renderer>().b ...
- @@identity、scope_identity()、IDENT_CURRENT('tablename')函数的区别
@@IDENTITY 和SCOPE_IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值.但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值:@@IDENTITY 不受限于 ...
- EHCache 在WEB项目的使用方法
EHCache 是一个纯java的在进程中的缓存,它具有下面特性:高速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和測试.官方站点http://ehcache.sour ...
- 分布式系统的CAP和BASE理论
1. 背景 网络分区:俗称“脑裂”.当网络发生异常情况,导致分布式系统中部分节点之间的网络延时不断变大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能. 当网 ...
- Zynq GPIO 中断
/* * Copyright (c) 2009-2012 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDIN ...
- Django Model之引用一个未定义的Model
Django Model的外键自关联
- Mybatis设置超时时间
Mybatis设置超时时间 mybatis如果不指定,默认超时时间是不做限制的,默认值为0.mybatis sql配置超时时间有两种方法: 1.全局配置 在mybatis配置文件的settings节点 ...
- JSON学习【转自慕课网】
视频网址 从慕课网视频里的PPT截图过来的,因为是用PHP讲的,而且后面讲的一般,所以只截取了前两节课的基础内容,其实只看一下第一张PPT就可以了.
- hadoop节点挂死的一次分析报表。
hadoop的一个节点unused了.然后重启启动hadoop的服务,仍有有一个hadoop的节点起不来.多次重启hadoop和杀进程之后,发现hadoop的master和slave节点上的状态在切换 ...