Redis的全局命令概念
一些 Redis的全局命令、数据结构和内部编码、单线程命令处理机制是非常必要的,它们可以为以后的学习奠定良好的基础,主要体现在两个方面:第一, Redis的命令有上百个,这完全是死记硬背的问题,但是如果你了解了 Redis的某些机制,你就会发现这些命令非常通用。其次, Redis并非万金油,某些数据结构和命令必须在特定的场景中使用,一旦使用不当就会给 Redis本身或应用程序带来致命的伤害。
全局命令:
Redis有5种数据结构,它们都是键值对中的值,还有一些常用的键命令。
1、查看所有键(keys *):
插入3对string类型的键值对:
node01:6379> set hello world
node01:6379> set java jedis
node01:6379> set python redis-py
Keys*命令将输出所有键:
node01:6379> keys *
1) "python"
2) "java"
3) "hello"
2、键总数(dbsize):
为 list类型插入键-值对(值由多个元素组成):
node01:6379> rpush mylist a b c d e f g
(integer) 7
这个 bsize命令返回当前数据库中的所有键。举例来说,当前数据库拥有 hello、 java、 python、 mylist四个键,因此 dbsize的结果为4:
node01:6379> dbsize
(integer) 4
在计算键的总数时, dbsize命令不会遍历所有键,而是直接获得 Redis内置的键的总数变量,因此 dbsize命令的时间复杂度为 O (1)。而且 keys命令将遍历所有键,因此它的时间复杂度为 O (n),如果 Redis有很多键,则不允许在线环境使用。
3、查看键是否存在(exists key):
键存在则返回1,不存在则返回0:
node01:6379> exists java
(integer) 1
node01:6379> exists not_exist_key
(integer) 0
4、删除键(del key [key ...]):
del命令是一条通用命令,不管该值是什么数据结构类型,都可以删除该值,例如下面分别删除 string类型的 key java和 list类型的 key mylist:
node01:6379> del java
(integer) 1
node01:6379> exists java
(integer) 0
node01:6379> del mylist
(integer) 1
node01:6379> exists mylist
(integer) 0
返回结果为成功删除键的个数,假定移除不存在的键会传回0。
node01:6379> del not_exist_key
(integer) 0
同时del命令可以支持删除多个键
node01:6379> set a 1
node01:6379> set b 2
node01:6379> set c 3
node01:6379> del a b c
(integer) 3
5、键过期(expire key seconds):
Redis支持对键添加过期时间,超过过期时间时将自动删除该键,例如为“hadoop键”设置10秒的过期时间
node01:6379> set hadoop world
node01:6379> expire hadoop 10
(integer) 1
ttl命令将返回该键的剩余有效期,返回值有3种:
1、比0大的整数:键的剩余有效期。
2、-1:键没有设置到期日期。
3、-2:键不存在。
ttl命令可用于观察键 hadoop的剩余过期时间:
node01:6379> ttl hadoop
(integer) 5
...
#还剩1秒
node01:6379> ttl hadoop
(integer) 1
#返回结果为-2,说明键hello已经被删除
node01:6379> ttl hadoop
(integer) -2
node01:6379> get hadoop
(nil)
6、键对应的数据结构类型(type key):
举例来说, hadoop键是 string类型,返回的结果是 string。关键字 mylist是列表类型,并返回一个list
node01:6379> set a b
node01:6379> type a
string
node01:6379> rpush mylist a b c d e f g
(integer) 7
node01:6379> type mylist
list
如果键不存在,则返回none:
node01:6379> type not_exsit_key
none
如果觉得对你有所帮助。记得收藏和关注呦!(每日更新各种大数据框架)
如需转载请注明出处(创作不易请见谅)
和巨婴程序猿一起成长。让自己变得更优秀
想了解更多精彩内容,快来关注跟着巨婴去逆袭
我最近一直在思考(大数据通俗讲解)的问题,你的看法是什么呢?关注我快说出来一起交流一下吧~
领取专属 10元无门槛券
私享最新 技术干货