2.1 预备
了解redis的一些全局命令、数据结构和内部编码、单线程命令处理机制是十分必要的,它们能为后面内容的学习打下一个好的基础,主要体现在两个方面:
1、redis的命令有成百上千个,死记硬背困难,但是理解一下redis的一些机制,会发现这些命令有很强的的通用性。
2、有些数据和命令必须在特定场景下使用,一旦使用不当可能对Redis本身或者应用本身造成致命的伤害
2.1.1 全局命令
Redis有5种数据结构,它们是键值对中的值,对于键来说有一些通用的命令。
1、查看所有键
keys *
插入字符串类型如下:
127.0.0.1:6379> set hello world
ok
127.0.0.1:6379> set java jedis
ok
127.0.0.1:6379> set python redis-py
keys * 命令将会输出所有的键
127.0.0.1:6379> keys *
1)"pathon"
2) "java"
3) "hello"
2.键总数
dbsize 命令返回当前数据库中的键的总数。
插入列表类型的键值对(值是多个元素组成)
127.0.0.1:6379>rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379> dbsize
(integer) 4
dbsize 命令在计算键总数时,不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1),而keys 命令会遍历所有键,所以它的时间复杂度是O(n),当Redis保存了大量的键时,线上环境禁止使用。
3、检查键是否存在
exists key
如果键存在返回1,不存在则返回0
例如
127.0.0.1:6379>exists key
(integer) 0
4、删除键
del key [key ...]
del是一个通用命令,无论值是什么数据结构,del命令都可将其删除
127.0.0.1:6379>del java
(integer) 1
127.0.0.1:6379>del mylist
(integer) 1
5、键过期
expire key seconds
Redis支持对键添加过期时间,当超过过期时间,会自动删除键,例如为键hello设置了10秒的过期时间:
127.0.0.1:6379>set hello world
ok
127.0.0.1:6379>expire hello 10
(integer) 1
ttl命令会返回剩余过期时间,他有3中返回值
1)大于等于0的整数:键剩余的过期时间。
2)-1:键没设置过期时间
3)-2:键不存在
可以通过ttl命令观察键hello的剩余过期时间:
#还剩7秒
127.0.0.1:6379> ttl hello
(integer) 7
...
6.键的数据结构类型
type key
127.0.0.1:6379> set a b
ok
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379>type a
string
127.0.0.1:6379> mylist
list
如果键不存在。则返回none
127.0.0.1:6379> type not_exist_key
none
注:本文内容来自《redis开发与运维》