Redis(2):常用命令详解
redis命令不区分大小写
通用命令:
1. 获得符合规则的键名列表:
keys pattern
其中pattern符合glob风格 ? (一个字符) * (任意个字符) [] (匹配其中的任意一个字符) \x (转义字符)
需要注意的是keys命令会遍历redis中的所有键,如果键比较多,会影响性能
keys * 会列出当前库中的所有键, 注意这个列出的不仅仅是string类型的,其他所有类型的key都包括(即使是hash类型的)。
127.0.0.1:6379> HSET hashkey key1 value1
(integer) 1
127.0.0.1:6379> keys *
1) "hashkey"
Keys
2. 判断一个键是否存在:
exists key
如果存在返回 (integer) 1 否则返回 (integer) 0
3. 删除键:
DEL key [key ...]
可以传入多个key ,其实可以配合 keys命令一起使用:
# 可以发现直接使用*,此时是没法删除已有的hashkey键
zyq@ubuntu:~/KiDe/Python/test$ redis-cli KEYS * | xargs redis-cli DEL
(integer) 0
zyq@ubuntu:~/KiDe/Python/test$ redis-cli KEYS "hash*" | xargs redis-cli DEL
(integer) 1 zyq@ubuntu:~/KiDe/Python/test$ redis-cli
127.0.0.1:6379> HSET hashkey key1 value1
(integer) 1
127.0.0.1:6379> exit
# 而使用 ` `包裹命令来执行的时候 * 就可以删除前面设置进去的hashkey键
zyq@ubuntu:~/KiDe/Python/test$ redis-cli DEL `redis-cli KEYS "*"`
(integer) 1
zyq@ubuntu:~/KiDe/Python/test$ redis-cli
127.0.0.1:6379> HSET hashkey key1 value1
(integer) 1
127.0.0.1:6379> exit
zyq@ubuntu:~/KiDe/Python/test$ redis-cli DEL `redis-cli KEYS "hash*"`
(integer) 1 # 需要注意的一点还有,第二种用 `` 实现的删除比第一种效率要高。
DEL
4. 获得键值的数据类型:
type key
如果key不存在 返回 none,否则返回key对应的值的类型
字符串类型:
SET key value
GET key
INCR key(如果存储的值不是数字或者增加之后超过范围,会报错) 相当于 value++,但是这个是原子操作
INCRBY key increment(该值可正可负)
DECR key 、 DECRBY key decrement
INCRBYFLOAT key increment (支持 incrbyfloat bar 5E+4)
APPEND key value (只是作为字符串追加)
STRLEN key (如果是中文,则返回中文编码后的字符串的长度 例如如果是utf-8编码的"你好" 则 strlen key 返回6)
MGET key [key ...] / MSET key value [key value ...] 可以同时设置或者得到对应的值
GETBIT key offset 得到特定位上的值 如果超过长度则为0
SETBIT key offsetValue 设置特定位上的值 如果超过长度前面不够的用0补齐,此时要考虑性能
BITCOUNT key [start] [end] 计算从开始到结束的位上1的个数
BITOP operation destkey key [key ...]
BITPOS key 0/1 [start] [end] 获得第一个是0或1的位置的下标
常见的命令使用情况如下:
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
# 对于非数字的增加,会抛出错误
127.0.0.1:6379> incr foo
(error) ERR value is not an integer or out of range
# 如果对于不存在key值加1,相当于新建一个key值为0,然后再往上加一
127.0.0.1:6379> incr newkey
(integer) 1
127.0.0.1:6379> get newkey
""
# float加的时候支持科学计数法
127.0.0.1:6379> INCRBYFLOAT newkey 1e+10
""
# 往字符串后面追加值
127.0.0.1:6379> append foo bar2
(integer) 7
127.0.0.1:6379> get foo
"barbar2"
# 同时设置多个字符串类型的值
127.0.0.1:6379> mset key1 你好 key2 我好 key3 大家好
OK
# 长度根据编码方式有关
127.0.0.1:6379> STRLEN key1
(integer) 6
127.0.0.1:6379> GETBIT key1 1
(integer) 1
127.0.0.1:6379> GETBIT key1 2
(integer) 1
127.0.0.1:6379> BITCOUNT key1
(integer) 27
String
散列类型:
类似于map ,常用命令如下:
HSET key field vlaue
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
HGETALL key
HEXISTS key field 判断field是否存在
HSETNX key field value 当字段不存在的时候进行赋值,原子操作
HINCRBY key field increment
HDEL key field [field ...]
HKEYS key
HVALS key
HLEN key
命令的使用情况如下:
127.0.0.1:6379> hset hashkey key1 value1
(integer) 1
127.0.0.1:6379> hget hashkey key1
"value1"
127.0.0.1:6379> hmset hashkey key2 value2 key3 value3 key4 value4
OK
127.0.0.1:6379> hmget hashkey key1 key2 key3 key4
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> hmget hashkey key1 key2 key3 key
1) "value1"
2) "value2"
3) "value3"
4) (nil)
127.0.0.1:6379> HGETALL hashkey
1) "key1"
2) "value1"
3) "key2"
4) "value2"
5) "key3"
6) "value3"
7) "key4"
8) "value4"
127.0.0.1:6379> HEXISTS hashkey key11
(integer) 0
127.0.0.1:6379> HSETNX hashkey key1 value11
(integer) 0
127.0.0.1:6379> HSETNX hashkey key11 value11
(integer) 1
127.0.0.1:6379> HINCRBY hashkey key5 11
(integer) 11
127.0.0.1:6379> HDEL hashkey key11 key5
(integer) 2
127.0.0.1:6379> hkeys hashkey
1) "key1"
2) "key2"
3) "key3"
4) "key4"
127.0.0.1:6379> HVALS hashkey
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> hlen hashkey
(integer) 4
Hash
列表类型:
LPUSH key value [value ... ]
RPUSH key value [value ... ]
LPOP key
RPOP key
LLEN key
LRANGE key start stop (此时获得的元素包含下标为stop的, 负数表示倒数)
LREM key count value 表示从列表中删除count个值为value的元素 (如果count为正数则从左边起删除、为负数表示从右边起删除)
LINDEX key value
LSET key index value
LTRIM key start end 只保留列表指定范围的元素(包括下标为end元素)。通常与lpush一起使用 lpush logs $newlog; ltrim logs 0 99
LINSERT key BEFORE|AFTER pivot value 在值为pivot的元素前或者后插入一个值为value的元素 如果没有找到值为pivot的元素,则返回-1 ,否则返回插入成功之后列表的总长度
RPOPLPUSH source destination 从source列表中rpop一个元素然后lpush到destination列表中去 (source和destination可以是同一个,desitnation如果不存在会创建一个) 该操作也是原子的
命令的使用情况如下:
127.0.0.1:6379> lpush list value1 value2
(integer) 2
127.0.0.1:6379> rpush list value3 value4
(integer) 4
127.0.0.1:6379> lpop list
"value2"
127.0.0.1:6379> rpop list
"value4"
127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "value1"
2) "value3"
127.0.0.1:6379> lrem key 1 value
(integer) 0
# 超过长度返回空
127.0.0.1:6379> LINDEX list 2
(nil)
127.0.0.1:6379> LINDEX list 1
"value3"
# 超过长度报错
127.0.0.1:6379> LSET list 3 value4
(error) ERR index out of range
127.0.0.1:6379> LSET list 2 value4
(error) ERR index out of range
127.0.0.1:6379> LSET list 1 value4
OK
# 如果不存在对应的元素,则设置失败返回-1
127.0.0.1:6379> LINSERT list BEFORE 1 value3
(integer) -1
127.0.0.1:6379> lrange list 0 -1
1) "value1"
2) "value4"
127.0.0.1:6379> LINSERT list BEFORE value4 value3
(integer) 3
127.0.0.1:6379> lpush list2 value21 value22
(integer) 2
127.0.0.1:6379> RPOPLPUSH list list2
"value4"
127.0.0.1:6379> lrange list 0 -1
1) "value1"
2) "value3"
127.0.0.1:6379> lrange list2 0 -1
1) "value4"
2) "value22"
3) "value21"
List
集合类型:
SADD key member [member ... ]
SREM key member [member ... ]
SMEMBERS key
SISMEMBER key member
SDIFF key [key ...] 取第一个集合和剩下的所有集合的差集
SINTER key [key ...] 取所有集合的交集
SUNION key [key ...] 取所有集合的并集
SCARD key 求长度
SDIFFSTORE destination key [key ...] 就是增加了一个存储的目标列表
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
SRANDMEMBER key [count] 随机获得集合中的元素,如果省略count则只获得一个,如果传入了count 那么如果count为正,则获得min(count, scard key)个不同的元素,如果count为负,则随机获得-count个元素,但是元素可能相同
SPOP key 随机弹出一个元素
命令的使用情况如下:
127.0.0.1:6379> SADD set member1 member2 member3
(integer) 3
127.0.0.1:6379> srem set member3 member4
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "member1"
2) "member2"
127.0.0.1:6379> SISMEMBER set member3
(integer) 0
127.0.0.1:6379> SADD set2 member2 member3 member4
(integer) 3
127.0.0.1:6379> SDIFF set set2
1) "member1"
127.0.0.1:6379> SINTER set set2
1) "member2"
127.0.0.1:6379> SUNION set set2
1) "member4"
2) "member1"
3) "member3"
4) "member2"
127.0.0.1:6379> SCARD set
(integer) 2
127.0.0.1:6379> SDIFFSTORE set3 set set2
(integer) 1
127.0.0.1:6379> SMEMBERS set3
1) "member1"
127.0.0.1:6379> SRANDMEMBER set2
"member3"
# 为正的时候最多将set中所有元素返回
127.0.0.1:6379> SRANDMEMBER set2 5
1) "member4"
2) "member3"
3) "member2"
# 为负的时候返回绝对值个数的元素,并且可能相同
127.0.0.1:6379> SRANDMEMBER set2 -5
1) "member3"
2) "member4"
3) "member2"
4) "member2"
5) "member3"
127.0.0.1:6379> SPOP set2
"member2"
127.0.0.1:6379> SMEMBERS set2
1) "member4"
2) "member3"
Set
有序集合类型:
默认按照score升序排列
ZADD key score member [score member ...]
ZSCORE key member
ZRANGE key start stop [withscores] 其中的start stop表示下标
ZREVRANGE key start stop [withscores]
ZRANGEBYSCORE key min max [withscores] [limit offset count] 获得指定分数范围的元素 默认是包含min和max 如果不想包含某一个界,请在值前加 ( eg : zrangebyscore zset1 70 (100 withscores
且 min和max 可以使用 +inf 或者 -inf 表示正无穷大和负无穷大 后面的limit offset count 相当于sql中的分页查询
ZREVRANGEBYSCORE key max min [withscores] [limit offset count] 需要注意此时 max和min的位置调换了
ZINCRBY key increment member 给特定元素增加分数
ZCARD key
ZCOUNT key min max 这里是统计在min和max之间的元素个数
ZREM key member [member ...]
ZREMRANGEBYRANK key start stop 删除固定下标范围的元素
ZREMRANGEBYSCORE key min max 删除分数范围内的元素
ZRANK key member 得到对应元素的下标,如果不存在返回 nil
ZREVRANK key member
ZINTERSTORE destination numkeys key [key ...] [weights weight [weight...]] [AGGREGATE SUM|MIN|MAX] 和sinterstore差不多,区别在于weights参数指定权重,指定之后对应的集合中的值要乘以权重
并且 AGGREGATE 参数指定新集合的元素值来源方式,默认为sum,即为两者之和 numkeys指定要处理的集合个数
同理 有 ZUNIONSTORE 这里不再赘述 (PS: 没有ZDIFFSTORE)
命令的使用情况如下:
127.0.0.1:6379> ZADD key 1 member1 2 member2 3 member3 4 member3
(integer) 3
127.0.0.1:6379> ZADD key 1 member1 2 member2 3 member3 4 member4
(integer) 1
127.0.0.1:6379> ZSCORE key member1
""
127.0.0.1:6379> ZRANGE key 0 -1
1) "member1"
2) "member2"
3) "member3"
4) "member4"
127.0.0.1:6379> zrange key 1 2
1) "member2"
2) "member3"
127.0.0.1:6379> ZREVRANGE key 1 2 WITHSCORES
1) "member3"
2) ""
3) "member2"
4) ""
127.0.0.1:6379> ZRANGEBYSCORE key 1 3 WITHSCORES LIMIT 0 2
1) "member1"
2) ""
3) "member2"
4) ""
# 注意反向的时候min和max的下标也要换过来
127.0.0.1:6379> ZREVRANGEBYSCORE key 1 3 WITHSCORES LIMIT 0 2
(empty list or set)
127.0.0.1:6379> ZREVRANGEBYSCORE key 3 1 WITHSCORES LIMIT 0 2
1) "member3"
2) ""
3) "member2"
4) ""
127.0.0.1:6379> ZINCRBY key 2 member3
""
127.0.0.1:6379> ZCARD key
(integer) 4
127.0.0.1:6379> ZCOUNT key 3 1
(integer) 0
127.0.0.1:6379> zcount key 1 3
(integer) 2
127.0.0.1:6379> ZREM key member1
(integer) 1
127.0.0.1:6379> ZREMRANGEBYRANK key 0 0
(integer) 1
127.0.0.1:6379> zrange key 0 -1
1) "member4"
2) "member3"
127.0.0.1:6379> ZREMRANGEBYSCORE key 4 4
(integer) 1
127.0.0.1:6379> zrange key 0 -1
1) "member3"
127.0.0.1:6379> zrange key 0 -1 WITHSCORES
1) "member3"
2) ""
127.0.0.1:6379> zadd zkey2 1 member3 2 member4
(integer) 2
127.0.0.1:6379> ZINTERSTORE key3 2 key zkey2
(integer) 1
127.0.0.1:6379> zrange key3 0 -1 WITHSCORES
1) "member3"
2) ""
127.0.0.1:6379> ZUNIONSTORE key3 2 key zkey2 AGGREGATE MAX
(integer) 2
127.0.0.1:6379> zrange key3 0 -1 WITHSCORES
1) "member4"
2) ""
3) "member3"
4) ""
ZSet
Redis(2):常用命令详解的更多相关文章
- hbase shell基础和常用命令详解(转)
HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...
- samtools常用命令详解(转)
转自:samtools常用命令详解 samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml samtools是一个用于操作sam和ba ...
- NoSQL之Redis高级实用命令详解--安全和主从复制
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...
- cisco常用命令详解
cisco常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用命令用法展示 1.命令行模式的来回切换 yinzhengjie>enable #从用户模式切换到 ...
- H3C常用命令详解
H3C常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.关闭后台日志输出 <yinzhengjie>sys [yinzhengjie]undo info- ...
- hbase shell基础和常用命令详解
HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服 ...
- Tmux 的常用命令详解
Tmux 的常用命令详解 常用命令: tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-session -t 数字 #选择tmux C-b c ...
- Hexo系列(三) 常用命令详解
Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...
- 【转载】windbg 常用命令详解
windbg 常用命令详解 https://blog.csdn.net/chenyujing1234/article/details/7743460 vertarget 显示当前进程的大致信息 lmv ...
随机推荐
- WordPress插件Social Warfare<=3.5.2 无需登录RCE漏洞
该漏洞只存在于Social Warfare插进的3.5.0.3.5.1和3.5.2版本中,其他版本不存在. 2019年3月21日插件作者紧急发布了3.5.3版本以修复高危的RCE漏洞,在<=3. ...
- 开发一个小的php扩展
今天试了一下在php添加扩展,看了挺多资料,细节上不一致,其他大体是差不多的. 我们来开发一个叫ccvita_string的函数,他的主要作用是返回一段字符,对应的php代码可能如此: functio ...
- 深入了解java虚拟机(JVM) 第七章 内存分配策略
理解了jvm内存分配策略不仅是程序性能调优的重要知识,还能够给养成自己一种良好的代码思路,一个程序的代码差异往往都是在这里体现出来的. 一.对象优先分配到Eden区域 一般来说,新创建的对象都会直 ...
- docker安装配置
########################################## #docker安装配置 #环境centos7 #配置docker阿里源 echo '#Docker [docker ...
- Code Chef IMPO(计算几何+扫描线+积分)
题面 传送门 前置芝士 扫描线,积分求面积 题解 我怎么老是忘了积分可以求面积-- 首先,这两个投影的最小的\(x\)坐标和最大的\(x\)坐标必须相等,否则肯定无解 我们考虑一种方法,枚举\(x\) ...
- 抓包工具Fiddler使用教程
一.基本原理 Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888 二.Fiddler抓取https设置 1.启动Fiddler,打开菜单栏中的 Too ...
- 干货 | 精选《SQL注入、渗透、反病毒》学习总结集锦给你们~
学到手的都是本事,如果觉得对你有帮助也欢迎分享给身边的基友们吧! 分享干货,手留余香哦~ 本次“开学季拜师活动”的徒弟们在师父的精心指导下,在短短5天内得到了迅速地成长,以前或当时遇到的问题都能够柳暗 ...
- Java8新特性学习笔记(一) Lambda表达式
没有用Lambda表达式的写法: Comparator<Transaction> byYear = new Comparator<Transaction>() { @Overr ...
- [Swift实际操作]七、常见概念-(12)使用DispatchGroup(调度组)管理线程数组
本文将为你演示调度组的使用,使用调度组可以将多个线程中的人物进行组合管理,可以设置当多个相同层次的任务完成之后,再执行另一项任务. 首先导入需要使用的界面工具框架 import UIKit 在控制台输 ...
- jmeter我们必须搞清楚的问题
我们从以下几个点来看jmeter: 1.jmeter是什么? 2.jmeter为什么我们要使用jmeter?他可以帮我们解决那些事情? 3.怎样使用jmeter做这些事情? 4.我们在什么时候会使用j ...